summaryrefslogtreecommitdiffstats
path: root/core/jni
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2013-08-27 12:09:04 -0700
committerEino-Ville Talvala <etalvala@google.com>2013-09-11 13:18:10 -0700
commit70c2207c34cf0e6b3b383b1b1500ff5385aa51a6 (patch)
tree48c81e88d69e45be7ffc614f3d952d1f4e08de6c /core/jni
parent4af73c2153747d0624ccc75dfa001cb91982957f (diff)
downloadframeworks_base-70c2207c34cf0e6b3b383b1b1500ff5385aa51a6.zip
frameworks_base-70c2207c34cf0e6b3b383b1b1500ff5385aa51a6.tar.gz
frameworks_base-70c2207c34cf0e6b3b383b1b1500ff5385aa51a6.tar.bz2
Camera2: Immutable metadata
Make all camera metadata immutable once created; requests are created using CameraRequest.Builder. - Separate CameraMetadata implementation from interface - Implement deep copying of metadata - Requests/results/properties have-a native implementation Bug: 10360518 Change-Id: Ia6300c237219d39f70c63156fa9ca666d951a36e
Diffstat (limited to 'core/jni')
-rw-r--r--core/jni/android_hardware_camera2_CameraMetadata.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/core/jni/android_hardware_camera2_CameraMetadata.cpp b/core/jni/android_hardware_camera2_CameraMetadata.cpp
index 852c4d4..3c7da1e 100644
--- a/core/jni/android_hardware_camera2_CameraMetadata.cpp
+++ b/core/jni/android_hardware_camera2_CameraMetadata.cpp
@@ -38,7 +38,7 @@
#endif
// fully-qualified class name
-#define CAMERA_METADATA_CLASS_NAME "android/hardware/camera2/CameraMetadata"
+#define CAMERA_METADATA_CLASS_NAME "android/hardware/camera2/impl/CameraMetadataNative"
using namespace android;
@@ -152,6 +152,21 @@ static jlong CameraMetadata_allocate(JNIEnv *env, jobject thiz) {
return reinterpret_cast<jlong>(new CameraMetadata());
}
+static jlong CameraMetadata_allocateCopy(JNIEnv *env, jobject thiz,
+ jobject other) {
+ ALOGV("%s", __FUNCTION__);
+
+ CameraMetadata* otherMetadata =
+ CameraMetadata_getPointerThrow(env, other, "other");
+
+ // In case of exception, return
+ if (otherMetadata == NULL) return NULL;
+
+ // Clone native metadata and return new pointer
+ return reinterpret_cast<jlong>(new CameraMetadata(*otherMetadata));
+}
+
+
static jboolean CameraMetadata_isEmpty(JNIEnv *env, jobject thiz) {
ALOGV("%s", __FUNCTION__);
@@ -361,6 +376,9 @@ static JNINativeMethod gCameraMetadataMethods[] = {
{ "nativeAllocate",
"()J",
(void*)CameraMetadata_allocate },
+ { "nativeAllocateCopy",
+ "(L" CAMERA_METADATA_CLASS_NAME ";)J",
+ (void *)CameraMetadata_allocateCopy },
{ "nativeIsEmpty",
"()Z",
(void*)CameraMetadata_isEmpty },