diff options
author | Mathias Agopian <mathias@google.com> | 2018-02-20 18:32:22 -0800 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2018-02-28 22:23:54 +0000 |
commit | 3e88ed82e58acd93419f6dc844b8139208cc5f1e (patch) | |
tree | 61becb7f181a9842f4e0a2862ffdd6dad1725d84 /media/jni/android_media_ImageReader.cpp | |
parent | d5a2e636c0147fd71572f43d5cf73c7ba16a6e64 (diff) |
NEW API: Add Image.getHardwareBuffer()
This mirror the corresponding NDK API. For some
reason this was missing from the java version
of Image.
Bug: 73784759
Test: manual
Change-Id: Iafa6dedda809fe38ea4453d9873d1ba886f88481
Diffstat (limited to 'media/jni/android_media_ImageReader.cpp')
-rw-r--r-- | media/jni/android_media_ImageReader.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/media/jni/android_media_ImageReader.cpp b/media/jni/android_media_ImageReader.cpp index 885bf03fc994..f5311764e565 100644 --- a/media/jni/android_media_ImageReader.cpp +++ b/media/jni/android_media_ImageReader.cpp @@ -33,11 +33,14 @@ #include <android_runtime/android_hardware_HardwareBuffer.h> #include <grallocusage/GrallocUsageConversion.h> +#include <private/android/AHardwareBufferHelpers.h> + #include <jni.h> #include <nativehelper/JNIHelp.h> #include <stdint.h> #include <inttypes.h> +#include <android/hardware_buffer_jni.h> #define ANDROID_MEDIA_IMAGEREADER_CTX_JNI_ID "mNativeContext" #define ANDROID_MEDIA_SURFACEIMAGE_BUFFER_JNI_ID "mNativeBuffer" @@ -797,6 +800,14 @@ static jint Image_getFormat(JNIEnv* env, jobject thiz, jint readerFormat) } } +static jobject Image_getHardwareBuffer(JNIEnv* env, jobject thiz) { + BufferItem* buffer = Image_getBufferItem(env, thiz); + AHardwareBuffer* b = AHardwareBuffer_from_GraphicBuffer(buffer->mGraphicBuffer.get()); + // don't user the public AHardwareBuffer_toHardwareBuffer() because this would force us + // to link against libandroid.so + return android_hardware_HardwareBuffer_createFromAHardwareBuffer(env, b); +} + } // extern "C" // ---------------------------------------------------------------------------- @@ -814,10 +825,12 @@ static const JNINativeMethod gImageReaderMethods[] = { static const JNINativeMethod gImageMethods[] = { {"nativeCreatePlanes", "(II)[Landroid/media/ImageReader$SurfaceImage$SurfacePlane;", - (void*)Image_createSurfacePlanes }, - {"nativeGetWidth", "()I", (void*)Image_getWidth }, - {"nativeGetHeight", "()I", (void*)Image_getHeight }, - {"nativeGetFormat", "(I)I", (void*)Image_getFormat }, + (void*)Image_createSurfacePlanes }, + {"nativeGetWidth", "()I", (void*)Image_getWidth }, + {"nativeGetHeight", "()I", (void*)Image_getHeight }, + {"nativeGetFormat", "(I)I", (void*)Image_getFormat }, + {"nativeGetHardwareBuffer", "()Landroid/hardware/HardwareBuffer;", + (void*)Image_getHardwareBuffer }, }; int register_android_media_ImageReader(JNIEnv *env) { |