mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-02 22:46:35 +00:00
c9d9042aff
Instead of just ignoring that error and then calling JNI functions with NULL, which will kill the virtual machine. The error handling here needs some further improvements though, errors in more places are just ignored.
3884 lines
124 KiB
C
3884 lines
124 KiB
C
/*
|
|
* 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"
|
|
#include "stdio.h"
|
|
|
|
GST_DEBUG_CATEGORY_STATIC (ahc_debug);
|
|
#define GST_CAT_DEFAULT ahc_debug
|
|
|
|
#define GST_DVM_STATIC_CALL(error_statement, type, k, method, ...) \
|
|
(*env)->CallStatic##type##Method (env, k.klass, k.method, ## __VA_ARGS__); \
|
|
if ((*env)->ExceptionCheck (env)) { \
|
|
GST_ERROR ("Failed to call Java method"); \
|
|
(*env)->ExceptionDescribe (env); \
|
|
(*env)->ExceptionClear (env); \
|
|
error_statement; \
|
|
}
|
|
|
|
#define GST_DVM_CALL(error_statement, obj, type, k, method, ...) \
|
|
(*env)->Call##type##Method (env, obj, k.method, ## __VA_ARGS__); \
|
|
if ((*env)->ExceptionCheck (env)) { \
|
|
GST_ERROR ("Failed to call Java method"); \
|
|
(*env)->ExceptionDescribe (env); \
|
|
(*env)->ExceptionClear (env); \
|
|
error_statement; \
|
|
}
|
|
|
|
|
|
|
|
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 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 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_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_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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (env, local);
|
|
}
|
|
|
|
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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (env, local);
|
|
}
|
|
|
|
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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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 =
|
|
(*env)->NewGlobalRef (env, local);
|
|
(*env)->DeleteLocalRef (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_class (env, &err,
|
|
"org/freedesktop/gstreamer/androidmedia/GstAhcCallback");
|
|
}
|
|
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 get android.hardware.Camera class: %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)
|
|
(*env)->DeleteGlobalRef (env, android_hardware_camera.klass);
|
|
android_hardware_camera.klass = NULL;
|
|
|
|
if (android_hardware_camera_camerainfo.klass)
|
|
(*env)->DeleteGlobalRef (env, android_hardware_camera_camerainfo.klass);
|
|
android_hardware_camera_camerainfo.klass = NULL;
|
|
|
|
if (android_hardware_camera_size.klass)
|
|
(*env)->DeleteGlobalRef (env, android_hardware_camera_size.klass);
|
|
android_hardware_camera_size.klass = NULL;
|
|
|
|
if (android_hardware_camera_parameters.klass)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (env,
|
|
android_hardware_camera_parameters.EFFECT_AQUA);
|
|
android_hardware_camera_parameters.EFFECT_AQUA = 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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (env,
|
|
android_hardware_camera_parameters.SCENE_MODE_BARCODE);
|
|
android_hardware_camera_parameters.SCENE_MODE_BARCODE = 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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (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)
|
|
(*env)->DeleteGlobalRef (env,
|
|
android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
|
|
android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE = NULL;
|
|
|
|
if (java_lang_string.klass)
|
|
(*env)->DeleteGlobalRef (env, java_lang_string.klass);
|
|
java_lang_string.klass = NULL;
|
|
|
|
if (java_util_list.klass)
|
|
(*env)->DeleteGlobalRef (env, java_util_list.klass);
|
|
java_util_list.klass = NULL;
|
|
|
|
if (java_util_iterator.klass)
|
|
(*env)->DeleteGlobalRef (env, java_util_iterator.klass);
|
|
java_util_iterator.klass = NULL;
|
|
|
|
if (java_lang_integer.klass)
|
|
(*env)->DeleteGlobalRef (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);
|
|
(*env)->DeleteGlobalRef (env,
|
|
org_freedesktop_gstreamer_androidmedia_gstahccallback.klass);
|
|
}
|
|
org_freedesktop_gstreamer_androidmedia_gstahccallback.klass = NULL;
|
|
}
|
|
|
|
/* android.hardware.Camera */
|
|
#define AHC_CALL(error_statement, type, method, ...) \
|
|
GST_DVM_CALL (error_statement, self->object, type, android_hardware_camera, \
|
|
method, ## __VA_ARGS__);
|
|
#define AHC_STATIC_CALL(error_statement, type, method, ...) \
|
|
GST_DVM_STATIC_CALL (error_statement, type, android_hardware_camera, \
|
|
method, ## __VA_ARGS__);
|
|
|
|
void
|
|
gst_ah_camera_add_callback_buffer (GstAHCamera * self, jbyteArray buffer)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
|
|
GST_DEBUG ("add callback_buffer %p", buffer);
|
|
|
|
AHC_CALL (, Void, addCallbackBuffer, buffer);
|
|
}
|
|
|
|
gboolean
|
|
gst_ah_camera_auto_focus (GstAHCamera * self,
|
|
GstAHCAutoFocusCallback cb, gpointer user_data)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
jobject object = NULL;
|
|
gboolean ret = FALSE;
|
|
|
|
if (cb) {
|
|
object = (*env)->NewObject (env,
|
|
org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
|
|
org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
|
|
*((jlong *) & cb), *((jlong *) & user_data));
|
|
if (!object) {
|
|
GST_ERROR ("Failed to create callback object");
|
|
(*env)->ExceptionClear (env);
|
|
goto done;
|
|
}
|
|
}
|
|
|
|
AHC_CALL (goto done, Void, autoFocus, object);
|
|
|
|
ret = TRUE;
|
|
done:
|
|
if (object)
|
|
(*env)->DeleteLocalRef (env, object);
|
|
|
|
return ret;
|
|
}
|
|
|
|
gboolean
|
|
gst_ah_camera_cancel_auto_focus (GstAHCamera * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
|
|
AHC_CALL (return FALSE, Void, cancelAutoFocus);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ah_camera_get_camera_info (gint camera_id, GstAHCCameraInfo * camera_info)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
jobject jcamera_info = NULL;
|
|
gboolean ret = FALSE;
|
|
|
|
jcamera_info = (*env)->NewObject (env,
|
|
android_hardware_camera_camerainfo.klass,
|
|
android_hardware_camera_camerainfo.constructor);
|
|
if (!jcamera_info) {
|
|
GST_ERROR ("Failed to call Java method");
|
|
(*env)->ExceptionClear (env);
|
|
goto done;
|
|
}
|
|
|
|
AHC_STATIC_CALL (goto done, Void, getCameraInfo, camera_id, jcamera_info);
|
|
|
|
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 (jcamera_info)
|
|
(*env)->DeleteLocalRef (env, jcamera_info);
|
|
|
|
return ret;
|
|
}
|
|
|
|
gint
|
|
gst_ah_camera_get_number_of_cameras (void)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
gint num_cameras;
|
|
|
|
num_cameras = AHC_STATIC_CALL (return -1, Int, getNumberOfCameras);
|
|
|
|
return num_cameras;
|
|
}
|
|
|
|
GstAHCParameters *
|
|
gst_ah_camera_get_parameters (GstAHCamera * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
jobject object = NULL;
|
|
GstAHCParameters *params = NULL;
|
|
|
|
object = AHC_CALL (return NULL, Object, getParameters);
|
|
if (object) {
|
|
params = g_slice_new0 (GstAHCParameters);
|
|
params->object = (*env)->NewGlobalRef (env, object);
|
|
(*env)->DeleteLocalRef (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 ();
|
|
|
|
AHC_CALL (return FALSE, Void, lock);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
GstAHCamera *
|
|
gst_ah_camera_open (gint camera_id)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
jobject object = NULL;
|
|
GstAHCamera *camera = NULL;
|
|
|
|
object = AHC_STATIC_CALL (goto done, Object, open, camera_id);
|
|
if (object) {
|
|
camera = g_slice_new0 (GstAHCamera);
|
|
camera->object = (*env)->NewGlobalRef (env, object);
|
|
(*env)->DeleteLocalRef (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 ();
|
|
|
|
AHC_CALL (return FALSE, Void, reconnect);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void
|
|
gst_ah_camera_release (GstAHCamera * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
|
|
AHC_CALL (, Void, release);
|
|
}
|
|
|
|
void
|
|
gst_ah_camera_free (GstAHCamera * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
|
|
(*env)->DeleteGlobalRef (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 ();
|
|
|
|
AHC_CALL (return FALSE, Void, setParameters, params->object);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ah_camera_set_error_callback (GstAHCamera * self, GstAHCErrorCallback cb,
|
|
gpointer user_data)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
jobject object = NULL;
|
|
gboolean ret = FALSE;
|
|
|
|
if (cb) {
|
|
object = (*env)->NewObject (env,
|
|
org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
|
|
org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
|
|
*((jlong *) & cb), *((jlong *) & user_data));
|
|
if (!object) {
|
|
GST_ERROR ("Failed to create callback object");
|
|
(*env)->ExceptionClear (env);
|
|
goto done;
|
|
}
|
|
}
|
|
|
|
AHC_CALL (goto done, Void, setErrorCallback, object);
|
|
|
|
ret = TRUE;
|
|
done:
|
|
if (object)
|
|
(*env)->DeleteLocalRef (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 ();
|
|
jobject object = NULL;
|
|
gboolean ret = FALSE;
|
|
|
|
if (cb) {
|
|
object = (*env)->NewObject (env,
|
|
org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
|
|
org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
|
|
*((jlong *) & cb), *((jlong *) & user_data));
|
|
if (!object) {
|
|
GST_ERROR ("Failed to create callback object");
|
|
(*env)->ExceptionClear (env);
|
|
goto done;
|
|
}
|
|
}
|
|
|
|
AHC_CALL (goto done, Void, setPreviewCallbackWithBuffer, object);
|
|
|
|
ret = TRUE;
|
|
done:
|
|
if (object)
|
|
(*env)->DeleteLocalRef (env, object);
|
|
|
|
return ret;
|
|
}
|
|
|
|
void
|
|
gst_ah_camera_set_preview_texture (GstAHCamera * self,
|
|
GstAGSurfaceTexture * surfaceTexture)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
|
|
AHC_CALL (, Void, setPreviewTexture, surfaceTexture->object);
|
|
}
|
|
|
|
gboolean
|
|
gst_ah_camera_start_preview (GstAHCamera * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
|
|
AHC_CALL (return FALSE, Void, startPreview);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ah_camera_start_smooth_zoom (GstAHCamera * self, gint value)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
|
|
AHC_CALL (return FALSE, Void, startSmoothZoom, value);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ah_camera_stop_preview (GstAHCamera * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
|
|
AHC_CALL (return FALSE, Void, stopPreview);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ah_camera_stop_smooth_zoom (GstAHCamera * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
|
|
AHC_CALL (return FALSE, Void, stopSmoothZoom);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ah_camera_unlock (GstAHCamera * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
|
|
AHC_CALL (return FALSE, Void, unlock);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
#undef AHC_CALL
|
|
#undef AHC_STATIC_CALL
|
|
|
|
/* android.hardware.Camera.Size */
|
|
GstAHCSize *
|
|
gst_ahc_size_new (gint width, gint height)
|
|
{
|
|
GstAHCSize *self = g_slice_new0 (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 */
|
|
#define AHCP_CALL(error_statement, type, method, ...) \
|
|
GST_DVM_CALL (error_statement, self->object, type, \
|
|
android_hardware_camera_parameters, method, ## __VA_ARGS__);
|
|
|
|
#define AHCP_STATIC_CALL(error_statement, type, method, ...) \
|
|
GST_DVM_STATIC_CALL (error_statement, type, \
|
|
android_hardware_camera_parameters, method, ## __VA_ARGS__);
|
|
|
|
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;
|
|
|
|
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;
|
|
|
|
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;
|
|
|
|
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;
|
|
|
|
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 ();
|
|
jstring v_str = NULL;
|
|
const gchar *v = NULL;
|
|
gchar *ret = NULL;
|
|
|
|
v_str = AHCP_CALL (goto done, Object, flatten);
|
|
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 (v)
|
|
(*env)->ReleaseStringUTFChars (env, v_str, v);
|
|
if (v_str)
|
|
(*env)->DeleteLocalRef (env, v_str);
|
|
|
|
return ret;
|
|
}
|
|
|
|
const gchar *
|
|
gst_ahc_parameters_get_antibanding (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
const gchar *ret = NULL;
|
|
jstring antibanding;
|
|
|
|
antibanding = AHCP_CALL (return NULL, Object, getAntibanding);
|
|
|
|
ret = _antibanding_to_gchar (env, antibanding);
|
|
|
|
if (antibanding)
|
|
(*env)->DeleteLocalRef (env, antibanding);
|
|
|
|
return ret;
|
|
}
|
|
|
|
const gchar *
|
|
gst_ahc_parameters_get_color_effect (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
const gchar *ret = NULL;
|
|
jstring color_effect;
|
|
|
|
color_effect = AHCP_CALL (return NULL, Object, getColorEffect);
|
|
|
|
ret = _color_effect_to_gchar (env, color_effect);
|
|
|
|
if (color_effect)
|
|
(*env)->DeleteLocalRef (env, color_effect);
|
|
|
|
return ret;
|
|
}
|
|
|
|
gint
|
|
gst_ahc_parameters_get_exposure_compensation (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
gint ev;
|
|
|
|
ev = AHCP_CALL (return -1, Int, getExposureCompensation);
|
|
|
|
return ev;
|
|
}
|
|
|
|
gfloat
|
|
gst_ahc_parameters_get_exposure_compensation_step (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
gfloat step;
|
|
|
|
step = AHCP_CALL (return 0.0, Float, getExposureCompensationStep);
|
|
|
|
return step;
|
|
}
|
|
|
|
const gchar *
|
|
gst_ahc_parameters_get_flash_mode (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
const gchar *ret = NULL;
|
|
jstring flash_mode;
|
|
|
|
flash_mode = AHCP_CALL (return NULL, Object, getFlashMode);
|
|
|
|
ret = _flash_mode_to_gchar (env, flash_mode);
|
|
|
|
if (flash_mode)
|
|
(*env)->DeleteLocalRef (env, flash_mode);
|
|
|
|
return ret;
|
|
}
|
|
|
|
gfloat
|
|
gst_ahc_parameters_get_focal_length (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
gfloat length;
|
|
|
|
length = AHCP_CALL (return 0.0, Float, getFocalLength);
|
|
|
|
return length;
|
|
}
|
|
|
|
const gchar *
|
|
gst_ahc_parameters_get_focus_mode (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
const gchar *ret = NULL;
|
|
jstring focus_mode;
|
|
|
|
focus_mode = AHCP_CALL (return NULL, Object, getFocusMode);
|
|
|
|
ret = _focus_mode_to_gchar (env, focus_mode);
|
|
|
|
if (focus_mode)
|
|
(*env)->DeleteLocalRef (env, focus_mode);
|
|
|
|
return ret;
|
|
}
|
|
|
|
gfloat
|
|
gst_ahc_parameters_get_horizontal_view_angle (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
gfloat angle;
|
|
|
|
angle = AHCP_CALL (return 0.0, Float, getHorizontalViewAngle);
|
|
|
|
return angle;
|
|
}
|
|
|
|
gint
|
|
gst_ahc_parameters_get_max_exposure_compensation (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
gint max;
|
|
|
|
max = AHCP_CALL (return 0, Int, getMaxExposureCompensation);
|
|
|
|
return max;
|
|
}
|
|
|
|
gint
|
|
gst_ahc_parameters_get_max_zoom (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
gint max;
|
|
|
|
max = AHCP_CALL (return -1, Int, getMaxZoom);
|
|
|
|
return max;
|
|
}
|
|
|
|
gint
|
|
gst_ahc_parameters_get_min_exposure_compensation (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
gint min;
|
|
|
|
min = AHCP_CALL (return 0, Int, getMinExposureCompensation);
|
|
|
|
return min;
|
|
}
|
|
|
|
gint
|
|
gst_ahc_parameters_get_preview_format (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
gint format;
|
|
|
|
format = AHCP_CALL (return 0, Int, getPreviewFormat);
|
|
|
|
return format;
|
|
}
|
|
|
|
gboolean
|
|
gst_ahc_parameters_get_preview_fps_range (GstAHCParameters * self,
|
|
gint * min, gint * max)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
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;
|
|
}
|
|
|
|
AHCP_CALL (goto done, Void, getPreviewFpsRange, range);
|
|
|
|
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 (fps)
|
|
(*env)->ReleaseIntArrayElements (env, range, fps, JNI_ABORT);
|
|
if (range)
|
|
(*env)->DeleteLocalRef (env, range);
|
|
|
|
return ret;
|
|
}
|
|
|
|
GstAHCSize *
|
|
gst_ahc_parameters_get_preview_size (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
jobject jsize = NULL;
|
|
GstAHCSize *size = NULL;
|
|
|
|
jsize = AHCP_CALL (goto done, Object, getPreviewSize);
|
|
|
|
size = g_slice_new0 (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 (jsize)
|
|
(*env)->DeleteLocalRef (env, jsize);
|
|
|
|
return size;
|
|
}
|
|
|
|
const gchar *
|
|
gst_ahc_parameters_get_scene_mode (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
const gchar *ret = NULL;
|
|
jstring scene_mode;
|
|
|
|
scene_mode = AHCP_CALL (return NULL, Object, getSceneMode);
|
|
|
|
ret = _scene_mode_to_gchar (env, scene_mode);
|
|
|
|
if (scene_mode)
|
|
(*env)->DeleteLocalRef (env, scene_mode);
|
|
|
|
return ret;
|
|
}
|
|
|
|
GList *
|
|
gst_ahc_parameters_get_supported_antibanding (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
jobject list = NULL;
|
|
GList *ret = NULL;
|
|
|
|
list = AHCP_CALL (return NULL, Object, getSupportedAntibanding);
|
|
|
|
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);
|
|
(*env)->DeleteLocalRef (env, str);
|
|
}
|
|
}
|
|
(*env)->DeleteLocalRef (env, iterator);
|
|
}
|
|
(*env)->DeleteLocalRef (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 ();
|
|
jobject list = NULL;
|
|
GList *ret = NULL;
|
|
|
|
list = AHCP_CALL (return NULL, Object, getSupportedColorEffects);
|
|
|
|
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);
|
|
(*env)->DeleteLocalRef (env, str);
|
|
}
|
|
}
|
|
(*env)->DeleteLocalRef (env, iterator);
|
|
}
|
|
(*env)->DeleteLocalRef (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 ();
|
|
jobject list = NULL;
|
|
GList *ret = NULL;
|
|
|
|
list = AHCP_CALL (return NULL, Object, getSupportedFlashModes);
|
|
|
|
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);
|
|
(*env)->DeleteLocalRef (env, str);
|
|
}
|
|
}
|
|
(*env)->DeleteLocalRef (env, iterator);
|
|
}
|
|
(*env)->DeleteLocalRef (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 ();
|
|
jobject list = NULL;
|
|
GList *ret = NULL;
|
|
|
|
list = AHCP_CALL (return NULL, Object, getSupportedFocusModes);
|
|
|
|
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);
|
|
(*env)->DeleteLocalRef (env, str);
|
|
}
|
|
}
|
|
(*env)->DeleteLocalRef (env, iterator);
|
|
}
|
|
(*env)->DeleteLocalRef (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 ();
|
|
jobject list = NULL;
|
|
GList *ret = NULL;
|
|
|
|
list = AHCP_CALL (return NULL, Object, getSupportedPreviewFormats);
|
|
|
|
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));
|
|
(*env)->DeleteLocalRef (env, integer);
|
|
}
|
|
}
|
|
(*env)->DeleteLocalRef (env, iterator);
|
|
}
|
|
(*env)->DeleteLocalRef (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 ();
|
|
jobject list = NULL;
|
|
GList *ret = NULL;
|
|
|
|
list = AHCP_CALL (return NULL, Object, getSupportedPreviewFpsRange);
|
|
|
|
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);
|
|
(*env)->DeleteLocalRef (env, range);
|
|
}
|
|
}
|
|
(*env)->DeleteLocalRef (env, iterator);
|
|
}
|
|
(*env)->DeleteLocalRef (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 ();
|
|
jobject list = NULL;
|
|
GList *ret = NULL;
|
|
|
|
list = AHCP_CALL (return NULL, Object, getSupportedPreviewSizes);
|
|
|
|
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));
|
|
(*env)->DeleteLocalRef (env, jsize);
|
|
}
|
|
}
|
|
(*env)->DeleteLocalRef (env, iterator);
|
|
}
|
|
(*env)->DeleteLocalRef (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 ();
|
|
jobject list = NULL;
|
|
GList *ret = NULL;
|
|
|
|
list = AHCP_CALL (return NULL, Object, getSupportedSceneModes);
|
|
|
|
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);
|
|
(*env)->DeleteLocalRef (env, str);
|
|
}
|
|
}
|
|
(*env)->DeleteLocalRef (env, iterator);
|
|
}
|
|
(*env)->DeleteLocalRef (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 ();
|
|
jobject list = NULL;
|
|
GList *ret = NULL;
|
|
|
|
list = AHCP_CALL (return NULL, Object, getSupportedWhiteBalance);
|
|
|
|
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);
|
|
(*env)->DeleteLocalRef (env, str);
|
|
}
|
|
}
|
|
(*env)->DeleteLocalRef (env, iterator);
|
|
}
|
|
(*env)->DeleteLocalRef (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 ();
|
|
gfloat angle;
|
|
|
|
angle = AHCP_CALL (return 0.0, Float, getVerticalViewAngle);
|
|
|
|
return angle;
|
|
}
|
|
|
|
gboolean
|
|
gst_ahc_parameters_get_video_stabilization (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
gboolean ret;
|
|
|
|
ret = AHCP_CALL (return FALSE, Boolean, getVideoStabilization);
|
|
|
|
return ret;
|
|
}
|
|
|
|
const gchar *
|
|
gst_ahc_parameters_get_white_balance (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
const gchar *ret = NULL;
|
|
jstring white_balance;
|
|
|
|
white_balance = AHCP_CALL (return NULL, Object, getWhiteBalance);
|
|
|
|
ret = _white_balance_to_gchar (env, white_balance);
|
|
|
|
if (white_balance)
|
|
(*env)->DeleteLocalRef (env, white_balance);
|
|
|
|
return ret;
|
|
}
|
|
|
|
gint
|
|
gst_ahc_parameters_get_zoom (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
gint zoom;
|
|
|
|
zoom = AHCP_CALL (return -1, Int, getZoom);
|
|
|
|
return zoom;
|
|
}
|
|
|
|
GList *
|
|
gst_ahc_parameters_get_zoom_ratios (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
jobject list = NULL;
|
|
GList *ret = NULL;
|
|
|
|
list = AHCP_CALL (return NULL, Object, getZoomRatios);
|
|
|
|
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));
|
|
(*env)->DeleteLocalRef (env, integer);
|
|
}
|
|
}
|
|
(*env)->DeleteLocalRef (env, iterator);
|
|
}
|
|
(*env)->DeleteLocalRef (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 ();
|
|
gboolean supported;
|
|
|
|
supported = AHCP_CALL (return FALSE, Boolean, isSmoothZoomSupported);
|
|
|
|
return supported;
|
|
}
|
|
|
|
gboolean
|
|
gst_ahc_parameters_is_video_stabilization_supported (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
gboolean supported;
|
|
|
|
supported = AHCP_CALL (return FALSE, Boolean, isVideoStabilizationSupported);
|
|
|
|
return supported;
|
|
}
|
|
|
|
gboolean
|
|
gst_ahc_parameters_is_zoom_supported (GstAHCParameters * self)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
gboolean supported;
|
|
|
|
supported = AHCP_CALL (return FALSE, Boolean, isZoomSupported);
|
|
|
|
return supported;
|
|
}
|
|
|
|
gboolean
|
|
gst_ahc_parameters_set_antibanding (GstAHCParameters * self,
|
|
const gchar * value)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
jstring antibanding;
|
|
|
|
antibanding = _antibanding_to_jstring (value);
|
|
if (!antibanding)
|
|
return FALSE;
|
|
|
|
AHCP_CALL (return FALSE, Void, setAntibanding, antibanding);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ahc_parameters_set_color_effect (GstAHCParameters * self,
|
|
const gchar * value)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
jstring color_effect;
|
|
|
|
color_effect = _color_effect_to_jstring (value);
|
|
if (!color_effect)
|
|
return FALSE;
|
|
|
|
AHCP_CALL (return FALSE, Void, setColorEffect, color_effect);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ahc_parameters_set_exposure_compensation (GstAHCParameters * self,
|
|
gint value)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
|
|
AHCP_CALL (return FALSE, Void, setExposureCompensation, value);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ahc_parameters_set_flash_mode (GstAHCParameters * self, const gchar * value)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
jstring flash_mode;
|
|
|
|
flash_mode = _flash_mode_to_jstring (value);
|
|
if (!flash_mode)
|
|
return FALSE;
|
|
|
|
AHCP_CALL (return FALSE, Void, setFlashMode, flash_mode);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ahc_parameters_set_focus_mode (GstAHCParameters * self, const gchar * value)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
jstring focus_mode;
|
|
|
|
focus_mode = _focus_mode_to_jstring (value);
|
|
if (!focus_mode)
|
|
return FALSE;
|
|
|
|
AHCP_CALL (return FALSE, Void, setFocusMode, focus_mode);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ahc_parameters_set_preview_format (GstAHCParameters * self, gint format)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
|
|
AHCP_CALL (return FALSE, Void, setPreviewFormat, format);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ahc_parameters_set_preview_fps_range (GstAHCParameters * self,
|
|
gint min, gint max)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
|
|
AHCP_CALL (return FALSE, Void, setPreviewFpsRange, min, max);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ahc_parameters_set_preview_size (GstAHCParameters * self,
|
|
gint width, gint height)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
|
|
AHCP_CALL (return FALSE, Void, setPreviewSize, width, height);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ahc_parameters_set_scene_mode (GstAHCParameters * self, const gchar * value)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
jstring scene_mode;
|
|
|
|
scene_mode = _scene_mode_to_jstring (value);
|
|
if (!scene_mode)
|
|
return FALSE;
|
|
|
|
AHCP_CALL (return FALSE, Void, setSceneMode, scene_mode);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
gboolean
|
|
gst_ahc_parameters_set_video_stabilization (GstAHCParameters * self,
|
|
gboolean toggle)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
|
|
AHCP_CALL (return FALSE, Void, setVideoStabilization, toggle);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ahc_parameters_set_white_balance (GstAHCParameters * self,
|
|
const gchar * value)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
jstring white_balance;
|
|
|
|
white_balance = _white_balance_to_jstring (value);
|
|
if (!white_balance)
|
|
return FALSE;
|
|
|
|
AHCP_CALL (return FALSE, Void, setWhiteBalance, white_balance);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ahc_parameters_set_zoom (GstAHCParameters * self, gint value)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
|
|
AHCP_CALL (return FALSE, Void, setZoom, value);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
gboolean
|
|
gst_ahc_parameters_unflatten (GstAHCParameters * self, const gchar * flattened)
|
|
{
|
|
JNIEnv *env = gst_amc_jni_get_env ();
|
|
jstring v_str = NULL;
|
|
gboolean ret = TRUE;
|
|
|
|
v_str = (*env)->NewStringUTF (env, flattened);
|
|
if (v_str == NULL)
|
|
return FALSE;
|
|
|
|
AHCP_CALL (ret = FALSE, Void, unflatten, v_str);
|
|
|
|
(*env)->DeleteLocalRef (env, v_str);
|
|
|
|
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);
|
|
|
|
(*env)->DeleteGlobalRef (env, self->object);
|
|
g_slice_free (GstAHCParameters, self);
|
|
}
|