| /* | |
| * Copyright (C) 2012, Collabora Ltd. | |
| * Copyright (C) 2012, Cisco Systems, Inc. | |
| * Author: Youness Alaoui <youness.alaoui@collabora.co.uk> | |
| * | |
| * Copyright (C) 2015, Collabora Ltd. | |
| * Author: Justin Kim <justin.kim@collabora.com> | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation | |
| * version 2.1 of the License. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
| * | |
| */ | |
| #ifdef HAVE_CONFIG_H | |
| #include "config.h" | |
| #endif | |
| #include "gstjniutils.h" | |
| #include "gst-android-hardware-camera.h" | |
| GST_DEBUG_CATEGORY_STATIC (ahc_debug); | |
| #define GST_CAT_DEFAULT ahc_debug | |
| static struct | |
| { | |
| jclass klass; | |
| jmethodID addCallbackBuffer; | |
| jmethodID autoFocus; | |
| jmethodID cancelAutoFocus; | |
| jmethodID getCameraInfo; | |
| jmethodID getNumberOfCameras; | |
| jmethodID getParameters; | |
| jmethodID lock; | |
| jmethodID open; | |
| jmethodID reconnect; | |
| jmethodID release; | |
| jmethodID setErrorCallback; | |
| jmethodID setParameters; | |
| jmethodID setPreviewCallbackWithBuffer; | |
| jmethodID setPreviewTexture; | |
| jmethodID startPreview; | |
| jmethodID startSmoothZoom; | |
| jmethodID stopPreview; | |
| jmethodID stopSmoothZoom; | |
| jmethodID unlock; | |
| } android_hardware_camera = { | |
| 0 | |
| }; | |
| static struct | |
| { | |
| jclass klass; | |
| jmethodID constructor; | |
| jfieldID facing; | |
| jfieldID orientation; | |
| jint CAMERA_FACING_BACK; | |
| jint CAMERA_FACING_FRONT; | |
| } android_hardware_camera_camerainfo = { | |
| 0 | |
| }; | |
| gint CameraInfo_CAMERA_FACING_BACK; | |
| gint CameraInfo_CAMERA_FACING_FRONT; | |
| static struct | |
| { | |
| jclass klass; | |
| jfieldID width; | |
| jfieldID height; | |
| } android_hardware_camera_size = { | |
| 0 | |
| }; | |
| static struct | |
| { | |
| jclass klass; | |
| jmethodID flatten; | |
| jmethodID getAntibanding; | |
| jmethodID getColorEffect; | |
| jmethodID getExposureCompensation; | |
| jmethodID getExposureCompensationStep; | |
| jmethodID getFlashMode; | |
| jmethodID getFocalLength; | |
| jmethodID getFocusMode; | |
| jmethodID getHorizontalViewAngle; | |
| jmethodID getMaxExposureCompensation; | |
| jmethodID getMaxZoom; | |
| jmethodID getMinExposureCompensation; | |
| jmethodID getPreviewFormat; | |
| jmethodID getPreviewFpsRange; | |
| jmethodID getPreviewSize; | |
| jmethodID getSceneMode; | |
| jmethodID getSupportedAntibanding; | |
| jmethodID getSupportedColorEffects; | |
| jmethodID getSupportedFlashModes; | |
| jmethodID getSupportedFocusModes; | |
| jmethodID getSupportedPreviewFormats; | |
| jmethodID getSupportedPreviewFpsRange; | |
| jmethodID getSupportedPreviewSizes; | |
| jmethodID getSupportedSceneModes; | |
| jmethodID getSupportedWhiteBalance; | |
| jmethodID getVerticalViewAngle; | |
| jmethodID getVideoStabilization; | |
| jmethodID getWhiteBalance; | |
| jmethodID getZoom; | |
| jmethodID getZoomRatios; | |
| jmethodID isSmoothZoomSupported; | |
| jmethodID isVideoStabilizationSupported; | |
| jmethodID isZoomSupported; | |
| jmethodID setAntibanding; | |
| jmethodID setColorEffect; | |
| jmethodID setExposureCompensation; | |
| jmethodID setFlashMode; | |
| jmethodID setFocusMode; | |
| jmethodID setPreviewFormat; | |
| jmethodID setPreviewFpsRange; | |
| jmethodID setPreviewSize; | |
| jmethodID setSceneMode; | |
| jmethodID setVideoStabilization; | |
| jmethodID setWhiteBalance; | |
| jmethodID setZoom; | |
| jmethodID unflatten; | |
| jstring WHITE_BALANCE_AUTO; | |
| jstring WHITE_BALANCE_INCANDESCENT; | |
| jstring WHITE_BALANCE_FLUORESCENT; | |
| jstring WHITE_BALANCE_WARM_FLUORESCENT; | |
| jstring WHITE_BALANCE_DAYLIGHT; | |
| jstring WHITE_BALANCE_CLOUDY_DAYLIGHT; | |
| jstring WHITE_BALANCE_TWILIGHT; | |
| jstring WHITE_BALANCE_SHADE; | |
| jstring EFFECT_NONE; | |
| jstring EFFECT_MONO; | |
| jstring EFFECT_NEGATIVE; | |
| jstring EFFECT_SOLARIZE; | |
| jstring EFFECT_SEPIA; | |
| jstring EFFECT_POSTERIZE; | |
| jstring EFFECT_WHITEBOARD; | |
| jstring EFFECT_BLACKBOARD; | |
| jstring EFFECT_AQUA; | |
| jstring EFFECT_EMBOSS; | |
| jstring EFFECT_SKETCH; | |
| jstring EFFECT_NEON; | |
| jstring ANTIBANDING_AUTO; | |
| jstring ANTIBANDING_50HZ; | |
| jstring ANTIBANDING_60HZ; | |
| jstring ANTIBANDING_OFF; | |
| jstring FLASH_MODE_OFF; | |
| jstring FLASH_MODE_AUTO; | |
| jstring FLASH_MODE_ON; | |
| jstring FLASH_MODE_RED_EYE; | |
| jstring FLASH_MODE_TORCH; | |
| jstring SCENE_MODE_AUTO; | |
| jstring SCENE_MODE_ACTION; | |
| jstring SCENE_MODE_PORTRAIT; | |
| jstring SCENE_MODE_LANDSCAPE; | |
| jstring SCENE_MODE_NIGHT; | |
| jstring SCENE_MODE_NIGHT_PORTRAIT; | |
| jstring SCENE_MODE_THEATRE; | |
| jstring SCENE_MODE_BEACH; | |
| jstring SCENE_MODE_SNOW; | |
| jstring SCENE_MODE_SUNSET; | |
| jstring SCENE_MODE_STEADYPHOTO; | |
| jstring SCENE_MODE_FIREWORKS; | |
| jstring SCENE_MODE_SPORTS; | |
| jstring SCENE_MODE_PARTY; | |
| jstring SCENE_MODE_CANDLELIGHT; | |
| jstring SCENE_MODE_BARCODE; | |
| jstring SCENE_MODE_BACKLIGHT; | |
| jstring SCENE_MODE_FLOWERS; | |
| jstring SCENE_MODE_AR; | |
| jstring SCENE_MODE_HDR; | |
| jstring FOCUS_MODE_AUTO; | |
| jstring FOCUS_MODE_INFINITY; | |
| jstring FOCUS_MODE_MACRO; | |
| jstring FOCUS_MODE_FIXED; | |
| jstring FOCUS_MODE_EDOF; | |
| jstring FOCUS_MODE_CONTINUOUS_VIDEO; | |
| jstring FOCUS_MODE_CONTINUOUS_PICTURE; | |
| } android_hardware_camera_parameters = { | |
| 0 | |
| }; | |
| const gchar *Parameters_WHITE_BALANCE_AUTO; | |
| const gchar *Parameters_WHITE_BALANCE_INCANDESCENT; | |
| const gchar *Parameters_WHITE_BALANCE_FLUORESCENT; | |
| const gchar *Parameters_WHITE_BALANCE_WARM_FLUORESCENT; | |
| const gchar *Parameters_WHITE_BALANCE_DAYLIGHT; | |
| const gchar *Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT; | |
| const gchar *Parameters_WHITE_BALANCE_TWILIGHT; | |
| const gchar *Parameters_WHITE_BALANCE_SHADE; | |
| const gchar *Parameters_EFFECT_NONE; | |
| const gchar *Parameters_EFFECT_MONO; | |
| const gchar *Parameters_EFFECT_NEGATIVE; | |
| const gchar *Parameters_EFFECT_SOLARIZE; | |
| const gchar *Parameters_EFFECT_SEPIA; | |
| const gchar *Parameters_EFFECT_POSTERIZE; | |
| const gchar *Parameters_EFFECT_WHITEBOARD; | |
| const gchar *Parameters_EFFECT_BLACKBOARD; | |
| const gchar *Parameters_EFFECT_AQUA; | |
| const gchar *Parameters_EFFECT_EMBOSS; | |
| const gchar *Parameters_EFFECT_SKETCH; | |
| const gchar *Parameters_EFFECT_NEON; | |
| const gchar *Parameters_ANTIBANDING_AUTO; | |
| const gchar *Parameters_ANTIBANDING_50HZ; | |
| const gchar *Parameters_ANTIBANDING_60HZ; | |
| const gchar *Parameters_ANTIBANDING_OFF; | |
| const gchar *Parameters_FLASH_MODE_OFF; | |
| const gchar *Parameters_FLASH_MODE_AUTO; | |
| const gchar *Parameters_FLASH_MODE_ON; | |
| const gchar *Parameters_FLASH_MODE_RED_EYE; | |
| const gchar *Parameters_FLASH_MODE_TORCH; | |
| const gchar *Parameters_SCENE_MODE_AUTO; | |
| const gchar *Parameters_SCENE_MODE_ACTION; | |
| const gchar *Parameters_SCENE_MODE_PORTRAIT; | |
| const gchar *Parameters_SCENE_MODE_LANDSCAPE; | |
| const gchar *Parameters_SCENE_MODE_NIGHT; | |
| const gchar *Parameters_SCENE_MODE_NIGHT_PORTRAIT; | |
| const gchar *Parameters_SCENE_MODE_THEATRE; | |
| const gchar *Parameters_SCENE_MODE_BEACH; | |
| const gchar *Parameters_SCENE_MODE_SNOW; | |
| const gchar *Parameters_SCENE_MODE_SUNSET; | |
| const gchar *Parameters_SCENE_MODE_STEADYPHOTO; | |
| const gchar *Parameters_SCENE_MODE_FIREWORKS; | |
| const gchar *Parameters_SCENE_MODE_SPORTS; | |
| const gchar *Parameters_SCENE_MODE_PARTY; | |
| const gchar *Parameters_SCENE_MODE_CANDLELIGHT; | |
| const gchar *Parameters_SCENE_MODE_BARCODE; | |
| const gchar *Parameters_SCENE_MODE_BACKLIGHT; | |
| const gchar *Parameters_SCENE_MODE_FLOWERS; | |
| const gchar *Parameters_SCENE_MODE_AR; | |
| const gchar *Parameters_SCENE_MODE_HDR; | |
| const gchar *Parameters_FOCUS_MODE_AUTO; | |
| const gchar *Parameters_FOCUS_MODE_INFINITY; | |
| const gchar *Parameters_FOCUS_MODE_MACRO; | |
| const gchar *Parameters_FOCUS_MODE_FIXED; | |
| const gchar *Parameters_FOCUS_MODE_EDOF; | |
| const gchar *Parameters_FOCUS_MODE_CONTINUOUS_VIDEO; | |
| const gchar *Parameters_FOCUS_MODE_CONTINUOUS_PICTURE; | |
| static struct | |
| { | |
| jclass klass; | |
| jmethodID iterator; | |
| } java_util_list = { | |
| 0 | |
| }; | |
| static struct | |
| { | |
| jclass klass; | |
| jmethodID hasNext; | |
| jmethodID next; | |
| } java_util_iterator = { | |
| 0 | |
| }; | |
| static struct | |
| { | |
| jclass klass; | |
| jmethodID intValue; | |
| } java_lang_integer = { | |
| 0 | |
| }; | |
| static struct | |
| { | |
| jclass klass; | |
| jmethodID equals; | |
| } java_lang_string = { | |
| 0 | |
| }; | |
| static struct | |
| { | |
| jclass klass; | |
| jmethodID constructor; | |
| } org_freedesktop_gstreamer_androidmedia_gstahccallback = { | |
| 0 | |
| }; | |
| static void | |
| gst_ah_camera_on_preview_frame (JNIEnv * env, jclass klass, jbyteArray data, | |
| jobject camera, jlong callback, jlong user_data) | |
| { | |
| GstAHCPreviewCallback cb = (GstAHCPreviewCallback) (gsize) callback; | |
| if (cb) | |
| cb (data, (gpointer) (gsize) user_data); | |
| } | |
| static void | |
| gst_ah_camera_on_error (JNIEnv * env, jclass klass, jint error, | |
| jobject camera, jlong callback, jlong user_data) | |
| { | |
| GstAHCErrorCallback cb = (GstAHCErrorCallback) (gsize) callback; | |
| if (cb) | |
| cb (error, (gpointer) (gsize) user_data); | |
| } | |
| static void | |
| gst_ah_camera_on_auto_focus (JNIEnv * env, jclass klass, jboolean success, | |
| jobject camera, jlong callback, jlong user_data) | |
| { | |
| GstAHCAutoFocusCallback cb = (GstAHCAutoFocusCallback) (gsize) callback; | |
| if (cb) | |
| cb (success, (gpointer) (gsize) user_data); | |
| } | |
| static JNINativeMethod native_methods[] = { | |
| {(gchar *) "gst_ah_camera_on_preview_frame", | |
| (gchar *) "([BLandroid/hardware/Camera;JJ)V", | |
| (void *) gst_ah_camera_on_preview_frame}, | |
| {(gchar *) "gst_ah_camera_on_error", | |
| (gchar *) "(ILandroid/hardware/Camera;JJ)V", | |
| (void *) gst_ah_camera_on_error}, | |
| {(gchar *) "gst_ah_camera_on_auto_focus", | |
| (gchar *) "(ZLandroid/hardware/Camera;JJ)V", | |
| (void *) gst_ah_camera_on_auto_focus} | |
| }; | |
| static gboolean | |
| _init_classes (void) | |
| { | |
| JNIEnv *env; | |
| GError *err = NULL; | |
| jclass klass; | |
| jfieldID fieldID; | |
| env = gst_amc_jni_get_env (); | |
| /* android.hardware.Camera */ | |
| klass = android_hardware_camera.klass = | |
| gst_amc_jni_get_class (env, &err, "android/hardware/Camera"); | |
| if (!klass) | |
| goto failed; | |
| android_hardware_camera.addCallbackBuffer = | |
| gst_amc_jni_get_method_id (env, &err, klass, | |
| "addCallbackBuffer", "([B)V"); | |
| android_hardware_camera.autoFocus = | |
| gst_amc_jni_get_method_id (env, &err, klass, | |
| "autoFocus", "(Landroid/hardware/Camera$AutoFocusCallback;)V"); | |
| android_hardware_camera.cancelAutoFocus = | |
| gst_amc_jni_get_method_id (env, &err, klass, "cancelAutoFocus", "()V"); | |
| android_hardware_camera.getCameraInfo = | |
| gst_amc_jni_get_static_method_id (env, &err, klass, | |
| "getCameraInfo", "(ILandroid/hardware/Camera$CameraInfo;)V"); | |
| android_hardware_camera.getNumberOfCameras = | |
| gst_amc_jni_get_static_method_id (env, &err, klass, | |
| "getNumberOfCameras", "()I"); | |
| android_hardware_camera.getParameters = | |
| gst_amc_jni_get_method_id (env, &err, klass, | |
| "getParameters", "()Landroid/hardware/Camera$Parameters;"); | |
| android_hardware_camera.lock = | |
| gst_amc_jni_get_method_id (env, &err, klass, "lock", "()V"); | |
| android_hardware_camera.open = | |
| gst_amc_jni_get_static_method_id (env, &err, klass, | |
| "open", "(I)Landroid/hardware/Camera;"); | |
| android_hardware_camera.reconnect = | |
| gst_amc_jni_get_method_id (env, &err, klass, "reconnect", "()V"); | |
| android_hardware_camera.release = | |
| gst_amc_jni_get_method_id (env, &err, klass, "release", "()V"); | |
| android_hardware_camera.setErrorCallback = | |
| gst_amc_jni_get_method_id (env, &err, klass, "setErrorCallback", | |
| "(Landroid/hardware/Camera$ErrorCallback;)V"); | |
| android_hardware_camera.setParameters = | |
| gst_amc_jni_get_method_id (env, &err, klass, "setParameters", | |
| "(Landroid/hardware/Camera$Parameters;)V"); | |
| android_hardware_camera.setPreviewCallbackWithBuffer = | |
| gst_amc_jni_get_method_id (env, &err, klass, | |
| "setPreviewCallbackWithBuffer", | |
| "(Landroid/hardware/Camera$PreviewCallback;)V"); | |
| android_hardware_camera.setPreviewTexture = | |
| gst_amc_jni_get_method_id (env, &err, klass, | |
| "setPreviewTexture", "(Landroid/graphics/SurfaceTexture;)V"); | |
| android_hardware_camera.startPreview = | |
| gst_amc_jni_get_method_id (env, &err, klass, "startPreview", "()V"); | |
| android_hardware_camera.startSmoothZoom = | |
| gst_amc_jni_get_method_id (env, &err, klass, "startSmoothZoom", "(I)V"); | |
| android_hardware_camera.stopPreview = | |
| gst_amc_jni_get_method_id (env, &err, klass, "stopPreview", "()V"); | |
| android_hardware_camera.stopPreview = | |
| gst_amc_jni_get_method_id (env, &err, klass, "stopPreview", "()V"); | |
| android_hardware_camera.unlock = | |
| gst_amc_jni_get_method_id (env, &err, klass, "unlock", "()V"); | |
| /* android.hardware.Camera.CameraInfo */ | |
| klass = android_hardware_camera_camerainfo.klass = | |
| gst_amc_jni_get_class (env, &err, "android/hardware/Camera$CameraInfo"); | |
| if (!klass) | |
| goto failed; | |
| android_hardware_camera_camerainfo.constructor = | |
| gst_amc_jni_get_method_id (env, &err, klass, "<init>", "()V"); | |
| android_hardware_camera_camerainfo.facing = | |
| gst_amc_jni_get_field_id (env, &err, klass, "facing", "I"); | |
| android_hardware_camera_camerainfo.orientation = | |
| gst_amc_jni_get_field_id (env, &err, klass, "orientation", "I"); | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "CAMERA_FACING_BACK", | |
| "I"); | |
| if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_camerainfo.CAMERA_FACING_BACK)) | |
| goto failed; | |
| CameraInfo_CAMERA_FACING_BACK = | |
| android_hardware_camera_camerainfo.CAMERA_FACING_BACK; | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "CAMERA_FACING_FRONT", | |
| "I"); | |
| if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_camerainfo.CAMERA_FACING_FRONT)) | |
| goto failed; | |
| CameraInfo_CAMERA_FACING_FRONT = | |
| android_hardware_camera_camerainfo.CAMERA_FACING_FRONT; | |
| /* android.hardware.Camera.Size */ | |
| klass = android_hardware_camera_size.klass = | |
| gst_amc_jni_get_class (env, &err, "android/hardware/Camera$Size"); | |
| if (!klass) | |
| goto failed; | |
| android_hardware_camera_size.width = | |
| gst_amc_jni_get_field_id (env, &err, klass, "width", "I"); | |
| android_hardware_camera_size.height = | |
| gst_amc_jni_get_field_id (env, &err, klass, "height", "I"); | |
| /* android.hardware.Camera.Parameters */ | |
| klass = android_hardware_camera_parameters.klass = | |
| gst_amc_jni_get_class (env, &err, "android/hardware/Camera$Parameters"); | |
| if (!klass) | |
| goto failed; | |
| android_hardware_camera_parameters.flatten = | |
| gst_amc_jni_get_method_id (env, &err, klass, "flatten", | |
| "()Ljava/lang/String;"); | |
| android_hardware_camera_parameters.getAntibanding = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getAntibanding", | |
| "()Ljava/lang/String;"); | |
| android_hardware_camera_parameters.getColorEffect = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getColorEffect", | |
| "()Ljava/lang/String;"); | |
| android_hardware_camera_parameters.getExposureCompensation = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getExposureCompensation", | |
| "()I"); | |
| android_hardware_camera_parameters.getExposureCompensationStep = | |
| gst_amc_jni_get_method_id (env, &err, klass, | |
| "getExposureCompensationStep", "()F"); | |
| android_hardware_camera_parameters.getFlashMode = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getFlashMode", | |
| "()Ljava/lang/String;"); | |
| android_hardware_camera_parameters.getFocalLength = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getFocalLength", "()F"); | |
| android_hardware_camera_parameters.getFocusMode = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getFocusMode", | |
| "()Ljava/lang/String;"); | |
| android_hardware_camera_parameters.getHorizontalViewAngle = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getHorizontalViewAngle", | |
| "()F"); | |
| android_hardware_camera_parameters.getMaxExposureCompensation = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getMaxExposureCompensation", | |
| "()I"); | |
| android_hardware_camera_parameters.getMaxZoom = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getMaxZoom", "()I"); | |
| android_hardware_camera_parameters.getMinExposureCompensation = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getMinExposureCompensation", | |
| "()I"); | |
| android_hardware_camera_parameters.getPreviewFormat = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getPreviewFormat", "()I"); | |
| android_hardware_camera_parameters.getPreviewFpsRange = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getPreviewFpsRange", | |
| "([I)V"); | |
| android_hardware_camera_parameters.getPreviewSize = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getPreviewSize", | |
| "()Landroid/hardware/Camera$Size;"); | |
| android_hardware_camera_parameters.getSceneMode = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getSceneMode", | |
| "()Ljava/lang/String;"); | |
| android_hardware_camera_parameters.getSupportedAntibanding = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getSupportedAntibanding", | |
| "()Ljava/util/List;"); | |
| android_hardware_camera_parameters.getSupportedColorEffects = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getSupportedColorEffects", | |
| "()Ljava/util/List;"); | |
| android_hardware_camera_parameters.getSupportedFlashModes = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getSupportedFlashModes", | |
| "()Ljava/util/List;"); | |
| android_hardware_camera_parameters.getSupportedFocusModes = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getSupportedFocusModes", | |
| "()Ljava/util/List;"); | |
| android_hardware_camera_parameters.getSupportedPreviewFormats = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getSupportedPreviewFormats", | |
| "()Ljava/util/List;"); | |
| android_hardware_camera_parameters.getSupportedPreviewFpsRange = | |
| gst_amc_jni_get_method_id (env, &err, klass, | |
| "getSupportedPreviewFpsRange", "()Ljava/util/List;"); | |
| android_hardware_camera_parameters.getSupportedPreviewSizes = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getSupportedPreviewSizes", | |
| "()Ljava/util/List;"); | |
| android_hardware_camera_parameters.getSupportedSceneModes = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getSupportedSceneModes", | |
| "()Ljava/util/List;"); | |
| android_hardware_camera_parameters.getSupportedWhiteBalance = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getSupportedWhiteBalance", | |
| "()Ljava/util/List;"); | |
| android_hardware_camera_parameters.getVerticalViewAngle = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getVerticalViewAngle", | |
| "()F"); | |
| android_hardware_camera_parameters.getVideoStabilization = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getVideoStabilization", | |
| "()Z"); | |
| android_hardware_camera_parameters.getWhiteBalance = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getWhiteBalance", | |
| "()Ljava/lang/String;"); | |
| android_hardware_camera_parameters.getZoom = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getZoom", "()I"); | |
| android_hardware_camera_parameters.getZoomRatios = | |
| gst_amc_jni_get_method_id (env, &err, klass, "getZoomRatios", | |
| "()Ljava/util/List;"); | |
| android_hardware_camera_parameters.isSmoothZoomSupported = | |
| gst_amc_jni_get_method_id (env, &err, klass, "isSmoothZoomSupported", | |
| "()Z"); | |
| android_hardware_camera_parameters.isVideoStabilizationSupported = | |
| gst_amc_jni_get_method_id (env, &err, klass, | |
| "isVideoStabilizationSupported", "()Z"); | |
| android_hardware_camera_parameters.isZoomSupported = | |
| gst_amc_jni_get_method_id (env, &err, klass, "isZoomSupported", "()Z"); | |
| android_hardware_camera_parameters.setAntibanding = | |
| gst_amc_jni_get_method_id (env, &err, klass, "setAntibanding", | |
| "(Ljava/lang/String;)V"); | |
| android_hardware_camera_parameters.setColorEffect = | |
| gst_amc_jni_get_method_id (env, &err, klass, "setColorEffect", | |
| "(Ljava/lang/String;)V"); | |
| android_hardware_camera_parameters.setExposureCompensation = | |
| gst_amc_jni_get_method_id (env, &err, klass, "setExposureCompensation", | |
| "(I)V"); | |
| android_hardware_camera_parameters.setFlashMode = | |
| gst_amc_jni_get_method_id (env, &err, klass, "setFlashMode", | |
| "(Ljava/lang/String;)V"); | |
| android_hardware_camera_parameters.setFocusMode = | |
| gst_amc_jni_get_method_id (env, &err, klass, "setFocusMode", | |
| "(Ljava/lang/String;)V"); | |
| android_hardware_camera_parameters.setPreviewFormat = | |
| gst_amc_jni_get_method_id (env, &err, klass, "setPreviewFormat", "(I)V"); | |
| android_hardware_camera_parameters.setPreviewFpsRange = | |
| gst_amc_jni_get_method_id (env, &err, klass, "setPreviewFpsRange", | |
| "(II)V"); | |
| android_hardware_camera_parameters.setPreviewSize = | |
| gst_amc_jni_get_method_id (env, &err, klass, "setPreviewSize", "(II)V"); | |
| android_hardware_camera_parameters.setSceneMode = | |
| gst_amc_jni_get_method_id (env, &err, klass, "setSceneMode", | |
| "(Ljava/lang/String;)V"); | |
| android_hardware_camera_parameters.setWhiteBalance = | |
| gst_amc_jni_get_method_id (env, &err, klass, "setWhiteBalance", | |
| "(Ljava/lang/String;)V"); | |
| android_hardware_camera_parameters.setVideoStabilization = | |
| gst_amc_jni_get_method_id (env, &err, klass, "setVideoStabilization", | |
| "(Z)V"); | |
| android_hardware_camera_parameters.setZoom = | |
| gst_amc_jni_get_method_id (env, &err, klass, "setZoom", "(I)V"); | |
| android_hardware_camera_parameters.unflatten = | |
| gst_amc_jni_get_method_id (env, &err, klass, "unflatten", | |
| "(Ljava/lang/String;)V"); | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "WHITE_BALANCE_AUTO", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.WHITE_BALANCE_AUTO)) | |
| goto failed; | |
| Parameters_WHITE_BALANCE_AUTO = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_AUTO, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.WHITE_BALANCE_AUTO; | |
| android_hardware_camera_parameters.WHITE_BALANCE_AUTO = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, | |
| "WHITE_BALANCE_INCANDESCENT", "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT)) | |
| goto failed; | |
| Parameters_WHITE_BALANCE_INCANDESCENT = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT, NULL); | |
| { | |
| jobject local = | |
| android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT; | |
| android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, | |
| "WHITE_BALANCE_FLUORESCENT", "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT)) | |
| goto failed; | |
| Parameters_WHITE_BALANCE_FLUORESCENT = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT, NULL); | |
| { | |
| jobject local = | |
| android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT; | |
| android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, | |
| "WHITE_BALANCE_WARM_FLUORESCENT", "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT)) | |
| goto failed; | |
| Parameters_WHITE_BALANCE_WARM_FLUORESCENT = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT, NULL); | |
| { | |
| jobject local = | |
| android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT; | |
| android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, | |
| "WHITE_BALANCE_DAYLIGHT", "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT)) | |
| goto failed; | |
| Parameters_WHITE_BALANCE_DAYLIGHT = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT; | |
| android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, | |
| "WHITE_BALANCE_CLOUDY_DAYLIGHT", "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT)) | |
| goto failed; | |
| Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT, NULL); | |
| { | |
| jobject local = | |
| android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT; | |
| android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, | |
| "WHITE_BALANCE_TWILIGHT", "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT)) | |
| goto failed; | |
| Parameters_WHITE_BALANCE_TWILIGHT = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT; | |
| android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "WHITE_BALANCE_SHADE", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.WHITE_BALANCE_SHADE)) | |
| goto failed; | |
| Parameters_WHITE_BALANCE_SHADE = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_SHADE, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.WHITE_BALANCE_SHADE; | |
| android_hardware_camera_parameters.WHITE_BALANCE_SHADE = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_NONE", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.EFFECT_NONE)) | |
| goto failed; | |
| Parameters_EFFECT_NONE = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_NONE, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.EFFECT_NONE; | |
| android_hardware_camera_parameters.EFFECT_NONE = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_MONO", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.EFFECT_MONO)) | |
| goto failed; | |
| Parameters_EFFECT_MONO = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_MONO, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.EFFECT_MONO; | |
| android_hardware_camera_parameters.EFFECT_MONO = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_NEGATIVE", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.EFFECT_NEGATIVE)) | |
| goto failed; | |
| Parameters_EFFECT_NEGATIVE = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_NEGATIVE, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.EFFECT_NEGATIVE; | |
| android_hardware_camera_parameters.EFFECT_NEGATIVE = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_SOLARIZE", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.EFFECT_SOLARIZE)) | |
| goto failed; | |
| Parameters_EFFECT_SOLARIZE = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_SOLARIZE, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.EFFECT_SOLARIZE; | |
| android_hardware_camera_parameters.EFFECT_SOLARIZE = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_SEPIA", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.EFFECT_SEPIA)) | |
| goto failed; | |
| Parameters_EFFECT_SEPIA = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_SEPIA, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.EFFECT_SEPIA; | |
| android_hardware_camera_parameters.EFFECT_SEPIA = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_POSTERIZE", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.EFFECT_POSTERIZE)) | |
| goto failed; | |
| Parameters_EFFECT_POSTERIZE = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_POSTERIZE, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.EFFECT_POSTERIZE; | |
| android_hardware_camera_parameters.EFFECT_POSTERIZE = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_WHITEBOARD", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.EFFECT_WHITEBOARD)) | |
| goto failed; | |
| Parameters_EFFECT_WHITEBOARD = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_WHITEBOARD, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.EFFECT_WHITEBOARD; | |
| android_hardware_camera_parameters.EFFECT_WHITEBOARD = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_BLACKBOARD", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.EFFECT_BLACKBOARD)) | |
| goto failed; | |
| Parameters_EFFECT_BLACKBOARD = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_BLACKBOARD, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.EFFECT_BLACKBOARD; | |
| android_hardware_camera_parameters.EFFECT_BLACKBOARD = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_AQUA", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.EFFECT_AQUA)) | |
| goto failed; | |
| Parameters_EFFECT_AQUA = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_AQUA, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.EFFECT_AQUA; | |
| android_hardware_camera_parameters.EFFECT_AQUA = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_EMBOSS", | |
| "Ljava/lang/String;"); | |
| if (fieldID) { | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.EFFECT_EMBOSS)) | |
| goto failed; | |
| Parameters_EFFECT_EMBOSS = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_EMBOSS, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.EFFECT_EMBOSS; | |
| android_hardware_camera_parameters.EFFECT_EMBOSS = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| } else { | |
| android_hardware_camera_parameters.EFFECT_EMBOSS = NULL; | |
| g_clear_error (&err); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_SKETCH", | |
| "Ljava/lang/String;"); | |
| if (fieldID) { | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.EFFECT_SKETCH)) | |
| goto failed; | |
| Parameters_EFFECT_SKETCH = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_SKETCH, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.EFFECT_SKETCH; | |
| android_hardware_camera_parameters.EFFECT_SKETCH = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| } else { | |
| android_hardware_camera_parameters.EFFECT_SKETCH = NULL; | |
| g_clear_error (&err); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_NEON", | |
| "Ljava/lang/String;"); | |
| if (fieldID) { | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.EFFECT_NEON)) | |
| goto failed; | |
| Parameters_EFFECT_NEON = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_NEON, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.EFFECT_NEON; | |
| android_hardware_camera_parameters.EFFECT_NEON = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| } else { | |
| android_hardware_camera_parameters.EFFECT_NEON = NULL; | |
| g_clear_error (&err); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_AUTO", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.ANTIBANDING_AUTO)) | |
| goto failed; | |
| Parameters_ANTIBANDING_AUTO = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.ANTIBANDING_AUTO, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.ANTIBANDING_AUTO; | |
| android_hardware_camera_parameters.ANTIBANDING_AUTO = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_50HZ", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.ANTIBANDING_50HZ)) | |
| goto failed; | |
| Parameters_ANTIBANDING_50HZ = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.ANTIBANDING_50HZ, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.ANTIBANDING_50HZ; | |
| android_hardware_camera_parameters.ANTIBANDING_50HZ = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_60HZ", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.ANTIBANDING_60HZ)) | |
| goto failed; | |
| Parameters_ANTIBANDING_60HZ = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.ANTIBANDING_60HZ, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.ANTIBANDING_60HZ; | |
| android_hardware_camera_parameters.ANTIBANDING_60HZ = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_OFF", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.ANTIBANDING_OFF)) | |
| goto failed; | |
| Parameters_ANTIBANDING_OFF = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.ANTIBANDING_OFF, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.ANTIBANDING_OFF; | |
| android_hardware_camera_parameters.ANTIBANDING_OFF = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_OFF", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.FLASH_MODE_OFF)) | |
| goto failed; | |
| Parameters_FLASH_MODE_OFF = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.FLASH_MODE_OFF, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.FLASH_MODE_OFF; | |
| android_hardware_camera_parameters.FLASH_MODE_OFF = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_AUTO", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.FLASH_MODE_AUTO)) | |
| goto failed; | |
| Parameters_FLASH_MODE_AUTO = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.FLASH_MODE_AUTO, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.FLASH_MODE_AUTO; | |
| android_hardware_camera_parameters.FLASH_MODE_AUTO = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_ON", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.FLASH_MODE_ON)) | |
| goto failed; | |
| Parameters_FLASH_MODE_ON = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.FLASH_MODE_ON, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.FLASH_MODE_ON; | |
| android_hardware_camera_parameters.FLASH_MODE_ON = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_RED_EYE", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.FLASH_MODE_RED_EYE)) | |
| goto failed; | |
| Parameters_FLASH_MODE_RED_EYE = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.FLASH_MODE_RED_EYE, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.FLASH_MODE_RED_EYE; | |
| android_hardware_camera_parameters.FLASH_MODE_RED_EYE = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_TORCH", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.FLASH_MODE_TORCH)) | |
| goto failed; | |
| Parameters_FLASH_MODE_TORCH = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.FLASH_MODE_TORCH, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.FLASH_MODE_TORCH; | |
| android_hardware_camera_parameters.FLASH_MODE_TORCH = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_AUTO", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_AUTO)) | |
| goto failed; | |
| Parameters_SCENE_MODE_AUTO = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_AUTO, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_AUTO; | |
| android_hardware_camera_parameters.SCENE_MODE_AUTO = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_ACTION", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_ACTION)) | |
| goto failed; | |
| Parameters_SCENE_MODE_ACTION = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_ACTION, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_ACTION; | |
| android_hardware_camera_parameters.SCENE_MODE_ACTION = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_PORTRAIT", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_PORTRAIT)) | |
| goto failed; | |
| Parameters_SCENE_MODE_PORTRAIT = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_PORTRAIT, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_PORTRAIT; | |
| android_hardware_camera_parameters.SCENE_MODE_PORTRAIT = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_LANDSCAPE", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE)) | |
| goto failed; | |
| Parameters_SCENE_MODE_LANDSCAPE = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE; | |
| android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_NIGHT", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_NIGHT)) | |
| goto failed; | |
| Parameters_SCENE_MODE_NIGHT = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_NIGHT, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_NIGHT; | |
| android_hardware_camera_parameters.SCENE_MODE_NIGHT = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, | |
| "SCENE_MODE_NIGHT_PORTRAIT", "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT)) | |
| goto failed; | |
| Parameters_SCENE_MODE_NIGHT_PORTRAIT = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT, NULL); | |
| { | |
| jobject local = | |
| android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT; | |
| android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_THEATRE", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_THEATRE)) | |
| goto failed; | |
| Parameters_SCENE_MODE_THEATRE = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_THEATRE, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_THEATRE; | |
| android_hardware_camera_parameters.SCENE_MODE_THEATRE = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_BEACH", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_BEACH)) | |
| goto failed; | |
| Parameters_SCENE_MODE_BEACH = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_BEACH, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_BEACH; | |
| android_hardware_camera_parameters.SCENE_MODE_BEACH = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_SNOW", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_SNOW)) | |
| goto failed; | |
| Parameters_SCENE_MODE_SNOW = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_SNOW, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_SNOW; | |
| android_hardware_camera_parameters.SCENE_MODE_SNOW = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_SUNSET", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_SUNSET)) | |
| goto failed; | |
| Parameters_SCENE_MODE_SUNSET = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_SUNSET, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_SUNSET; | |
| android_hardware_camera_parameters.SCENE_MODE_SUNSET = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, | |
| "SCENE_MODE_STEADYPHOTO", "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO)) | |
| goto failed; | |
| Parameters_SCENE_MODE_STEADYPHOTO = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO; | |
| android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_FIREWORKS", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_FIREWORKS)) | |
| goto failed; | |
| Parameters_SCENE_MODE_FIREWORKS = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_FIREWORKS, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_FIREWORKS; | |
| android_hardware_camera_parameters.SCENE_MODE_FIREWORKS = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_SPORTS", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_SPORTS)) | |
| goto failed; | |
| Parameters_SCENE_MODE_SPORTS = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_SPORTS, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_SPORTS; | |
| android_hardware_camera_parameters.SCENE_MODE_SPORTS = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_PARTY", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_PARTY)) | |
| goto failed; | |
| Parameters_SCENE_MODE_PARTY = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_PARTY, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_PARTY; | |
| android_hardware_camera_parameters.SCENE_MODE_PARTY = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, | |
| "SCENE_MODE_CANDLELIGHT", "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT)) | |
| goto failed; | |
| Parameters_SCENE_MODE_CANDLELIGHT = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT; | |
| android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_BARCODE", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_BARCODE)) | |
| goto failed; | |
| Parameters_SCENE_MODE_BARCODE = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_BARCODE, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_BARCODE; | |
| android_hardware_camera_parameters.SCENE_MODE_BARCODE = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_BACKLIGHT", | |
| "Ljava/lang/String;"); | |
| if (fieldID) { | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT)) | |
| goto failed; | |
| Parameters_SCENE_MODE_BACKLIGHT = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT; | |
| android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| } else { | |
| android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT = NULL; | |
| g_clear_error (&err); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_FLOWERS", | |
| "Ljava/lang/String;"); | |
| if (fieldID) { | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_FLOWERS)) | |
| goto failed; | |
| Parameters_SCENE_MODE_FLOWERS = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_FLOWERS, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_FLOWERS; | |
| android_hardware_camera_parameters.SCENE_MODE_FLOWERS = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| } else { | |
| android_hardware_camera_parameters.SCENE_MODE_FLOWERS = NULL; | |
| g_clear_error (&err); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_AR", | |
| "Ljava/lang/String;"); | |
| if (fieldID) { | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_AR)) | |
| goto failed; | |
| Parameters_SCENE_MODE_AR = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_AR, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_AR; | |
| android_hardware_camera_parameters.SCENE_MODE_AR = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| } else { | |
| android_hardware_camera_parameters.SCENE_MODE_AR = NULL; | |
| g_clear_error (&err); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_HDR", | |
| "Ljava/lang/String;"); | |
| if (fieldID) { | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.SCENE_MODE_HDR)) | |
| goto failed; | |
| Parameters_SCENE_MODE_HDR = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_HDR, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.SCENE_MODE_HDR; | |
| android_hardware_camera_parameters.SCENE_MODE_HDR = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| } else { | |
| android_hardware_camera_parameters.SCENE_MODE_HDR = NULL; | |
| g_clear_error (&err); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_AUTO", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.FOCUS_MODE_AUTO)) | |
| goto failed; | |
| Parameters_FOCUS_MODE_AUTO = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_AUTO, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.FOCUS_MODE_AUTO; | |
| android_hardware_camera_parameters.FOCUS_MODE_AUTO = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_INFINITY", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.FOCUS_MODE_INFINITY)) | |
| goto failed; | |
| Parameters_FOCUS_MODE_INFINITY = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_INFINITY, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.FOCUS_MODE_INFINITY; | |
| android_hardware_camera_parameters.FOCUS_MODE_INFINITY = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_MACRO", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.FOCUS_MODE_MACRO)) | |
| goto failed; | |
| Parameters_FOCUS_MODE_MACRO = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_MACRO, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.FOCUS_MODE_MACRO; | |
| android_hardware_camera_parameters.FOCUS_MODE_MACRO = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_FIXED", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.FOCUS_MODE_FIXED)) | |
| goto failed; | |
| Parameters_FOCUS_MODE_FIXED = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_FIXED, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.FOCUS_MODE_FIXED; | |
| android_hardware_camera_parameters.FOCUS_MODE_FIXED = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_EDOF", | |
| "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.FOCUS_MODE_EDOF)) | |
| goto failed; | |
| Parameters_FOCUS_MODE_EDOF = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_EDOF, NULL); | |
| { | |
| jobject local = android_hardware_camera_parameters.FOCUS_MODE_EDOF; | |
| android_hardware_camera_parameters.FOCUS_MODE_EDOF = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, | |
| "FOCUS_MODE_CONTINUOUS_VIDEO", "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) | |
| goto failed; | |
| Parameters_FOCUS_MODE_CONTINUOUS_VIDEO = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO, NULL); | |
| { | |
| jobject local = | |
| android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO; | |
| android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| fieldID = | |
| gst_amc_jni_get_static_field_id (env, &err, klass, | |
| "FOCUS_MODE_CONTINUOUS_PICTURE", "Ljava/lang/String;"); | |
| if (!fieldID) | |
| goto failed; | |
| if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID, | |
| &android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) | |
| goto failed; | |
| Parameters_FOCUS_MODE_CONTINUOUS_PICTURE = | |
| (*env)->GetStringUTFChars (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE, NULL); | |
| { | |
| jobject local = | |
| android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE; | |
| android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE = | |
| gst_amc_jni_object_make_global (env, local); | |
| } | |
| /* java.lang.String */ | |
| klass = java_lang_string.klass = | |
| gst_amc_jni_get_class (env, &err, "java/lang/String"); | |
| java_lang_string.equals = | |
| gst_amc_jni_get_method_id (env, &err, klass, "equals", | |
| "(Ljava/lang/Object;)Z"); | |
| /* java.util.List */ | |
| klass = java_util_list.klass = | |
| gst_amc_jni_get_class (env, &err, "java/util/List"); | |
| java_util_list.iterator = | |
| gst_amc_jni_get_method_id (env, &err, klass, "iterator", | |
| "()Ljava/util/Iterator;"); | |
| /* java.util.Iterator */ | |
| klass = java_util_iterator.klass = | |
| gst_amc_jni_get_class (env, &err, "java/util/Iterator"); | |
| java_util_iterator.hasNext = | |
| gst_amc_jni_get_method_id (env, &err, klass, "hasNext", "()Z"); | |
| java_util_iterator.next = | |
| gst_amc_jni_get_method_id (env, &err, klass, "next", | |
| "()Ljava/lang/Object;"); | |
| /* java.lang.Integer */ | |
| klass = java_lang_integer.klass = | |
| gst_amc_jni_get_class (env, &err, "java/lang/Integer"); | |
| java_lang_integer.intValue = | |
| gst_amc_jni_get_method_id (env, &err, klass, "intValue", "()I"); | |
| if (!org_freedesktop_gstreamer_androidmedia_gstahccallback.klass) { | |
| org_freedesktop_gstreamer_androidmedia_gstahccallback.klass = | |
| gst_amc_jni_get_application_class (env, | |
| "org/freedesktop/gstreamer/androidmedia/GstAhcCallback", &err); | |
| } | |
| if (!org_freedesktop_gstreamer_androidmedia_gstahccallback.klass) | |
| goto failed; | |
| org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor = | |
| gst_amc_jni_get_method_id (env, &err, | |
| org_freedesktop_gstreamer_androidmedia_gstahccallback.klass, "<init>", | |
| "(JJ)V"); | |
| if ((*env)->RegisterNatives (env, | |
| org_freedesktop_gstreamer_androidmedia_gstahccallback.klass, | |
| native_methods, G_N_ELEMENTS (native_methods))) { | |
| GST_ERROR ("Failed to register native methods for GstAhcCallback"); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| failed: | |
| if (err) { | |
| GST_ERROR ("Failed to initialize android.hardware.Camera classes: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| } | |
| return FALSE; | |
| } | |
| gboolean | |
| gst_android_hardware_camera_init (void) | |
| { | |
| GST_DEBUG_CATEGORY_INIT (ahc_debug, "ahc", 0, | |
| "Android Gstreamer Hardware Camera"); | |
| if (!_init_classes ()) { | |
| gst_android_hardware_camera_deinit (); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| void | |
| gst_android_hardware_camera_deinit (void) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| if (android_hardware_camera.klass) | |
| gst_amc_jni_object_unref (env, android_hardware_camera.klass); | |
| android_hardware_camera.klass = NULL; | |
| if (android_hardware_camera_camerainfo.klass) | |
| gst_amc_jni_object_unref (env, android_hardware_camera_camerainfo.klass); | |
| android_hardware_camera_camerainfo.klass = NULL; | |
| if (android_hardware_camera_size.klass) | |
| gst_amc_jni_object_unref (env, android_hardware_camera_size.klass); | |
| android_hardware_camera_size.klass = NULL; | |
| if (android_hardware_camera_parameters.klass) | |
| gst_amc_jni_object_unref (env, android_hardware_camera_parameters.klass); | |
| android_hardware_camera_parameters.klass = NULL; | |
| if (Parameters_WHITE_BALANCE_AUTO) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_AUTO, | |
| Parameters_WHITE_BALANCE_AUTO); | |
| Parameters_WHITE_BALANCE_AUTO = NULL; | |
| if (android_hardware_camera_parameters.WHITE_BALANCE_AUTO) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_AUTO); | |
| android_hardware_camera_parameters.WHITE_BALANCE_AUTO = NULL; | |
| if (Parameters_WHITE_BALANCE_INCANDESCENT) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT, | |
| Parameters_WHITE_BALANCE_INCANDESCENT); | |
| Parameters_WHITE_BALANCE_INCANDESCENT = NULL; | |
| if (android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT); | |
| android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT = NULL; | |
| if (Parameters_WHITE_BALANCE_FLUORESCENT) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT, | |
| Parameters_WHITE_BALANCE_FLUORESCENT); | |
| Parameters_WHITE_BALANCE_FLUORESCENT = NULL; | |
| if (android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT); | |
| android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT = NULL; | |
| if (Parameters_WHITE_BALANCE_WARM_FLUORESCENT) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT, | |
| Parameters_WHITE_BALANCE_WARM_FLUORESCENT); | |
| Parameters_WHITE_BALANCE_WARM_FLUORESCENT = NULL; | |
| if (android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT); | |
| android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT = NULL; | |
| if (Parameters_WHITE_BALANCE_DAYLIGHT) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT, | |
| Parameters_WHITE_BALANCE_DAYLIGHT); | |
| Parameters_WHITE_BALANCE_DAYLIGHT = NULL; | |
| if (android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT); | |
| android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT = NULL; | |
| if (Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT, | |
| Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT); | |
| Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT = NULL; | |
| if (android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT); | |
| android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT = NULL; | |
| if (Parameters_WHITE_BALANCE_TWILIGHT) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT, | |
| Parameters_WHITE_BALANCE_TWILIGHT); | |
| Parameters_WHITE_BALANCE_TWILIGHT = NULL; | |
| if (android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT); | |
| android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT = NULL; | |
| if (Parameters_WHITE_BALANCE_SHADE) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_SHADE, | |
| Parameters_WHITE_BALANCE_SHADE); | |
| Parameters_WHITE_BALANCE_SHADE = NULL; | |
| if (android_hardware_camera_parameters.WHITE_BALANCE_SHADE) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.WHITE_BALANCE_SHADE); | |
| android_hardware_camera_parameters.WHITE_BALANCE_SHADE = NULL; | |
| if (Parameters_EFFECT_NONE) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_NONE, Parameters_EFFECT_NONE); | |
| Parameters_EFFECT_NONE = NULL; | |
| if (android_hardware_camera_parameters.EFFECT_NONE) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.EFFECT_NONE); | |
| android_hardware_camera_parameters.EFFECT_NONE = NULL; | |
| if (Parameters_EFFECT_MONO) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_MONO, Parameters_EFFECT_MONO); | |
| Parameters_EFFECT_MONO = NULL; | |
| if (android_hardware_camera_parameters.EFFECT_MONO) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.EFFECT_MONO); | |
| android_hardware_camera_parameters.EFFECT_MONO = NULL; | |
| if (Parameters_EFFECT_NEGATIVE) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_NEGATIVE, | |
| Parameters_EFFECT_NEGATIVE); | |
| Parameters_EFFECT_NEGATIVE = NULL; | |
| if (android_hardware_camera_parameters.EFFECT_NEGATIVE) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.EFFECT_NEGATIVE); | |
| android_hardware_camera_parameters.EFFECT_NEGATIVE = NULL; | |
| if (Parameters_EFFECT_SOLARIZE) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_SOLARIZE, | |
| Parameters_EFFECT_SOLARIZE); | |
| Parameters_EFFECT_SOLARIZE = NULL; | |
| if (android_hardware_camera_parameters.EFFECT_SOLARIZE) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.EFFECT_SOLARIZE); | |
| android_hardware_camera_parameters.EFFECT_SOLARIZE = NULL; | |
| if (Parameters_EFFECT_SEPIA) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_SEPIA, | |
| Parameters_EFFECT_SEPIA); | |
| Parameters_EFFECT_SEPIA = NULL; | |
| if (android_hardware_camera_parameters.EFFECT_SEPIA) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.EFFECT_SEPIA); | |
| android_hardware_camera_parameters.EFFECT_SEPIA = NULL; | |
| if (Parameters_EFFECT_POSTERIZE) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_POSTERIZE, | |
| Parameters_EFFECT_POSTERIZE); | |
| Parameters_EFFECT_POSTERIZE = NULL; | |
| if (android_hardware_camera_parameters.EFFECT_POSTERIZE) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.EFFECT_POSTERIZE); | |
| android_hardware_camera_parameters.EFFECT_POSTERIZE = NULL; | |
| if (Parameters_EFFECT_WHITEBOARD) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_WHITEBOARD, | |
| Parameters_EFFECT_WHITEBOARD); | |
| Parameters_EFFECT_WHITEBOARD = NULL; | |
| if (android_hardware_camera_parameters.EFFECT_WHITEBOARD) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.EFFECT_WHITEBOARD); | |
| android_hardware_camera_parameters.EFFECT_WHITEBOARD = NULL; | |
| if (Parameters_EFFECT_BLACKBOARD) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_BLACKBOARD, | |
| Parameters_EFFECT_BLACKBOARD); | |
| Parameters_EFFECT_BLACKBOARD = NULL; | |
| if (android_hardware_camera_parameters.EFFECT_BLACKBOARD) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.EFFECT_BLACKBOARD); | |
| android_hardware_camera_parameters.EFFECT_BLACKBOARD = NULL; | |
| if (Parameters_EFFECT_AQUA) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_AQUA, Parameters_EFFECT_AQUA); | |
| Parameters_EFFECT_AQUA = NULL; | |
| if (android_hardware_camera_parameters.EFFECT_AQUA) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.EFFECT_AQUA); | |
| android_hardware_camera_parameters.EFFECT_AQUA = NULL; | |
| if (Parameters_EFFECT_EMBOSS) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_EMBOSS, | |
| Parameters_EFFECT_EMBOSS); | |
| Parameters_EFFECT_EMBOSS = NULL; | |
| if (android_hardware_camera_parameters.EFFECT_EMBOSS) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.EFFECT_EMBOSS); | |
| android_hardware_camera_parameters.EFFECT_EMBOSS = NULL; | |
| if (Parameters_EFFECT_SKETCH) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_SKETCH, | |
| Parameters_EFFECT_SKETCH); | |
| Parameters_EFFECT_SKETCH = NULL; | |
| if (android_hardware_camera_parameters.EFFECT_SKETCH) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.EFFECT_SKETCH); | |
| android_hardware_camera_parameters.EFFECT_SKETCH = NULL; | |
| if (Parameters_EFFECT_NEON) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.EFFECT_NEON, Parameters_EFFECT_NEON); | |
| Parameters_EFFECT_NEON = NULL; | |
| if (android_hardware_camera_parameters.EFFECT_NEON) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.EFFECT_NEON); | |
| android_hardware_camera_parameters.EFFECT_NEON = NULL; | |
| if (Parameters_ANTIBANDING_AUTO) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.ANTIBANDING_AUTO, | |
| Parameters_ANTIBANDING_AUTO); | |
| Parameters_ANTIBANDING_AUTO = NULL; | |
| if (android_hardware_camera_parameters.ANTIBANDING_AUTO) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.ANTIBANDING_AUTO); | |
| android_hardware_camera_parameters.ANTIBANDING_AUTO = NULL; | |
| if (Parameters_ANTIBANDING_50HZ) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.ANTIBANDING_50HZ, | |
| Parameters_ANTIBANDING_50HZ); | |
| Parameters_ANTIBANDING_50HZ = NULL; | |
| if (android_hardware_camera_parameters.ANTIBANDING_50HZ) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.ANTIBANDING_50HZ); | |
| android_hardware_camera_parameters.ANTIBANDING_50HZ = NULL; | |
| if (Parameters_ANTIBANDING_60HZ) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.ANTIBANDING_60HZ, | |
| Parameters_ANTIBANDING_60HZ); | |
| Parameters_ANTIBANDING_60HZ = NULL; | |
| if (android_hardware_camera_parameters.ANTIBANDING_60HZ) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.ANTIBANDING_60HZ); | |
| android_hardware_camera_parameters.ANTIBANDING_60HZ = NULL; | |
| if (Parameters_ANTIBANDING_OFF) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.ANTIBANDING_OFF, | |
| Parameters_ANTIBANDING_OFF); | |
| Parameters_ANTIBANDING_OFF = NULL; | |
| if (android_hardware_camera_parameters.ANTIBANDING_OFF) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.ANTIBANDING_OFF); | |
| android_hardware_camera_parameters.ANTIBANDING_OFF = NULL; | |
| if (Parameters_FLASH_MODE_OFF) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.FLASH_MODE_OFF, | |
| Parameters_FLASH_MODE_OFF); | |
| Parameters_FLASH_MODE_OFF = NULL; | |
| if (android_hardware_camera_parameters.FLASH_MODE_OFF) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.FLASH_MODE_OFF); | |
| android_hardware_camera_parameters.FLASH_MODE_OFF = NULL; | |
| if (Parameters_FLASH_MODE_AUTO) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.FLASH_MODE_AUTO, | |
| Parameters_FLASH_MODE_AUTO); | |
| Parameters_FLASH_MODE_AUTO = NULL; | |
| if (android_hardware_camera_parameters.FLASH_MODE_AUTO) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.FLASH_MODE_AUTO); | |
| android_hardware_camera_parameters.FLASH_MODE_AUTO = NULL; | |
| if (Parameters_FLASH_MODE_ON) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.FLASH_MODE_ON, | |
| Parameters_FLASH_MODE_ON); | |
| Parameters_FLASH_MODE_ON = NULL; | |
| if (android_hardware_camera_parameters.FLASH_MODE_ON) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.FLASH_MODE_ON); | |
| android_hardware_camera_parameters.FLASH_MODE_ON = NULL; | |
| if (Parameters_FLASH_MODE_RED_EYE) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.FLASH_MODE_RED_EYE, | |
| Parameters_FLASH_MODE_RED_EYE); | |
| Parameters_FLASH_MODE_RED_EYE = NULL; | |
| if (android_hardware_camera_parameters.FLASH_MODE_RED_EYE) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.FLASH_MODE_RED_EYE); | |
| android_hardware_camera_parameters.FLASH_MODE_RED_EYE = NULL; | |
| if (Parameters_FLASH_MODE_TORCH) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.FLASH_MODE_TORCH, | |
| Parameters_FLASH_MODE_TORCH); | |
| Parameters_FLASH_MODE_TORCH = NULL; | |
| if (android_hardware_camera_parameters.FLASH_MODE_TORCH) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.FLASH_MODE_TORCH); | |
| android_hardware_camera_parameters.FLASH_MODE_TORCH = NULL; | |
| if (Parameters_SCENE_MODE_AUTO) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_AUTO, | |
| Parameters_SCENE_MODE_AUTO); | |
| Parameters_SCENE_MODE_AUTO = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_AUTO) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_AUTO); | |
| android_hardware_camera_parameters.SCENE_MODE_AUTO = NULL; | |
| if (Parameters_SCENE_MODE_ACTION) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_ACTION, | |
| Parameters_SCENE_MODE_ACTION); | |
| Parameters_SCENE_MODE_ACTION = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_ACTION) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_ACTION); | |
| android_hardware_camera_parameters.SCENE_MODE_ACTION = NULL; | |
| if (Parameters_SCENE_MODE_PORTRAIT) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_PORTRAIT, | |
| Parameters_SCENE_MODE_PORTRAIT); | |
| Parameters_SCENE_MODE_PORTRAIT = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_PORTRAIT) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_PORTRAIT); | |
| android_hardware_camera_parameters.SCENE_MODE_PORTRAIT = NULL; | |
| if (Parameters_SCENE_MODE_LANDSCAPE) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE, | |
| Parameters_SCENE_MODE_LANDSCAPE); | |
| Parameters_SCENE_MODE_LANDSCAPE = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE); | |
| android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE = NULL; | |
| if (Parameters_SCENE_MODE_NIGHT) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_NIGHT, | |
| Parameters_SCENE_MODE_NIGHT); | |
| Parameters_SCENE_MODE_NIGHT = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_NIGHT) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_NIGHT); | |
| android_hardware_camera_parameters.SCENE_MODE_NIGHT = NULL; | |
| if (Parameters_SCENE_MODE_NIGHT_PORTRAIT) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT, | |
| Parameters_SCENE_MODE_NIGHT_PORTRAIT); | |
| Parameters_SCENE_MODE_NIGHT_PORTRAIT = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT); | |
| android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT = NULL; | |
| if (Parameters_SCENE_MODE_THEATRE) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_THEATRE, | |
| Parameters_SCENE_MODE_THEATRE); | |
| Parameters_SCENE_MODE_THEATRE = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_THEATRE) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_THEATRE); | |
| android_hardware_camera_parameters.SCENE_MODE_THEATRE = NULL; | |
| if (Parameters_SCENE_MODE_BEACH) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_BEACH, | |
| Parameters_SCENE_MODE_BEACH); | |
| Parameters_SCENE_MODE_BEACH = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_BEACH) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_BEACH); | |
| android_hardware_camera_parameters.SCENE_MODE_BEACH = NULL; | |
| if (Parameters_SCENE_MODE_SNOW) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_SNOW, | |
| Parameters_SCENE_MODE_SNOW); | |
| Parameters_SCENE_MODE_SNOW = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_SNOW) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_SNOW); | |
| android_hardware_camera_parameters.SCENE_MODE_SNOW = NULL; | |
| if (Parameters_SCENE_MODE_SUNSET) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_SUNSET, | |
| Parameters_SCENE_MODE_SUNSET); | |
| Parameters_SCENE_MODE_SUNSET = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_SUNSET) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_SUNSET); | |
| android_hardware_camera_parameters.SCENE_MODE_SUNSET = NULL; | |
| if (Parameters_SCENE_MODE_STEADYPHOTO) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO, | |
| Parameters_SCENE_MODE_STEADYPHOTO); | |
| Parameters_SCENE_MODE_STEADYPHOTO = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO); | |
| android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO = NULL; | |
| if (Parameters_SCENE_MODE_FIREWORKS) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_FIREWORKS, | |
| Parameters_SCENE_MODE_FIREWORKS); | |
| Parameters_SCENE_MODE_FIREWORKS = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_FIREWORKS) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_FIREWORKS); | |
| android_hardware_camera_parameters.SCENE_MODE_FIREWORKS = NULL; | |
| if (Parameters_SCENE_MODE_SPORTS) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_SPORTS, | |
| Parameters_SCENE_MODE_SPORTS); | |
| Parameters_SCENE_MODE_SPORTS = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_SPORTS) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_SPORTS); | |
| android_hardware_camera_parameters.SCENE_MODE_SPORTS = NULL; | |
| if (Parameters_SCENE_MODE_PARTY) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_PARTY, | |
| Parameters_SCENE_MODE_PARTY); | |
| Parameters_SCENE_MODE_PARTY = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_PARTY) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_PARTY); | |
| android_hardware_camera_parameters.SCENE_MODE_PARTY = NULL; | |
| if (Parameters_SCENE_MODE_CANDLELIGHT) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT, | |
| Parameters_SCENE_MODE_CANDLELIGHT); | |
| Parameters_SCENE_MODE_CANDLELIGHT = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT); | |
| android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT = NULL; | |
| if (Parameters_SCENE_MODE_BARCODE) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_BARCODE, | |
| Parameters_SCENE_MODE_BARCODE); | |
| Parameters_SCENE_MODE_BARCODE = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_BARCODE) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_BARCODE); | |
| android_hardware_camera_parameters.SCENE_MODE_BARCODE = NULL; | |
| if (Parameters_SCENE_MODE_BACKLIGHT) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT, | |
| Parameters_SCENE_MODE_BACKLIGHT); | |
| Parameters_SCENE_MODE_BACKLIGHT = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT); | |
| android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT = NULL; | |
| if (Parameters_SCENE_MODE_FLOWERS) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_FLOWERS, | |
| Parameters_SCENE_MODE_FLOWERS); | |
| Parameters_SCENE_MODE_FLOWERS = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_FLOWERS) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_FLOWERS); | |
| android_hardware_camera_parameters.SCENE_MODE_FLOWERS = NULL; | |
| if (Parameters_SCENE_MODE_AR) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_AR, | |
| Parameters_SCENE_MODE_AR); | |
| Parameters_SCENE_MODE_AR = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_AR) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_AR); | |
| android_hardware_camera_parameters.SCENE_MODE_AR = NULL; | |
| if (Parameters_SCENE_MODE_HDR) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.SCENE_MODE_HDR, | |
| Parameters_SCENE_MODE_HDR); | |
| Parameters_SCENE_MODE_HDR = NULL; | |
| if (android_hardware_camera_parameters.SCENE_MODE_HDR) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.SCENE_MODE_HDR); | |
| android_hardware_camera_parameters.SCENE_MODE_HDR = NULL; | |
| if (Parameters_FOCUS_MODE_AUTO) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_AUTO, | |
| Parameters_FOCUS_MODE_AUTO); | |
| Parameters_FOCUS_MODE_AUTO = NULL; | |
| if (android_hardware_camera_parameters.FOCUS_MODE_AUTO) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_AUTO); | |
| android_hardware_camera_parameters.FOCUS_MODE_AUTO = NULL; | |
| if (Parameters_FOCUS_MODE_INFINITY) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_INFINITY, | |
| Parameters_FOCUS_MODE_INFINITY); | |
| Parameters_FOCUS_MODE_INFINITY = NULL; | |
| if (android_hardware_camera_parameters.FOCUS_MODE_INFINITY) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_INFINITY); | |
| android_hardware_camera_parameters.FOCUS_MODE_INFINITY = NULL; | |
| if (Parameters_FOCUS_MODE_MACRO) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_MACRO, | |
| Parameters_FOCUS_MODE_MACRO); | |
| Parameters_FOCUS_MODE_MACRO = NULL; | |
| if (android_hardware_camera_parameters.FOCUS_MODE_MACRO) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_MACRO); | |
| android_hardware_camera_parameters.FOCUS_MODE_MACRO = NULL; | |
| if (Parameters_FOCUS_MODE_FIXED) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_FIXED, | |
| Parameters_FOCUS_MODE_FIXED); | |
| Parameters_FOCUS_MODE_FIXED = NULL; | |
| if (android_hardware_camera_parameters.FOCUS_MODE_FIXED) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_FIXED); | |
| android_hardware_camera_parameters.FOCUS_MODE_FIXED = NULL; | |
| if (Parameters_FOCUS_MODE_EDOF) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_EDOF, | |
| Parameters_FOCUS_MODE_EDOF); | |
| Parameters_FOCUS_MODE_EDOF = NULL; | |
| if (android_hardware_camera_parameters.FOCUS_MODE_EDOF) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_EDOF); | |
| android_hardware_camera_parameters.FOCUS_MODE_EDOF = NULL; | |
| if (Parameters_FOCUS_MODE_CONTINUOUS_VIDEO) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO, | |
| Parameters_FOCUS_MODE_CONTINUOUS_VIDEO); | |
| Parameters_FOCUS_MODE_CONTINUOUS_VIDEO = NULL; | |
| if (android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO); | |
| android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO = NULL; | |
| if (Parameters_FOCUS_MODE_CONTINUOUS_PICTURE) | |
| (*env)->ReleaseStringUTFChars (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE, | |
| Parameters_FOCUS_MODE_CONTINUOUS_PICTURE); | |
| Parameters_FOCUS_MODE_CONTINUOUS_PICTURE = NULL; | |
| if (android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE) | |
| gst_amc_jni_object_unref (env, | |
| android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE); | |
| android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE = NULL; | |
| if (java_lang_string.klass) | |
| gst_amc_jni_object_unref (env, java_lang_string.klass); | |
| java_lang_string.klass = NULL; | |
| if (java_util_list.klass) | |
| gst_amc_jni_object_unref (env, java_util_list.klass); | |
| java_util_list.klass = NULL; | |
| if (java_util_iterator.klass) | |
| gst_amc_jni_object_unref (env, java_util_iterator.klass); | |
| java_util_iterator.klass = NULL; | |
| if (java_lang_integer.klass) | |
| gst_amc_jni_object_unref (env, java_lang_integer.klass); | |
| java_lang_integer.klass = NULL; | |
| if (org_freedesktop_gstreamer_androidmedia_gstahccallback.klass) { | |
| (*env)->UnregisterNatives (env, | |
| org_freedesktop_gstreamer_androidmedia_gstahccallback.klass); | |
| gst_amc_jni_object_unref (env, | |
| org_freedesktop_gstreamer_androidmedia_gstahccallback.klass); | |
| } | |
| org_freedesktop_gstreamer_androidmedia_gstahccallback.klass = NULL; | |
| } | |
| /* android.hardware.Camera */ | |
| void | |
| gst_ah_camera_add_callback_buffer (GstAHCamera * self, jbyteArray buffer) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| GST_DEBUG ("add callback_buffer %p", buffer); | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera.addCallbackBuffer, buffer); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.addCallbackBuffer: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| } | |
| } | |
| gboolean | |
| gst_ah_camera_auto_focus (GstAHCamera * self, | |
| GstAHCAutoFocusCallback cb, gpointer user_data) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject object = NULL; | |
| gboolean ret = FALSE; | |
| if (cb) { | |
| object = gst_amc_jni_new_object (env, | |
| &err, | |
| FALSE, | |
| org_freedesktop_gstreamer_androidmedia_gstahccallback.klass, | |
| org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor, | |
| *((jlong *) & cb), *((jlong *) & user_data)); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object"); | |
| g_clear_error (&err); | |
| goto done; | |
| } | |
| } | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera.autoFocus, object); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.autoFocus: %s", | |
| err->message); | |
| goto done; | |
| } | |
| ret = TRUE; | |
| done: | |
| if (err) | |
| g_clear_error (&err); | |
| if (object) | |
| gst_amc_jni_object_local_unref (env, object); | |
| return ret; | |
| } | |
| gboolean | |
| gst_ah_camera_cancel_auto_focus (GstAHCamera * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera.cancelAutoFocus); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.cancelAutoFocus: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ah_camera_get_camera_info (gint camera_id, GstAHCCameraInfo * camera_info) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject jcamera_info = NULL; | |
| gboolean ret = FALSE; | |
| jcamera_info = gst_amc_jni_new_object (env, | |
| &err, | |
| FALSE, | |
| android_hardware_camera_camerainfo.klass, | |
| android_hardware_camera_camerainfo.constructor); | |
| if (err) { | |
| GST_ERROR ("Failed to create android.hardware.camera.CameraInfo object"); | |
| g_clear_error (&err); | |
| goto done; | |
| } | |
| gst_amc_jni_call_static_void_method (env, &err, android_hardware_camera.klass, | |
| android_hardware_camera.getCameraInfo, camera_id, jcamera_info); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.getCameraInfo: %s", | |
| err->message); | |
| goto done; | |
| } | |
| camera_info->facing = (*env)->GetIntField (env, jcamera_info, | |
| android_hardware_camera_camerainfo.facing); | |
| if ((*env)->ExceptionCheck (env)) { | |
| GST_ERROR ("Failed to get CameraInfo.facing field"); | |
| (*env)->ExceptionClear (env); | |
| goto done; | |
| } | |
| camera_info->orientation = (*env)->GetIntField (env, jcamera_info, | |
| android_hardware_camera_camerainfo.orientation); | |
| if ((*env)->ExceptionCheck (env)) { | |
| GST_ERROR ("Failed to get CameraInfo.orientation field"); | |
| (*env)->ExceptionClear (env); | |
| goto done; | |
| } | |
| ret = TRUE; | |
| done: | |
| if (err) | |
| g_clear_error (&err); | |
| if (jcamera_info) | |
| gst_amc_jni_object_local_unref (env, jcamera_info); | |
| return ret; | |
| } | |
| gint | |
| gst_ah_camera_get_number_of_cameras (void) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gint num_cameras; | |
| gst_amc_jni_call_static_int_method (env, &err, android_hardware_camera.klass, | |
| android_hardware_camera.getNumberOfCameras, &num_cameras); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.getNumberOfCameras: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return -1; | |
| } | |
| return num_cameras; | |
| } | |
| GstAHCParameters * | |
| gst_ah_camera_get_parameters (GstAHCamera * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject object = NULL; | |
| GstAHCParameters *params = NULL; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera.getParameters, &object); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.getParameters: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| if (!object) { | |
| GST_WARNING ("android.hardware.Camera.getParameter is NULL"); | |
| return NULL; | |
| } | |
| params = g_slice_new0 (GstAHCParameters); | |
| params->object = gst_amc_jni_object_ref (env, object); | |
| gst_amc_jni_object_local_unref (env, object); | |
| if (!params->object) { | |
| GST_ERROR ("Failed to create global reference"); | |
| (*env)->ExceptionClear (env); | |
| g_slice_free (GstAHCParameters, params); | |
| return NULL; | |
| } | |
| GST_DEBUG ("return parameters %p", params->object); | |
| return params; | |
| } | |
| gboolean | |
| gst_ah_camera_lock (GstAHCamera * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera.lock); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.lock: %s", err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| GstAHCamera * | |
| gst_ah_camera_open (gint camera_id) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject object = NULL; | |
| GstAHCamera *camera = NULL; | |
| gst_amc_jni_call_static_object_method (env, &err, | |
| android_hardware_camera.klass, android_hardware_camera.open, &object, | |
| camera_id); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.open: %s", err->message); | |
| g_clear_error (&err); | |
| goto done; | |
| } | |
| if (object) { | |
| camera = g_slice_new0 (GstAHCamera); | |
| camera->object = gst_amc_jni_object_ref (env, object); | |
| gst_amc_jni_object_local_unref (env, object); | |
| if (!camera->object) { | |
| GST_ERROR ("Failed to create global reference"); | |
| (*env)->ExceptionClear (env); | |
| g_slice_free (GstAHCamera, camera); | |
| camera = NULL; | |
| } | |
| } | |
| done: | |
| return camera; | |
| } | |
| gboolean | |
| gst_ah_camera_reconnect (GstAHCamera * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera.reconnect); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.reconnect: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| void | |
| gst_ah_camera_release (GstAHCamera * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera.release); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.release: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| } | |
| } | |
| void | |
| gst_ah_camera_free (GstAHCamera * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| gst_amc_jni_object_unref (env, self->object); | |
| g_slice_free (GstAHCamera, self); | |
| } | |
| gboolean | |
| gst_ah_camera_set_parameters (GstAHCamera * self, GstAHCParameters * params) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera.setParameters, params->object); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.setParameters: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ah_camera_set_error_callback (GstAHCamera * self, GstAHCErrorCallback cb, | |
| gpointer user_data) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject object = NULL; | |
| gboolean ret = FALSE; | |
| if (cb) { | |
| object = gst_amc_jni_new_object (env, | |
| &err, | |
| FALSE, | |
| org_freedesktop_gstreamer_androidmedia_gstahccallback.klass, | |
| org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor, | |
| *((jlong *) & cb), *((jlong *) & user_data)); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object"); | |
| g_clear_error (&err); | |
| goto done; | |
| } | |
| } | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera.setErrorCallback, object); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.setErrorCallback: %s", | |
| err->message); | |
| goto done; | |
| } | |
| ret = TRUE; | |
| done: | |
| if (err) | |
| g_clear_error (&err); | |
| if (object) | |
| gst_amc_jni_object_local_unref (env, object); | |
| return ret; | |
| } | |
| gboolean | |
| gst_ah_camera_set_preview_callback_with_buffer (GstAHCamera * self, | |
| GstAHCPreviewCallback cb, gpointer user_data) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject object = NULL; | |
| gboolean ret = FALSE; | |
| if (cb) { | |
| object = gst_amc_jni_new_object (env, | |
| &err, | |
| FALSE, | |
| org_freedesktop_gstreamer_androidmedia_gstahccallback.klass, | |
| org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor, | |
| *((jlong *) & cb), *((jlong *) & user_data)); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object"); | |
| g_clear_error (&err); | |
| goto done; | |
| } | |
| } | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera.setPreviewCallbackWithBuffer, object); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.setPreviewCallbackWithBuffer: %s", | |
| err->message); | |
| goto done; | |
| } | |
| ret = TRUE; | |
| done: | |
| if (err) | |
| g_clear_error (&err); | |
| if (object) | |
| gst_amc_jni_object_local_unref (env, object); | |
| return ret; | |
| } | |
| void | |
| gst_ah_camera_set_preview_texture (GstAHCamera * self, | |
| GstAmcSurfaceTextureJNI * surfaceTexture) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera.setPreviewTexture, | |
| gst_amc_surface_texture_jni_get_jobject (surfaceTexture)); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.setPreviewTexture: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| } | |
| } | |
| gboolean | |
| gst_ah_camera_start_preview (GstAHCamera * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera.startPreview); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.startPreview: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ah_camera_start_smooth_zoom (GstAHCamera * self, gint value) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera.startSmoothZoom, value); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.startSmoothZoom: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ah_camera_stop_preview (GstAHCamera * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera.stopPreview); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.stopPreview: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ah_camera_stop_smooth_zoom (GstAHCamera * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera.stopSmoothZoom); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.stopSmoothZoom: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ah_camera_unlock (GstAHCamera * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera.unlock); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.unlock: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| /* android.hardware.Camera.Size */ | |
| GstAHCSize * | |
| gst_ahc_size_new (gint width, gint height) | |
| { | |
| GstAHCSize *self = g_slice_new (GstAHCSize); | |
| self->width = width; | |
| self->height = height; | |
| return self; | |
| } | |
| void | |
| gst_ahc_size_free (GstAHCSize * self) | |
| { | |
| g_slice_free (GstAHCSize, self); | |
| } | |
| /* java.lang.String */ | |
| static jboolean | |
| java_lang_string_equals (JNIEnv * env, jstring str, jstring obj) | |
| { | |
| return (*env)->CallBooleanMethod (env, str, java_lang_string.equals, obj); | |
| } | |
| /* java.util.List */ | |
| static jobject | |
| java_util_list_iterator (JNIEnv * env, jobject obj) | |
| { | |
| return (*env)->CallObjectMethod (env, obj, java_util_list.iterator); | |
| } | |
| /* java.util.Iterator */ | |
| static jobject | |
| java_util_iterator_next (JNIEnv * env, jobject obj) | |
| { | |
| return (*env)->CallObjectMethod (env, obj, java_util_iterator.next); | |
| } | |
| static jboolean | |
| java_util_iterator_has_next (JNIEnv * env, jobject obj) | |
| { | |
| return (*env)->CallBooleanMethod (env, obj, java_util_iterator.hasNext); | |
| } | |
| /* java.lang.Integer */ | |
| static jint | |
| java_lang_integer_int_value (JNIEnv * env, jobject obj) | |
| { | |
| return (*env)->CallIntMethod (env, obj, java_lang_integer.intValue); | |
| } | |
| /* android.hardware.Camera.Parameters */ | |
| static const gchar * | |
| _white_balance_to_gchar (JNIEnv * env, jstring white_balance) | |
| { | |
| if (!white_balance) | |
| return NULL; | |
| if (java_lang_string_equals (env, white_balance, | |
| android_hardware_camera_parameters.WHITE_BALANCE_AUTO)) | |
| return Parameters_WHITE_BALANCE_AUTO; | |
| else if (java_lang_string_equals (env, white_balance, | |
| android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT)) | |
| return Parameters_WHITE_BALANCE_INCANDESCENT; | |
| else if (java_lang_string_equals (env, white_balance, | |
| android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT)) | |
| return Parameters_WHITE_BALANCE_FLUORESCENT; | |
| else if (java_lang_string_equals (env, white_balance, | |
| android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT)) | |
| return Parameters_WHITE_BALANCE_WARM_FLUORESCENT; | |
| else if (java_lang_string_equals (env, white_balance, | |
| android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT)) | |
| return Parameters_WHITE_BALANCE_DAYLIGHT; | |
| else if (java_lang_string_equals (env, white_balance, | |
| android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT)) | |
| return Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT; | |
| else if (java_lang_string_equals (env, white_balance, | |
| android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT)) | |
| return Parameters_WHITE_BALANCE_TWILIGHT; | |
| else if (java_lang_string_equals (env, white_balance, | |
| android_hardware_camera_parameters.WHITE_BALANCE_SHADE)) | |
| return Parameters_WHITE_BALANCE_SHADE; | |
| return NULL; | |
| } | |
| static jstring | |
| _white_balance_to_jstring (const gchar * white_balance) | |
| { | |
| if (!white_balance) | |
| return NULL; | |
| if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_AUTO)) | |
| return android_hardware_camera_parameters.WHITE_BALANCE_AUTO; | |
| else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_INCANDESCENT)) | |
| return android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT; | |
| else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_FLUORESCENT)) | |
| return android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT; | |
| else if (!g_strcmp0 (white_balance, | |
| Parameters_WHITE_BALANCE_WARM_FLUORESCENT)) | |
| return android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT; | |
| else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_DAYLIGHT)) | |
| return android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT; | |
| else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT)) | |
| return android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT; | |
| else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_TWILIGHT)) | |
| return android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT; | |
| else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_SHADE)) | |
| return android_hardware_camera_parameters.WHITE_BALANCE_SHADE; | |
| return NULL; | |
| } | |
| static const gchar * | |
| _color_effect_to_gchar (JNIEnv * env, jstring color_effect) | |
| { | |
| if (!color_effect) | |
| return NULL; | |
| if (java_lang_string_equals (env, color_effect, | |
| android_hardware_camera_parameters.EFFECT_NONE)) | |
| return Parameters_EFFECT_NONE; | |
| else if (java_lang_string_equals (env, color_effect, | |
| android_hardware_camera_parameters.EFFECT_MONO)) | |
| return Parameters_EFFECT_MONO; | |
| else if (java_lang_string_equals (env, color_effect, | |
| android_hardware_camera_parameters.EFFECT_NEGATIVE)) | |
| return Parameters_EFFECT_NEGATIVE; | |
| else if (java_lang_string_equals (env, color_effect, | |
| android_hardware_camera_parameters.EFFECT_SOLARIZE)) | |
| return Parameters_EFFECT_SOLARIZE; | |
| else if (java_lang_string_equals (env, color_effect, | |
| android_hardware_camera_parameters.EFFECT_SEPIA)) | |
| return Parameters_EFFECT_SEPIA; | |
| else if (java_lang_string_equals (env, color_effect, | |
| android_hardware_camera_parameters.EFFECT_POSTERIZE)) | |
| return Parameters_EFFECT_POSTERIZE; | |
| else if (java_lang_string_equals (env, color_effect, | |
| android_hardware_camera_parameters.EFFECT_WHITEBOARD)) | |
| return Parameters_EFFECT_WHITEBOARD; | |
| else if (java_lang_string_equals (env, color_effect, | |
| android_hardware_camera_parameters.EFFECT_BLACKBOARD)) | |
| return Parameters_EFFECT_BLACKBOARD; | |
| else if (java_lang_string_equals (env, color_effect, | |
| android_hardware_camera_parameters.EFFECT_AQUA)) | |
| return Parameters_EFFECT_AQUA; | |
| else if (android_hardware_camera_parameters.EFFECT_EMBOSS != NULL && | |
| java_lang_string_equals (env, color_effect, | |
| android_hardware_camera_parameters.EFFECT_EMBOSS)) | |
| return Parameters_EFFECT_EMBOSS; | |
| else if (android_hardware_camera_parameters.EFFECT_SKETCH != NULL && | |
| java_lang_string_equals (env, color_effect, | |
| android_hardware_camera_parameters.EFFECT_SKETCH)) | |
| return Parameters_EFFECT_SKETCH; | |
| else if (android_hardware_camera_parameters.EFFECT_NEON != NULL && | |
| java_lang_string_equals (env, color_effect, | |
| android_hardware_camera_parameters.EFFECT_NEON)) | |
| return Parameters_EFFECT_NEON; | |
| return NULL; | |
| } | |
| static jstring | |
| _color_effect_to_jstring (const gchar * color_effect) | |
| { | |
| if (!color_effect) | |
| return NULL; | |
| if (!g_strcmp0 (color_effect, Parameters_EFFECT_NONE)) | |
| return android_hardware_camera_parameters.EFFECT_NONE; | |
| else if (!g_strcmp0 (color_effect, Parameters_EFFECT_MONO)) | |
| return android_hardware_camera_parameters.EFFECT_MONO; | |
| else if (!g_strcmp0 (color_effect, Parameters_EFFECT_NEGATIVE)) | |
| return android_hardware_camera_parameters.EFFECT_NEGATIVE; | |
| else if (!g_strcmp0 (color_effect, Parameters_EFFECT_SOLARIZE)) | |
| return android_hardware_camera_parameters.EFFECT_SOLARIZE; | |
| else if (!g_strcmp0 (color_effect, Parameters_EFFECT_SEPIA)) | |
| return android_hardware_camera_parameters.EFFECT_SEPIA; | |
| else if (!g_strcmp0 (color_effect, Parameters_EFFECT_POSTERIZE)) | |
| return android_hardware_camera_parameters.EFFECT_POSTERIZE; | |
| else if (!g_strcmp0 (color_effect, Parameters_EFFECT_WHITEBOARD)) | |
| return android_hardware_camera_parameters.EFFECT_WHITEBOARD; | |
| else if (!g_strcmp0 (color_effect, Parameters_EFFECT_BLACKBOARD)) | |
| return android_hardware_camera_parameters.EFFECT_BLACKBOARD; | |
| else if (!g_strcmp0 (color_effect, Parameters_EFFECT_AQUA)) | |
| return android_hardware_camera_parameters.EFFECT_AQUA; | |
| else if (android_hardware_camera_parameters.EFFECT_EMBOSS != NULL | |
| && !g_strcmp0 (color_effect, Parameters_EFFECT_EMBOSS)) | |
| return android_hardware_camera_parameters.EFFECT_EMBOSS; | |
| else if (android_hardware_camera_parameters.EFFECT_SKETCH != NULL | |
| && !g_strcmp0 (color_effect, Parameters_EFFECT_SKETCH)) | |
| return android_hardware_camera_parameters.EFFECT_SKETCH; | |
| else if (android_hardware_camera_parameters.EFFECT_NEON != NULL | |
| && !g_strcmp0 (color_effect, Parameters_EFFECT_NEON)) | |
| return android_hardware_camera_parameters.EFFECT_NEON; | |
| return NULL; | |
| } | |
| static const gchar * | |
| _antibanding_to_gchar (JNIEnv * env, jstring antibanding) | |
| { | |
| if (!antibanding) | |
| return NULL; | |
| if (java_lang_string_equals (env, antibanding, | |
| android_hardware_camera_parameters.ANTIBANDING_AUTO)) | |
| return Parameters_ANTIBANDING_AUTO; | |
| else if (java_lang_string_equals (env, antibanding, | |
| android_hardware_camera_parameters.ANTIBANDING_50HZ)) | |
| return Parameters_ANTIBANDING_50HZ; | |
| else if (java_lang_string_equals (env, antibanding, | |
| android_hardware_camera_parameters.ANTIBANDING_60HZ)) | |
| return Parameters_ANTIBANDING_60HZ; | |
| else if (java_lang_string_equals (env, antibanding, | |
| android_hardware_camera_parameters.ANTIBANDING_OFF)) | |
| return Parameters_ANTIBANDING_OFF; | |
| return NULL; | |
| } | |
| static jstring | |
| _antibanding_to_jstring (const gchar * antibanding) | |
| { | |
| if (!antibanding) | |
| return NULL; | |
| if (!g_strcmp0 (antibanding, Parameters_ANTIBANDING_AUTO)) | |
| return android_hardware_camera_parameters.ANTIBANDING_AUTO; | |
| else if (!g_strcmp0 (antibanding, Parameters_ANTIBANDING_50HZ)) | |
| return android_hardware_camera_parameters.ANTIBANDING_50HZ; | |
| else if (!g_strcmp0 (antibanding, Parameters_ANTIBANDING_60HZ)) | |
| return android_hardware_camera_parameters.ANTIBANDING_60HZ; | |
| else if (!g_strcmp0 (antibanding, Parameters_ANTIBANDING_OFF)) | |
| return android_hardware_camera_parameters.ANTIBANDING_OFF; | |
| return NULL; | |
| } | |
| static const gchar * | |
| _flash_mode_to_gchar (JNIEnv * env, jstring flash_mode) | |
| { | |
| if (!flash_mode) | |
| return NULL; | |
| if (java_lang_string_equals (env, flash_mode, | |
| android_hardware_camera_parameters.FLASH_MODE_OFF)) | |
| return Parameters_FLASH_MODE_OFF; | |
| else if (java_lang_string_equals (env, flash_mode, | |
| android_hardware_camera_parameters.FLASH_MODE_AUTO)) | |
| return Parameters_FLASH_MODE_AUTO; | |
| else if (java_lang_string_equals (env, flash_mode, | |
| android_hardware_camera_parameters.FLASH_MODE_ON)) | |
| return Parameters_FLASH_MODE_ON; | |
| else if (java_lang_string_equals (env, flash_mode, | |
| android_hardware_camera_parameters.FLASH_MODE_RED_EYE)) | |
| return Parameters_FLASH_MODE_RED_EYE; | |
| else if (java_lang_string_equals (env, flash_mode, | |
| android_hardware_camera_parameters.FLASH_MODE_TORCH)) | |
| return Parameters_FLASH_MODE_TORCH; | |
| return NULL; | |
| } | |
| static jstring | |
| _flash_mode_to_jstring (const gchar * flash_mode) | |
| { | |
| if (!flash_mode) | |
| return NULL; | |
| if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_OFF)) | |
| return android_hardware_camera_parameters.FLASH_MODE_OFF; | |
| else if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_AUTO)) | |
| return android_hardware_camera_parameters.FLASH_MODE_AUTO; | |
| else if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_ON)) | |
| return android_hardware_camera_parameters.FLASH_MODE_ON; | |
| else if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_RED_EYE)) | |
| return android_hardware_camera_parameters.FLASH_MODE_RED_EYE; | |
| else if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_TORCH)) | |
| return android_hardware_camera_parameters.FLASH_MODE_TORCH; | |
| return NULL; | |
| } | |
| static const gchar * | |
| _scene_mode_to_gchar (JNIEnv * env, jstring scene_mode) | |
| { | |
| if (!scene_mode) | |
| return NULL; | |
| if (java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_AUTO)) | |
| return Parameters_SCENE_MODE_AUTO; | |
| else if (java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_ACTION)) | |
| return Parameters_SCENE_MODE_ACTION; | |
| else if (java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_PORTRAIT)) | |
| return Parameters_SCENE_MODE_PORTRAIT; | |
| else if (java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE)) | |
| return Parameters_SCENE_MODE_LANDSCAPE; | |
| else if (java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_NIGHT)) | |
| return Parameters_SCENE_MODE_NIGHT; | |
| else if (java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT)) | |
| return Parameters_SCENE_MODE_NIGHT_PORTRAIT; | |
| else if (java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_THEATRE)) | |
| return Parameters_SCENE_MODE_THEATRE; | |
| else if (java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_BEACH)) | |
| return Parameters_SCENE_MODE_BEACH; | |
| else if (java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_SNOW)) | |
| return Parameters_SCENE_MODE_SNOW; | |
| else if (java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_SUNSET)) | |
| return Parameters_SCENE_MODE_SUNSET; | |
| else if (java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO)) | |
| return Parameters_SCENE_MODE_STEADYPHOTO; | |
| else if (java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_FIREWORKS)) | |
| return Parameters_SCENE_MODE_FIREWORKS; | |
| else if (java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_SPORTS)) | |
| return Parameters_SCENE_MODE_SPORTS; | |
| else if (java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_PARTY)) | |
| return Parameters_SCENE_MODE_PARTY; | |
| else if (java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT)) | |
| return Parameters_SCENE_MODE_CANDLELIGHT; | |
| else if (java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_BARCODE)) | |
| return Parameters_SCENE_MODE_BARCODE; | |
| else if (android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT != NULL && | |
| java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT)) | |
| return Parameters_SCENE_MODE_BACKLIGHT; | |
| else if (android_hardware_camera_parameters.SCENE_MODE_FLOWERS != NULL && | |
| java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_FLOWERS)) | |
| return Parameters_SCENE_MODE_FLOWERS; | |
| else if (android_hardware_camera_parameters.SCENE_MODE_AR != NULL && | |
| java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_AR)) | |
| return Parameters_SCENE_MODE_AR; | |
| else if (android_hardware_camera_parameters.SCENE_MODE_HDR != NULL && | |
| java_lang_string_equals (env, scene_mode, | |
| android_hardware_camera_parameters.SCENE_MODE_HDR)) | |
| return Parameters_SCENE_MODE_HDR; | |
| return NULL; | |
| } | |
| static const jstring | |
| _scene_mode_to_jstring (const gchar * scene_mode) | |
| { | |
| if (!scene_mode) | |
| return NULL; | |
| if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_AUTO)) | |
| return android_hardware_camera_parameters.SCENE_MODE_AUTO; | |
| else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_ACTION)) | |
| return android_hardware_camera_parameters.SCENE_MODE_ACTION; | |
| else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_PORTRAIT)) | |
| return android_hardware_camera_parameters.SCENE_MODE_PORTRAIT; | |
| else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_LANDSCAPE)) | |
| return android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE; | |
| else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_NIGHT)) | |
| return android_hardware_camera_parameters.SCENE_MODE_NIGHT; | |
| else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_NIGHT_PORTRAIT)) | |
| return android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT; | |
| else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_THEATRE)) | |
| return android_hardware_camera_parameters.SCENE_MODE_THEATRE; | |
| else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_BEACH)) | |
| return android_hardware_camera_parameters.SCENE_MODE_BEACH; | |
| else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_SNOW)) | |
| return android_hardware_camera_parameters.SCENE_MODE_SNOW; | |
| else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_SUNSET)) | |
| return android_hardware_camera_parameters.SCENE_MODE_SUNSET; | |
| else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_STEADYPHOTO)) | |
| return android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO; | |
| else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_FIREWORKS)) | |
| return android_hardware_camera_parameters.SCENE_MODE_FIREWORKS; | |
| else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_SPORTS)) | |
| return android_hardware_camera_parameters.SCENE_MODE_SPORTS; | |
| else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_PARTY)) | |
| return android_hardware_camera_parameters.SCENE_MODE_PARTY; | |
| else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_CANDLELIGHT)) | |
| return android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT; | |
| else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_BARCODE)) | |
| return android_hardware_camera_parameters.SCENE_MODE_BARCODE; | |
| else if (android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT != NULL | |
| && !g_strcmp0 (scene_mode, Parameters_SCENE_MODE_BACKLIGHT)) | |
| return android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT; | |
| else if (android_hardware_camera_parameters.SCENE_MODE_FLOWERS != NULL | |
| && !g_strcmp0 (scene_mode, Parameters_SCENE_MODE_FLOWERS)) | |
| return android_hardware_camera_parameters.SCENE_MODE_FLOWERS; | |
| else if (android_hardware_camera_parameters.SCENE_MODE_AR != NULL | |
| && !g_strcmp0 (scene_mode, Parameters_SCENE_MODE_AR)) | |
| return android_hardware_camera_parameters.SCENE_MODE_AR; | |
| else if (android_hardware_camera_parameters.SCENE_MODE_HDR != NULL | |
| && !g_strcmp0 (scene_mode, Parameters_SCENE_MODE_HDR)) | |
| return android_hardware_camera_parameters.SCENE_MODE_HDR; | |
| return NULL; | |
| } | |
| static const gchar * | |
| _focus_mode_to_gchar (JNIEnv * env, jstring focus_mode) | |
| { | |
| if (!focus_mode) | |
| return NULL; | |
| if (java_lang_string_equals (env, focus_mode, | |
| android_hardware_camera_parameters.FOCUS_MODE_AUTO)) | |
| return Parameters_FOCUS_MODE_AUTO; | |
| else if (java_lang_string_equals (env, focus_mode, | |
| android_hardware_camera_parameters.FOCUS_MODE_INFINITY)) | |
| return Parameters_FOCUS_MODE_INFINITY; | |
| else if (java_lang_string_equals (env, focus_mode, | |
| android_hardware_camera_parameters.FOCUS_MODE_MACRO)) | |
| return Parameters_FOCUS_MODE_MACRO; | |
| else if (java_lang_string_equals (env, focus_mode, | |
| android_hardware_camera_parameters.FOCUS_MODE_FIXED)) | |
| return Parameters_FOCUS_MODE_FIXED; | |
| else if (java_lang_string_equals (env, focus_mode, | |
| android_hardware_camera_parameters.FOCUS_MODE_EDOF)) | |
| return Parameters_FOCUS_MODE_EDOF; | |
| else if (java_lang_string_equals (env, focus_mode, | |
| android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) | |
| return Parameters_FOCUS_MODE_CONTINUOUS_VIDEO; | |
| else if (java_lang_string_equals (env, focus_mode, | |
| android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) | |
| return Parameters_FOCUS_MODE_CONTINUOUS_PICTURE; | |
| return NULL; | |
| } | |
| static jstring | |
| _focus_mode_to_jstring (const gchar * focus_mode) | |
| { | |
| if (!focus_mode) | |
| return NULL; | |
| if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_AUTO)) | |
| return android_hardware_camera_parameters.FOCUS_MODE_AUTO; | |
| else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_INFINITY)) | |
| return android_hardware_camera_parameters.FOCUS_MODE_INFINITY; | |
| else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_MACRO)) | |
| return android_hardware_camera_parameters.FOCUS_MODE_MACRO; | |
| else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_FIXED)) | |
| return android_hardware_camera_parameters.FOCUS_MODE_FIXED; | |
| else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_EDOF)) | |
| return android_hardware_camera_parameters.FOCUS_MODE_EDOF; | |
| else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_CONTINUOUS_VIDEO)) | |
| return android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO; | |
| else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_CONTINUOUS_PICTURE)) | |
| return android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE; | |
| return NULL; | |
| } | |
| gchar * | |
| gst_ahc_parameters_flatten (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jstring v_str = NULL; | |
| const gchar *v = NULL; | |
| gchar *ret = NULL; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.flatten, &v_str); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.Parameters.flatten: %s", | |
| err->message); | |
| goto done; | |
| } | |
| v = (*env)->GetStringUTFChars (env, v_str, NULL); | |
| if (!v) { | |
| GST_ERROR ("Failed to convert string to UTF8"); | |
| (*env)->ExceptionClear (env); | |
| goto done; | |
| } | |
| ret = g_strdup (v); | |
| done: | |
| if (err) | |
| g_clear_error (&err); | |
| if (v) | |
| (*env)->ReleaseStringUTFChars (env, v_str, v); | |
| if (v_str) | |
| gst_amc_jni_object_local_unref (env, v_str); | |
| return ret; | |
| } | |
| const gchar * | |
| gst_ahc_parameters_get_antibanding (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| const gchar *ret = NULL; | |
| jstring antibanding; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getAntibanding, &antibanding); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getAntibanding: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| ret = _antibanding_to_gchar (env, antibanding); | |
| if (antibanding) | |
| gst_amc_jni_object_local_unref (env, antibanding); | |
| return ret; | |
| } | |
| const gchar * | |
| gst_ahc_parameters_get_color_effect (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| const gchar *ret = NULL; | |
| jstring color_effect; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getColorEffect, &color_effect); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getColorEffect: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| ret = _color_effect_to_gchar (env, color_effect); | |
| if (color_effect) | |
| gst_amc_jni_object_local_unref (env, color_effect); | |
| return ret; | |
| } | |
| gint | |
| gst_ahc_parameters_get_exposure_compensation (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gint ev; | |
| gst_amc_jni_call_int_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getExposureCompensation, &ev); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getExposureCompensation: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return -1; | |
| } | |
| return ev; | |
| } | |
| gfloat | |
| gst_ahc_parameters_get_exposure_compensation_step (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gfloat step; | |
| gst_amc_jni_call_float_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getExposureCompensationStep, &step); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getExposureCompensationStep: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return 0.0; | |
| } | |
| return step; | |
| } | |
| const gchar * | |
| gst_ahc_parameters_get_flash_mode (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| const gchar *ret = NULL; | |
| jstring flash_mode; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getFlashMode, &flash_mode); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getFlashMode: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| ret = _flash_mode_to_gchar (env, flash_mode); | |
| if (flash_mode) | |
| gst_amc_jni_object_local_unref (env, flash_mode); | |
| return ret; | |
| } | |
| gfloat | |
| gst_ahc_parameters_get_focal_length (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gfloat length; | |
| gst_amc_jni_call_float_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getFocalLength, &length); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getFocalLength: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return 0.0; | |
| } | |
| return length; | |
| } | |
| const gchar * | |
| gst_ahc_parameters_get_focus_mode (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| const gchar *ret = NULL; | |
| jstring focus_mode; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getFocusMode, &focus_mode); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getFocusMode: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| ret = _focus_mode_to_gchar (env, focus_mode); | |
| if (focus_mode) | |
| gst_amc_jni_object_local_unref (env, focus_mode); | |
| return ret; | |
| } | |
| gfloat | |
| gst_ahc_parameters_get_horizontal_view_angle (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gfloat angle; | |
| gst_amc_jni_call_float_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getHorizontalViewAngle, &angle); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getHorizontalViewAngle: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return 0.0; | |
| } | |
| return angle; | |
| } | |
| gint | |
| gst_ahc_parameters_get_max_exposure_compensation (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gint max; | |
| gst_amc_jni_call_int_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getMaxExposureCompensation, &max); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getMaxExposureCompensation: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return 0; | |
| } | |
| return max; | |
| } | |
| gint | |
| gst_ahc_parameters_get_max_zoom (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gint max; | |
| gst_amc_jni_call_int_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getMaxZoom, &max); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getMaxZoom: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return -1; | |
| } | |
| return max; | |
| } | |
| gint | |
| gst_ahc_parameters_get_min_exposure_compensation (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gint min; | |
| gst_amc_jni_call_int_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getMinExposureCompensation, &min); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getMinExposureCompensation: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return 0; | |
| } | |
| return min; | |
| } | |
| gint | |
| gst_ahc_parameters_get_preview_format (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gint format; | |
| gst_amc_jni_call_int_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getPreviewFormat, &format); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getPreviewFormat: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return 0; | |
| } | |
| return format; | |
| } | |
| gboolean | |
| gst_ahc_parameters_get_preview_fps_range (GstAHCParameters * self, | |
| gint * min, gint * max) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gboolean ret = FALSE; | |
| jintArray range = NULL; | |
| jint *fps = NULL; | |
| range = (*env)->NewIntArray (env, 2); | |
| if (!fps) { | |
| (*env)->ExceptionClear (env); | |
| GST_ERROR ("Failed to create array"); | |
| goto done; | |
| } | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getPreviewFpsRange, range); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getPreviewFpsRange: %s", | |
| err->message); | |
| goto done; | |
| } | |
| fps = (*env)->GetIntArrayElements (env, range, NULL); | |
| if ((*env)->ExceptionCheck (env) || !fps) { | |
| (*env)->ExceptionClear (env); | |
| GST_ERROR ("Failed to get array elements"); | |
| goto done; | |
| } | |
| if (min) | |
| *min = fps[0]; | |
| if (max) | |
| *max = fps[1]; | |
| ret = TRUE; | |
| done: | |
| if (err) | |
| g_clear_error (&err); | |
| if (fps) | |
| (*env)->ReleaseIntArrayElements (env, range, fps, JNI_ABORT); | |
| if (range) | |
| gst_amc_jni_object_local_unref (env, range); | |
| return ret; | |
| } | |
| GstAHCSize * | |
| gst_ahc_parameters_get_preview_size (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject jsize = NULL; | |
| GstAHCSize *size = NULL; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getPreviewSize, &jsize); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getPreviewSize: %s", | |
| err->message); | |
| goto done; | |
| } | |
| size = g_slice_new (GstAHCSize); | |
| size->width = (*env)->GetIntField (env, jsize, | |
| android_hardware_camera_size.width); | |
| if ((*env)->ExceptionCheck (env)) { | |
| GST_ERROR ("Failed to get Camera.Size.width field"); | |
| (*env)->ExceptionClear (env); | |
| g_slice_free (GstAHCSize, size); | |
| size = NULL; | |
| goto done; | |
| } | |
| size->height = (*env)->GetIntField (env, jsize, | |
| android_hardware_camera_size.height); | |
| if ((*env)->ExceptionCheck (env)) { | |
| GST_ERROR ("Failed to get Camera.Size.height field"); | |
| (*env)->ExceptionClear (env); | |
| g_slice_free (GstAHCSize, size); | |
| size = NULL; | |
| goto done; | |
| } | |
| done: | |
| if (err) | |
| g_clear_error (&err); | |
| if (jsize) | |
| gst_amc_jni_object_local_unref (env, jsize); | |
| return size; | |
| } | |
| const gchar * | |
| gst_ahc_parameters_get_scene_mode (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| const gchar *ret = NULL; | |
| jstring scene_mode; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getSceneMode, &scene_mode); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getSceneMode: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| ret = _scene_mode_to_gchar (env, scene_mode); | |
| if (scene_mode) | |
| gst_amc_jni_object_local_unref (env, scene_mode); | |
| return ret; | |
| } | |
| GList * | |
| gst_ahc_parameters_get_supported_antibanding (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject list = NULL; | |
| GList *ret = NULL; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getSupportedAntibanding, &list); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getSupportedAntibanding: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| if (list) { | |
| jobject iterator = NULL; | |
| iterator = java_util_list_iterator (env, list); | |
| if (iterator) { | |
| while (java_util_iterator_has_next (env, iterator)) { | |
| jobject str = java_util_iterator_next (env, iterator); | |
| if (str) { | |
| const gchar *value = _antibanding_to_gchar (env, str); | |
| ret = g_list_append (ret, (gchar *) value); | |
| gst_amc_jni_object_local_unref (env, str); | |
| } | |
| } | |
| gst_amc_jni_object_local_unref (env, iterator); | |
| } | |
| gst_amc_jni_object_local_unref (env, list); | |
| } | |
| return ret; | |
| } | |
| void | |
| gst_ahc_parameters_supported_antibanding_free (GList * list) | |
| { | |
| g_list_free (list); | |
| } | |
| GList * | |
| gst_ahc_parameters_get_supported_color_effects (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject list = NULL; | |
| GList *ret = NULL; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getSupportedColorEffects, &list); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getSupportedColorEffects: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| if (list) { | |
| jobject iterator = NULL; | |
| iterator = java_util_list_iterator (env, list); | |
| if (iterator) { | |
| while (java_util_iterator_has_next (env, iterator)) { | |
| jobject str = java_util_iterator_next (env, iterator); | |
| if (str) { | |
| const gchar *value = _color_effect_to_gchar (env, str); | |
| ret = g_list_append (ret, (gchar *) value); | |
| gst_amc_jni_object_local_unref (env, str); | |
| } | |
| } | |
| gst_amc_jni_object_local_unref (env, iterator); | |
| } | |
| gst_amc_jni_object_local_unref (env, list); | |
| } | |
| return ret; | |
| } | |
| void | |
| gst_ahc_parameters_supported_color_effects_free (GList * list) | |
| { | |
| g_list_free (list); | |
| } | |
| GList * | |
| gst_ahc_parameters_get_supported_flash_modes (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject list = NULL; | |
| GList *ret = NULL; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getSupportedFlashModes, &list); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getSupportedFlashModes: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| if (list) { | |
| jobject iterator = NULL; | |
| iterator = java_util_list_iterator (env, list); | |
| if (iterator) { | |
| while (java_util_iterator_has_next (env, iterator)) { | |
| jobject str = java_util_iterator_next (env, iterator); | |
| if (str) { | |
| const gchar *value = _flash_mode_to_gchar (env, str); | |
| ret = g_list_append (ret, (gchar *) value); | |
| gst_amc_jni_object_local_unref (env, str); | |
| } | |
| } | |
| gst_amc_jni_object_local_unref (env, iterator); | |
| } | |
| gst_amc_jni_object_local_unref (env, list); | |
| } | |
| return ret; | |
| } | |
| void | |
| gst_ahc_parameters_supported_flash_modes_free (GList * list) | |
| { | |
| g_list_free (list); | |
| } | |
| GList * | |
| gst_ahc_parameters_get_supported_focus_modes (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject list = NULL; | |
| GList *ret = NULL; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getSupportedFocusModes, &list); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getSupportedFocusModes: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| if (list) { | |
| jobject iterator = NULL; | |
| iterator = java_util_list_iterator (env, list); | |
| if (iterator) { | |
| while (java_util_iterator_has_next (env, iterator)) { | |
| jobject str = java_util_iterator_next (env, iterator); | |
| if (str) { | |
| const gchar *value = _focus_mode_to_gchar (env, str); | |
| ret = g_list_append (ret, (gchar *) value); | |
| gst_amc_jni_object_local_unref (env, str); | |
| } | |
| } | |
| gst_amc_jni_object_local_unref (env, iterator); | |
| } | |
| gst_amc_jni_object_local_unref (env, list); | |
| } | |
| return ret; | |
| } | |
| void | |
| gst_ahc_parameters_supported_focus_modes_free (GList * list) | |
| { | |
| g_list_free (list); | |
| } | |
| GList * | |
| gst_ahc_parameters_get_supported_preview_formats (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject list = NULL; | |
| GList *ret = NULL; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getSupportedPreviewFormats, &list); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewFormats: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| if (list) { | |
| jobject iterator = NULL; | |
| iterator = java_util_list_iterator (env, list); | |
| if (iterator) { | |
| while (java_util_iterator_has_next (env, iterator)) { | |
| jobject integer = java_util_iterator_next (env, iterator); | |
| if (integer) { | |
| jint value = java_lang_integer_int_value (env, integer); | |
| ret = g_list_append (ret, GINT_TO_POINTER (value)); | |
| gst_amc_jni_object_local_unref (env, integer); | |
| } | |
| } | |
| gst_amc_jni_object_local_unref (env, iterator); | |
| } | |
| gst_amc_jni_object_local_unref (env, list); | |
| } | |
| return ret; | |
| } | |
| void | |
| gst_ahc_parameters_supported_preview_formats_free (GList * list) | |
| { | |
| g_list_free (list); | |
| } | |
| GList * | |
| gst_ahc_parameters_get_supported_preview_fps_range (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject list = NULL; | |
| GList *ret = NULL; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getSupportedPreviewFpsRange, &list); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewFpsRange: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| if (list) { | |
| jobject iterator = NULL; | |
| iterator = java_util_list_iterator (env, list); | |
| if (iterator) { | |
| while (java_util_iterator_has_next (env, iterator)) { | |
| jintArray range = java_util_iterator_next (env, iterator); | |
| if (range) { | |
| jint *fps = g_new (jint, 2); | |
| (*env)->GetIntArrayRegion (env, range, 0, 2, fps); | |
| ret = g_list_append (ret, fps); | |
| gst_amc_jni_object_local_unref (env, range); | |
| } | |
| } | |
| gst_amc_jni_object_local_unref (env, iterator); | |
| } | |
| gst_amc_jni_object_local_unref (env, list); | |
| } | |
| return ret; | |
| } | |
| void | |
| gst_ahc_parameters_supported_preview_fps_range_free (GList * list) | |
| { | |
| g_list_foreach (list, (GFunc) g_free, NULL); | |
| g_list_free (list); | |
| } | |
| GList * | |
| gst_ahc_parameters_get_supported_preview_sizes (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject list = NULL; | |
| GList *ret = NULL; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getSupportedPreviewSizes, &list); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewSizes: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| if (list) { | |
| jobject iterator = NULL; | |
| iterator = java_util_list_iterator (env, list); | |
| if (iterator) { | |
| while (java_util_iterator_has_next (env, iterator)) { | |
| jobject jsize = java_util_iterator_next (env, iterator); | |
| if (jsize) { | |
| jint width, height; | |
| width = (*env)->GetIntField (env, jsize, | |
| android_hardware_camera_size.width); | |
| height = (*env)->GetIntField (env, jsize, | |
| android_hardware_camera_size.height); | |
| ret = g_list_append (ret, gst_ahc_size_new (width, height)); | |
| gst_amc_jni_object_local_unref (env, jsize); | |
| } | |
| } | |
| gst_amc_jni_object_local_unref (env, iterator); | |
| } | |
| gst_amc_jni_object_local_unref (env, list); | |
| } | |
| return ret; | |
| } | |
| void | |
| gst_ahc_parameters_supported_preview_sizes_free (GList * list) | |
| { | |
| g_list_foreach (list, (GFunc) gst_ahc_size_free, NULL); | |
| g_list_free (list); | |
| } | |
| GList * | |
| gst_ahc_parameters_get_supported_scene_modes (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject list = NULL; | |
| GList *ret = NULL; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getSupportedSceneModes, &list); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getSupportedSceneModes: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| if (list) { | |
| jobject iterator = NULL; | |
| iterator = java_util_list_iterator (env, list); | |
| if (iterator) { | |
| while (java_util_iterator_has_next (env, iterator)) { | |
| jobject str = java_util_iterator_next (env, iterator); | |
| if (str) { | |
| const gchar *value = _scene_mode_to_gchar (env, str); | |
| ret = g_list_append (ret, (gchar *) value); | |
| gst_amc_jni_object_local_unref (env, str); | |
| } | |
| } | |
| gst_amc_jni_object_local_unref (env, iterator); | |
| } | |
| gst_amc_jni_object_local_unref (env, list); | |
| } | |
| return ret; | |
| } | |
| void | |
| gst_ahc_parameters_supported_scene_modes_free (GList * list) | |
| { | |
| g_list_free (list); | |
| } | |
| GList * | |
| gst_ahc_parameters_get_supported_white_balance (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject list = NULL; | |
| GList *ret = NULL; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getSupportedWhiteBalance, &list); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getSupportedWhiteBalance: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| if (list) { | |
| jobject iterator = NULL; | |
| iterator = java_util_list_iterator (env, list); | |
| if (iterator) { | |
| while (java_util_iterator_has_next (env, iterator)) { | |
| jobject str = java_util_iterator_next (env, iterator); | |
| if (str) { | |
| const gchar *value = _white_balance_to_gchar (env, str); | |
| ret = g_list_append (ret, (gchar *) value); | |
| gst_amc_jni_object_local_unref (env, str); | |
| } | |
| } | |
| gst_amc_jni_object_local_unref (env, iterator); | |
| } | |
| gst_amc_jni_object_local_unref (env, list); | |
| } | |
| return ret; | |
| } | |
| void | |
| gst_ahc_parameters_supported_white_balance_free (GList * list) | |
| { | |
| g_list_free (list); | |
| } | |
| gfloat | |
| gst_ahc_parameters_get_vertical_view_angle (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gfloat angle; | |
| gst_amc_jni_call_float_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getVerticalViewAngle, &angle); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getVerticalViewAngle: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return 0.0; | |
| } | |
| return angle; | |
| } | |
| gboolean | |
| gst_ahc_parameters_get_video_stabilization (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gboolean ret; | |
| gst_amc_jni_call_boolean_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getVideoStabilization, &ret); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getVideoStabilization: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return ret; | |
| } | |
| const gchar * | |
| gst_ahc_parameters_get_white_balance (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| const gchar *ret = NULL; | |
| jstring white_balance; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getWhiteBalance, &white_balance); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getWhiteBalance: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| ret = _white_balance_to_gchar (env, white_balance); | |
| if (white_balance) | |
| gst_amc_jni_object_local_unref (env, white_balance); | |
| return ret; | |
| } | |
| gint | |
| gst_ahc_parameters_get_zoom (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gint zoom; | |
| gst_amc_jni_call_int_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getZoom, &zoom); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getZoom: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return -1; | |
| } | |
| return zoom; | |
| } | |
| GList * | |
| gst_ahc_parameters_get_zoom_ratios (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jobject list = NULL; | |
| GList *ret = NULL; | |
| gst_amc_jni_call_object_method (env, &err, self->object, | |
| android_hardware_camera_parameters.getZoomRatios, &list); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.getZoomRatios: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return NULL; | |
| } | |
| if (list) { | |
| jobject iterator = NULL; | |
| iterator = java_util_list_iterator (env, list); | |
| if (iterator) { | |
| while (java_util_iterator_has_next (env, iterator)) { | |
| jobject integer = java_util_iterator_next (env, iterator); | |
| if (integer) { | |
| jint value = java_lang_integer_int_value (env, integer); | |
| ret = g_list_append (ret, GINT_TO_POINTER (value)); | |
| gst_amc_jni_object_local_unref (env, integer); | |
| } | |
| } | |
| gst_amc_jni_object_local_unref (env, iterator); | |
| } | |
| gst_amc_jni_object_local_unref (env, list); | |
| } | |
| return ret; | |
| } | |
| void | |
| gst_ahc_parameters_zoom_ratios_free (GList * list) | |
| { | |
| g_list_free (list); | |
| } | |
| gboolean | |
| gst_ahc_parameters_is_smooth_zoom_supported (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gboolean supported; | |
| gst_amc_jni_call_boolean_method (env, &err, self->object, | |
| android_hardware_camera_parameters.isSmoothZoomSupported, &supported); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.isSmoothZoomSupported: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return supported; | |
| } | |
| gboolean | |
| gst_ahc_parameters_is_video_stabilization_supported (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gboolean supported; | |
| gst_amc_jni_call_boolean_method (env, &err, self->object, | |
| android_hardware_camera_parameters.isVideoStabilizationSupported, | |
| &supported); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.isVideoStabilizationSupported: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return supported; | |
| } | |
| gboolean | |
| gst_ahc_parameters_is_zoom_supported (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gboolean supported; | |
| gst_amc_jni_call_boolean_method (env, &err, self->object, | |
| android_hardware_camera_parameters.isZoomSupported, &supported); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.isZoomSupported: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return supported; | |
| } | |
| gboolean | |
| gst_ahc_parameters_set_antibanding (GstAHCParameters * self, | |
| const gchar * value) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jstring antibanding; | |
| antibanding = _antibanding_to_jstring (value); | |
| if (!antibanding) | |
| return FALSE; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera_parameters.setAntibanding, antibanding); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.setAntibanding: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ahc_parameters_set_color_effect (GstAHCParameters * self, | |
| const gchar * value) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jstring color_effect; | |
| color_effect = _color_effect_to_jstring (value); | |
| if (!color_effect) | |
| return FALSE; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera_parameters.setColorEffect, color_effect); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.setColorEffect: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ahc_parameters_set_exposure_compensation (GstAHCParameters * self, | |
| gint value) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera_parameters.setExposureCompensation, value); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.setExposureCompensation: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ahc_parameters_set_flash_mode (GstAHCParameters * self, const gchar * value) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jstring flash_mode; | |
| flash_mode = _flash_mode_to_jstring (value); | |
| if (!flash_mode) | |
| return FALSE; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera_parameters.setFlashMode, flash_mode); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.setFlashMode: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ahc_parameters_set_focus_mode (GstAHCParameters * self, const gchar * value) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jstring focus_mode; | |
| focus_mode = _focus_mode_to_jstring (value); | |
| if (!focus_mode) | |
| return FALSE; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera_parameters.setFocusMode, focus_mode); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.setFocusMode: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ahc_parameters_set_preview_format (GstAHCParameters * self, gint format) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera_parameters.setPreviewFormat, format); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.setPreviewFormat: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ahc_parameters_set_preview_fps_range (GstAHCParameters * self, | |
| gint min, gint max) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera_parameters.setPreviewFpsRange, min, max); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.setPreviewFpsRange: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ahc_parameters_set_preview_size (GstAHCParameters * self, | |
| gint width, gint height) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera_parameters.setPreviewSize, width, height); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.setPreviewSize: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ahc_parameters_set_scene_mode (GstAHCParameters * self, const gchar * value) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jstring scene_mode; | |
| scene_mode = _scene_mode_to_jstring (value); | |
| if (!scene_mode) | |
| return FALSE; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera_parameters.setSceneMode, scene_mode); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.setSceneMode: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ahc_parameters_set_video_stabilization (GstAHCParameters * self, | |
| gboolean toggle) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera_parameters.setVideoStabilization, toggle); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.setVideoStabilization: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ahc_parameters_set_white_balance (GstAHCParameters * self, | |
| const gchar * value) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jstring white_balance; | |
| white_balance = _white_balance_to_jstring (value); | |
| if (!white_balance) | |
| return FALSE; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera_parameters.setWhiteBalance, white_balance); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.setWhiteBalance: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ahc_parameters_set_zoom (GstAHCParameters * self, gint value) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera_parameters.setZoom, value); | |
| if (err) { | |
| GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setZoom: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| return FALSE; | |
| } | |
| return TRUE; | |
| } | |
| gboolean | |
| gst_ahc_parameters_unflatten (GstAHCParameters * self, const gchar * flattened) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| GError *err = NULL; | |
| jstring v_str = NULL; | |
| gboolean ret = TRUE; | |
| v_str = (*env)->NewStringUTF (env, flattened); | |
| if (v_str == NULL) | |
| return FALSE; | |
| gst_amc_jni_call_void_method (env, &err, self->object, | |
| android_hardware_camera_parameters.unflatten, v_str); | |
| if (err) { | |
| GST_ERROR | |
| ("Failed to call android.hardware.Camera.Parameters.unflatten: %s", | |
| err->message); | |
| g_clear_error (&err); | |
| ret = FALSE; | |
| } | |
| gst_amc_jni_object_local_unref (env, self->object); | |
| return ret; | |
| } | |
| void | |
| gst_ahc_parameters_free (GstAHCParameters * self) | |
| { | |
| JNIEnv *env = gst_amc_jni_get_env (); | |
| g_return_if_fail (self != NULL); | |
| g_return_if_fail (self->object != NULL); | |
| GST_DEBUG ("freeing parameters %p", self->object); | |
| gst_amc_jni_object_unref (env, self->object); | |
| g_slice_free (GstAHCParameters, self); | |
| } |