diff options
author | Ruben Brunk <rubenbrunk@google.com> | 2014-05-09 19:58:49 -0700 |
---|---|---|
committer | Ruben Brunk <rubenbrunk@google.com> | 2014-05-21 16:37:59 -0700 |
commit | feb50af361e4305a25758966b6b5df2738c00259 (patch) | |
tree | b20b9bcaf34685467c1317d0835242cd7c8135c9 /core/jni/android_hardware_Camera.cpp | |
parent | 2a2dace66500d6057b9dc87bbe9597d7302ec914 (diff) | |
download | frameworks_base-feb50af361e4305a25758966b6b5df2738c00259.zip frameworks_base-feb50af361e4305a25758966b6b5df2738c00259.tar.gz frameworks_base-feb50af361e4305a25758966b6b5df2738c00259.tar.bz2 |
camera2: Add HAL1 compatibility shim skeleton.
This adds basic support for running the Camera2 API on a device running
a camera HAL version lower than CAMERA_MODULE_API_VERSION_2_0.
This CL includes support for:
- N-way preview output streams
- N-way jpeg output streams
- CameraDevice emulation at the binder interface
- Basic camera metadata querying in the CameraManager
Bug: 15117269
Bug: 15116722
Change-Id: I8322955034c91f34bb348d4b28c2b774dbef38f6
Diffstat (limited to 'core/jni/android_hardware_Camera.cpp')
-rw-r--r-- | core/jni/android_hardware_Camera.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/core/jni/android_hardware_Camera.cpp b/core/jni/android_hardware_Camera.cpp index 307293f..3a53331 100644 --- a/core/jni/android_hardware_Camera.cpp +++ b/core/jni/android_hardware_Camera.cpp @@ -27,6 +27,7 @@ #include <cutils/properties.h> #include <utils/Vector.h> +#include <utils/Errors.h> #include <gui/GLConsumer.h> #include <gui/Surface.h> @@ -464,7 +465,7 @@ static void android_hardware_Camera_getCameraInfo(JNIEnv *env, jobject thiz, } // connect to camera service -static void android_hardware_Camera_native_setup(JNIEnv *env, jobject thiz, +static jint android_hardware_Camera_native_setup(JNIEnv *env, jobject thiz, jobject weak_this, jint cameraId, jstring clientPackageName) { // Convert jstring to String16 @@ -477,20 +478,19 @@ static void android_hardware_Camera_native_setup(JNIEnv *env, jobject thiz, Camera::USE_CALLING_UID); if (camera == NULL) { - jniThrowRuntimeException(env, "Fail to connect to camera service"); - return; + return -EACCES; } // make sure camera hardware is alive if (camera->getStatus() != NO_ERROR) { - jniThrowRuntimeException(env, "Camera initialization failed"); - return; + return NO_INIT; } jclass clazz = env->GetObjectClass(thiz); if (clazz == NULL) { + // This should never happen jniThrowRuntimeException(env, "Can't find android/hardware/Camera"); - return; + return INVALID_OPERATION; } // We use a weak reference so the Camera object can be garbage collected. @@ -501,6 +501,7 @@ static void android_hardware_Camera_native_setup(JNIEnv *env, jobject thiz, // save context in opaque field env->SetLongField(thiz, fields.context, (jlong)context.get()); + return NO_ERROR; } // disconnect from camera service @@ -538,9 +539,9 @@ static void android_hardware_Camera_release(JNIEnv *env, jobject thiz) } } -static void android_hardware_Camera_setPreviewDisplay(JNIEnv *env, jobject thiz, jobject jSurface) +static void android_hardware_Camera_setPreviewSurface(JNIEnv *env, jobject thiz, jobject jSurface) { - ALOGV("setPreviewDisplay"); + ALOGV("setPreviewSurface"); sp<Camera> camera = get_native_camera(env, thiz, NULL); if (camera == 0) return; @@ -890,14 +891,14 @@ static JNINativeMethod camMethods[] = { "(ILandroid/hardware/Camera$CameraInfo;)V", (void*)android_hardware_Camera_getCameraInfo }, { "native_setup", - "(Ljava/lang/Object;ILjava/lang/String;)V", + "(Ljava/lang/Object;ILjava/lang/String;)I", (void*)android_hardware_Camera_native_setup }, { "native_release", "()V", (void*)android_hardware_Camera_release }, - { "setPreviewDisplay", + { "setPreviewSurface", "(Landroid/view/Surface;)V", - (void *)android_hardware_Camera_setPreviewDisplay }, + (void *)android_hardware_Camera_setPreviewSurface }, { "setPreviewTexture", "(Landroid/graphics/SurfaceTexture;)V", (void *)android_hardware_Camera_setPreviewTexture }, |