diff options
Diffstat (limited to 'native')
-rw-r--r-- | native/android/Android.bp | 3 | ||||
-rw-r--r-- | native/android/surface_texture.cpp | 70 | ||||
-rw-r--r-- | native/graphics/jni/imagedecoder.cpp | 16 | ||||
-rw-r--r-- | native/graphics/jni/libjnigraphics.map.txt | 1 |
4 files changed, 19 insertions, 71 deletions
diff --git a/native/android/Android.bp b/native/android/Android.bp index 9d93c9b7b605..0c6f507787d9 100644 --- a/native/android/Android.bp +++ b/native/android/Android.bp @@ -47,7 +47,6 @@ cc_library_shared { "sensor.cpp", "sharedmem.cpp", "storage_manager.cpp", - "surface_texture.cpp", "surface_control.cpp", "system_fonts.cpp", "trace.cpp", @@ -70,6 +69,8 @@ cc_library_shared { "libnetd_client", "libhwui", "libxml2", + "libEGL", + "libGLESv2", "android.hardware.configstore@1.0", "android.hardware.configstore-utils", ], diff --git a/native/android/surface_texture.cpp b/native/android/surface_texture.cpp deleted file mode 100644 index 3049ec16e2d4..000000000000 --- a/native/android/surface_texture.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <android/surface_texture.h> -#include <android/surface_texture_jni.h> - -#define LOG_TAG "ASurfaceTexture" - -#include <utils/Log.h> - -#include <gui/Surface.h> - -#include <gui/surfacetexture/surface_texture_platform.h> - -#include <android_runtime/android_graphics_SurfaceTexture.h> - -using namespace android; - -ASurfaceTexture* ASurfaceTexture_fromSurfaceTexture(JNIEnv* env, jobject surfacetexture) { - if (!surfacetexture || !android_SurfaceTexture_isInstanceOf(env, surfacetexture)) { - return nullptr; - } - auto consumer = SurfaceTexture_getSurfaceTexture(env, surfacetexture); - auto producer = SurfaceTexture_getProducer(env, surfacetexture); - return ASurfaceTexture_create(consumer, producer); -} - -ANativeWindow* ASurfaceTexture_acquireANativeWindow(ASurfaceTexture* st) { - sp<Surface> surface = new Surface(st->producer); - ANativeWindow* win(surface.get()); - ANativeWindow_acquire(win); - return win; -} - -void ASurfaceTexture_release(ASurfaceTexture* st) { - delete st; -} - -int ASurfaceTexture_attachToGLContext(ASurfaceTexture* st, uint32_t tex) { - return st->consumer->attachToContext(tex); -} - -int ASurfaceTexture_detachFromGLContext(ASurfaceTexture* st) { - return st->consumer->detachFromContext(); -} - -int ASurfaceTexture_updateTexImage(ASurfaceTexture* st) { - return st->consumer->updateTexImage(); -} - -void ASurfaceTexture_getTransformMatrix(ASurfaceTexture* st, float mtx[16]) { - st->consumer->getTransformMatrix(mtx); -} - -int64_t ASurfaceTexture_getTimestamp(ASurfaceTexture* st) { - return st->consumer->getTimestamp(); -} diff --git a/native/graphics/jni/imagedecoder.cpp b/native/graphics/jni/imagedecoder.cpp index 51439672d404..bd5914a55042 100644 --- a/native/graphics/jni/imagedecoder.cpp +++ b/native/graphics/jni/imagedecoder.cpp @@ -131,6 +131,10 @@ static ImageDecoder* toDecoder(AImageDecoder* d) { return reinterpret_cast<ImageDecoder*>(d); } +static const ImageDecoder* toDecoder(const AImageDecoder* d) { + return reinterpret_cast<const ImageDecoder*>(d); +} + // Note: This differs from the version in android_bitmap.cpp in that this // version returns kGray_8_SkColorType for ANDROID_BITMAP_FORMAT_A_8. SkCodec // allows decoding single channel images to gray, which Android then treats @@ -258,6 +262,18 @@ int AImageDecoder_setTargetSize(AImageDecoder* decoder, int width, int height) { ? ANDROID_IMAGE_DECODER_SUCCESS : ANDROID_IMAGE_DECODER_INVALID_SCALE; } +int AImageDecoder_computeSampledSize(const AImageDecoder* decoder, int sampleSize, + int* width, int* height) { + if (!decoder || !width || !height || sampleSize < 1) { + return ANDROID_IMAGE_DECODER_BAD_PARAMETER; + } + + SkISize size = toDecoder(decoder)->mCodec->getSampledDimensions(sampleSize); + *width = size.width(); + *height = size.height(); + return ANDROID_IMAGE_DECODER_SUCCESS; +} + int AImageDecoder_setCrop(AImageDecoder* decoder, ARect crop) { if (!decoder) { return ANDROID_IMAGE_DECODER_BAD_PARAMETER; diff --git a/native/graphics/jni/libjnigraphics.map.txt b/native/graphics/jni/libjnigraphics.map.txt index 2e6c966b9d6b..31a1b9c18ee8 100644 --- a/native/graphics/jni/libjnigraphics.map.txt +++ b/native/graphics/jni/libjnigraphics.map.txt @@ -10,6 +10,7 @@ LIBJNIGRAPHICS { AImageDecoder_getMinimumStride; # introduced=30 AImageDecoder_decodeImage; # introduced=30 AImageDecoder_setTargetSize; # introduced=30 + AImageDecoder_computeSampledSize; # introduced=30 AImageDecoder_setCrop; # introduced=30 AImageDecoderHeaderInfo_getWidth; # introduced=30 AImageDecoderHeaderInfo_getHeight; # introduced=30 |