summaryrefslogtreecommitdiff
path: root/media/jni/android_media_ImageReader.cpp
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2018-02-20 18:32:22 -0800
committerMathias Agopian <mathias@google.com>2018-02-28 22:23:54 +0000
commit3e88ed82e58acd93419f6dc844b8139208cc5f1e (patch)
tree61becb7f181a9842f4e0a2862ffdd6dad1725d84 /media/jni/android_media_ImageReader.cpp
parentd5a2e636c0147fd71572f43d5cf73c7ba16a6e64 (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.cpp21
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) {