2 * Copyright (C) 2012, Collabora Ltd.
3 * Copyright (C) 2012, Cisco Systems, Inc.
4 * Author: Youness Alaoui <youness.alaoui@collabora.co.uk>
6 * Copyright (C) 2015, Collabora Ltd.
7 * Author: Justin Kim <justin.kim@collabora.com>
9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public
11 * License as published by the Free Software Foundation
12 * version 2.1 of the License.
14 * This library is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Lesser General Public License for more details.
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with this library; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
29 #include "gstjniutils.h"
31 #include "gst-android-hardware-camera.h"
33 GST_DEBUG_CATEGORY_STATIC (ahc_debug);
34 #define GST_CAT_DEFAULT ahc_debug
39 jmethodID addCallbackBuffer;
41 jmethodID cancelAutoFocus;
42 jmethodID getCameraInfo;
43 jmethodID getNumberOfCameras;
44 jmethodID getParameters;
49 jmethodID setErrorCallback;
50 jmethodID setParameters;
51 jmethodID setPreviewCallbackWithBuffer;
52 jmethodID setPreviewTexture;
53 jmethodID startPreview;
54 jmethodID startSmoothZoom;
55 jmethodID stopPreview;
56 jmethodID stopSmoothZoom;
58 } android_hardware_camera = {
64 jmethodID constructor;
67 jint CAMERA_FACING_BACK;
68 jint CAMERA_FACING_FRONT;
69 } android_hardware_camera_camerainfo = {
72 gint CameraInfo_CAMERA_FACING_BACK;
73 gint CameraInfo_CAMERA_FACING_FRONT;
80 } android_hardware_camera_size = {
87 jmethodID getAntibanding;
88 jmethodID getColorEffect;
89 jmethodID getExposureCompensation;
90 jmethodID getExposureCompensationStep;
91 jmethodID getFlashMode;
92 jmethodID getFocalLength;
93 jmethodID getFocusMode;
94 jmethodID getHorizontalViewAngle;
95 jmethodID getMaxExposureCompensation;
97 jmethodID getMinExposureCompensation;
98 jmethodID getPreviewFormat;
99 jmethodID getPreviewFpsRange;
100 jmethodID getPreviewSize;
101 jmethodID getSceneMode;
102 jmethodID getSupportedAntibanding;
103 jmethodID getSupportedColorEffects;
104 jmethodID getSupportedFlashModes;
105 jmethodID getSupportedFocusModes;
106 jmethodID getSupportedPreviewFormats;
107 jmethodID getSupportedPreviewFpsRange;
108 jmethodID getSupportedPreviewSizes;
109 jmethodID getSupportedSceneModes;
110 jmethodID getSupportedWhiteBalance;
111 jmethodID getVerticalViewAngle;
112 jmethodID getVideoStabilization;
113 jmethodID getWhiteBalance;
115 jmethodID getZoomRatios;
116 jmethodID isSmoothZoomSupported;
117 jmethodID isVideoStabilizationSupported;
118 jmethodID isZoomSupported;
119 jmethodID setAntibanding;
120 jmethodID setColorEffect;
121 jmethodID setExposureCompensation;
122 jmethodID setFlashMode;
123 jmethodID setFocusMode;
124 jmethodID setPreviewFormat;
125 jmethodID setPreviewFpsRange;
126 jmethodID setPreviewSize;
127 jmethodID setSceneMode;
128 jmethodID setVideoStabilization;
129 jmethodID setWhiteBalance;
132 jstring WHITE_BALANCE_AUTO;
133 jstring WHITE_BALANCE_INCANDESCENT;
134 jstring WHITE_BALANCE_FLUORESCENT;
135 jstring WHITE_BALANCE_WARM_FLUORESCENT;
136 jstring WHITE_BALANCE_DAYLIGHT;
137 jstring WHITE_BALANCE_CLOUDY_DAYLIGHT;
138 jstring WHITE_BALANCE_TWILIGHT;
139 jstring WHITE_BALANCE_SHADE;
142 jstring EFFECT_NEGATIVE;
143 jstring EFFECT_SOLARIZE;
144 jstring EFFECT_SEPIA;
145 jstring EFFECT_POSTERIZE;
146 jstring EFFECT_WHITEBOARD;
147 jstring EFFECT_BLACKBOARD;
149 jstring ANTIBANDING_AUTO;
150 jstring ANTIBANDING_50HZ;
151 jstring ANTIBANDING_60HZ;
152 jstring ANTIBANDING_OFF;
153 jstring FLASH_MODE_OFF;
154 jstring FLASH_MODE_AUTO;
155 jstring FLASH_MODE_ON;
156 jstring FLASH_MODE_RED_EYE;
157 jstring FLASH_MODE_TORCH;
158 jstring SCENE_MODE_AUTO;
159 jstring SCENE_MODE_ACTION;
160 jstring SCENE_MODE_PORTRAIT;
161 jstring SCENE_MODE_LANDSCAPE;
162 jstring SCENE_MODE_NIGHT;
163 jstring SCENE_MODE_NIGHT_PORTRAIT;
164 jstring SCENE_MODE_THEATRE;
165 jstring SCENE_MODE_BEACH;
166 jstring SCENE_MODE_SNOW;
167 jstring SCENE_MODE_SUNSET;
168 jstring SCENE_MODE_STEADYPHOTO;
169 jstring SCENE_MODE_FIREWORKS;
170 jstring SCENE_MODE_SPORTS;
171 jstring SCENE_MODE_PARTY;
172 jstring SCENE_MODE_CANDLELIGHT;
173 jstring SCENE_MODE_BARCODE;
174 jstring FOCUS_MODE_AUTO;
175 jstring FOCUS_MODE_INFINITY;
176 jstring FOCUS_MODE_MACRO;
177 jstring FOCUS_MODE_FIXED;
178 jstring FOCUS_MODE_EDOF;
179 jstring FOCUS_MODE_CONTINUOUS_VIDEO;
180 jstring FOCUS_MODE_CONTINUOUS_PICTURE;
181 } android_hardware_camera_parameters = {
184 const gchar *Parameters_WHITE_BALANCE_AUTO;
185 const gchar *Parameters_WHITE_BALANCE_INCANDESCENT;
186 const gchar *Parameters_WHITE_BALANCE_FLUORESCENT;
187 const gchar *Parameters_WHITE_BALANCE_WARM_FLUORESCENT;
188 const gchar *Parameters_WHITE_BALANCE_DAYLIGHT;
189 const gchar *Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT;
190 const gchar *Parameters_WHITE_BALANCE_TWILIGHT;
191 const gchar *Parameters_WHITE_BALANCE_SHADE;
192 const gchar *Parameters_EFFECT_NONE;
193 const gchar *Parameters_EFFECT_MONO;
194 const gchar *Parameters_EFFECT_NEGATIVE;
195 const gchar *Parameters_EFFECT_SOLARIZE;
196 const gchar *Parameters_EFFECT_SEPIA;
197 const gchar *Parameters_EFFECT_POSTERIZE;
198 const gchar *Parameters_EFFECT_WHITEBOARD;
199 const gchar *Parameters_EFFECT_BLACKBOARD;
200 const gchar *Parameters_EFFECT_AQUA;
201 const gchar *Parameters_ANTIBANDING_AUTO;
202 const gchar *Parameters_ANTIBANDING_50HZ;
203 const gchar *Parameters_ANTIBANDING_60HZ;
204 const gchar *Parameters_ANTIBANDING_OFF;
205 const gchar *Parameters_FLASH_MODE_OFF;
206 const gchar *Parameters_FLASH_MODE_AUTO;
207 const gchar *Parameters_FLASH_MODE_ON;
208 const gchar *Parameters_FLASH_MODE_RED_EYE;
209 const gchar *Parameters_FLASH_MODE_TORCH;
210 const gchar *Parameters_SCENE_MODE_AUTO;
211 const gchar *Parameters_SCENE_MODE_ACTION;
212 const gchar *Parameters_SCENE_MODE_PORTRAIT;
213 const gchar *Parameters_SCENE_MODE_LANDSCAPE;
214 const gchar *Parameters_SCENE_MODE_NIGHT;
215 const gchar *Parameters_SCENE_MODE_NIGHT_PORTRAIT;
216 const gchar *Parameters_SCENE_MODE_THEATRE;
217 const gchar *Parameters_SCENE_MODE_BEACH;
218 const gchar *Parameters_SCENE_MODE_SNOW;
219 const gchar *Parameters_SCENE_MODE_SUNSET;
220 const gchar *Parameters_SCENE_MODE_STEADYPHOTO;
221 const gchar *Parameters_SCENE_MODE_FIREWORKS;
222 const gchar *Parameters_SCENE_MODE_SPORTS;
223 const gchar *Parameters_SCENE_MODE_PARTY;
224 const gchar *Parameters_SCENE_MODE_CANDLELIGHT;
225 const gchar *Parameters_SCENE_MODE_BARCODE;
226 const gchar *Parameters_FOCUS_MODE_AUTO;
227 const gchar *Parameters_FOCUS_MODE_INFINITY;
228 const gchar *Parameters_FOCUS_MODE_MACRO;
229 const gchar *Parameters_FOCUS_MODE_FIXED;
230 const gchar *Parameters_FOCUS_MODE_EDOF;
231 const gchar *Parameters_FOCUS_MODE_CONTINUOUS_VIDEO;
232 const gchar *Parameters_FOCUS_MODE_CONTINUOUS_PICTURE;
246 } java_util_iterator = {
253 } java_lang_integer = {
260 } java_lang_string = {
266 jmethodID constructor;
267 } org_freedesktop_gstreamer_androidmedia_gstahccallback = {
271 gst_ah_camera_on_preview_frame (JNIEnv * env, jclass klass, jbyteArray data,
272 jobject camera, jlong callback, jlong user_data)
274 GstAHCPreviewCallback cb = (GstAHCPreviewCallback) (gsize) callback;
277 cb (data, (gpointer) (gsize) user_data);
281 gst_ah_camera_on_error (JNIEnv * env, jclass klass, jint error,
282 jobject camera, jlong callback, jlong user_data)
284 GstAHCErrorCallback cb = (GstAHCErrorCallback) (gsize) callback;
287 cb (error, (gpointer) (gsize) user_data);
291 gst_ah_camera_on_auto_focus (JNIEnv * env, jclass klass, jboolean success,
292 jobject camera, jlong callback, jlong user_data)
294 GstAHCAutoFocusCallback cb = (GstAHCAutoFocusCallback) (gsize) callback;
297 cb (success, (gpointer) (gsize) user_data);
300 static JNINativeMethod native_methods[] = {
301 {(gchar *) "gst_ah_camera_on_preview_frame",
302 (gchar *) "([BLandroid/hardware/Camera;JJ)V",
303 (void *) gst_ah_camera_on_preview_frame},
304 {(gchar *) "gst_ah_camera_on_error",
305 (gchar *) "(ILandroid/hardware/Camera;JJ)V",
306 (void *) gst_ah_camera_on_error},
307 // {(gchar *) "gst_ah_camera_on_auto_focus",
308 // (gchar *) "(ZLandroid/hardware/Camera;JJ)V",
309 // (void *) gst_ah_camera_on_auto_focus}
321 env = gst_amc_jni_get_env ();
323 /* android.hardware.Camera */
324 klass = android_hardware_camera.klass =
325 gst_amc_jni_get_class (env, &err, "android/hardware/Camera");
329 android_hardware_camera.addCallbackBuffer =
330 gst_amc_jni_get_method_id (env, &err, klass,
331 "addCallbackBuffer", "([B)V");
333 android_hardware_camera.autoFocus =
334 gst_amc_jni_get_method_id (env, &err, klass,
335 "autoFocus", "(Landroid/hardware/Camera$AutoFocusCallback;)V");
337 android_hardware_camera.cancelAutoFocus =
338 gst_amc_jni_get_method_id (env, &err, klass, "cancelAutoFocus", "()V");
340 android_hardware_camera.getCameraInfo =
341 gst_amc_jni_get_static_method_id (env, &err, klass,
342 "getCameraInfo", "(ILandroid/hardware/Camera$CameraInfo;)V");
344 android_hardware_camera.getNumberOfCameras =
345 gst_amc_jni_get_static_method_id (env, &err, klass,
346 "getNumberOfCameras", "()I");
348 android_hardware_camera.getParameters =
349 gst_amc_jni_get_method_id (env, &err, klass,
350 "getParameters", "()Landroid/hardware/Camera$Parameters;");
352 android_hardware_camera.lock =
353 gst_amc_jni_get_method_id (env, &err, klass, "lock", "()V");
355 android_hardware_camera.open =
356 gst_amc_jni_get_static_method_id (env, &err, klass,
357 "open", "(I)Landroid/hardware/Camera;");
359 android_hardware_camera.reconnect =
360 gst_amc_jni_get_method_id (env, &err, klass, "reconnect", "()V");
362 android_hardware_camera.release =
363 gst_amc_jni_get_method_id (env, &err, klass, "release", "()V");
365 android_hardware_camera.setErrorCallback =
366 gst_amc_jni_get_method_id (env, &err, klass, "setErrorCallback",
367 "(Landroid/hardware/Camera$ErrorCallback;)V");
369 android_hardware_camera.setParameters =
370 gst_amc_jni_get_method_id (env, &err, klass, "setParameters",
371 "(Landroid/hardware/Camera$Parameters;)V");
373 android_hardware_camera.setPreviewCallbackWithBuffer =
374 gst_amc_jni_get_method_id (env, &err, klass,
375 "setPreviewCallbackWithBuffer",
376 "(Landroid/hardware/Camera$PreviewCallback;)V");
378 android_hardware_camera.setPreviewTexture =
379 gst_amc_jni_get_method_id (env, &err, klass,
380 "setPreviewTexture", "(Landroid/graphics/SurfaceTexture;)V");
382 android_hardware_camera.startPreview =
383 gst_amc_jni_get_method_id (env, &err, klass, "startPreview", "()V");
385 android_hardware_camera.startSmoothZoom =
386 gst_amc_jni_get_method_id (env, &err, klass, "startSmoothZoom", "(I)V");
388 android_hardware_camera.stopPreview =
389 gst_amc_jni_get_method_id (env, &err, klass, "stopPreview", "()V");
391 android_hardware_camera.stopPreview =
392 gst_amc_jni_get_method_id (env, &err, klass, "stopPreview", "()V");
394 android_hardware_camera.unlock =
395 gst_amc_jni_get_method_id (env, &err, klass, "unlock", "()V");
397 /* android.hardware.Camera.CameraInfo */
398 klass = android_hardware_camera_camerainfo.klass =
399 gst_amc_jni_get_class (env, &err, "android/hardware/Camera$CameraInfo");
403 android_hardware_camera_camerainfo.constructor =
404 gst_amc_jni_get_method_id (env, &err, klass, "<init>", "()V");
406 android_hardware_camera_camerainfo.facing =
407 gst_amc_jni_get_field_id (env, &err, klass, "facing", "I");
409 android_hardware_camera_camerainfo.orientation =
410 gst_amc_jni_get_field_id (env, &err, klass, "orientation", "I");
414 gst_amc_jni_get_static_field_id (env, &err, klass, "CAMERA_FACING_BACK",
416 if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
417 &android_hardware_camera_camerainfo.CAMERA_FACING_BACK))
419 CameraInfo_CAMERA_FACING_BACK =
420 android_hardware_camera_camerainfo.CAMERA_FACING_BACK;
423 gst_amc_jni_get_static_field_id (env, &err, klass, "CAMERA_FACING_FRONT",
425 if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
426 &android_hardware_camera_camerainfo.CAMERA_FACING_FRONT))
428 CameraInfo_CAMERA_FACING_FRONT =
429 android_hardware_camera_camerainfo.CAMERA_FACING_FRONT;
431 /* android.hardware.Camera.Size */
432 klass = android_hardware_camera_size.klass =
433 gst_amc_jni_get_class (env, &err, "android/hardware/Camera$Size");
437 android_hardware_camera_size.width =
438 gst_amc_jni_get_field_id (env, &err, klass, "width", "I");
439 android_hardware_camera_size.height =
440 gst_amc_jni_get_field_id (env, &err, klass, "height", "I");
442 /* android.hardware.Camera.Parameters */
443 klass = android_hardware_camera_parameters.klass =
444 gst_amc_jni_get_class (env, &err, "android/hardware/Camera$Parameters");
448 android_hardware_camera_parameters.flatten =
449 gst_amc_jni_get_method_id (env, &err, klass, "flatten",
450 "()Ljava/lang/String;");
452 android_hardware_camera_parameters.getAntibanding =
453 gst_amc_jni_get_method_id (env, &err, klass, "getAntibanding",
454 "()Ljava/lang/String;");
456 android_hardware_camera_parameters.getColorEffect =
457 gst_amc_jni_get_method_id (env, &err, klass, "getColorEffect",
458 "()Ljava/lang/String;");
460 android_hardware_camera_parameters.getExposureCompensation =
461 gst_amc_jni_get_method_id (env, &err, klass, "getExposureCompensation",
464 android_hardware_camera_parameters.getExposureCompensationStep =
465 gst_amc_jni_get_method_id (env, &err, klass,
466 "getExposureCompensationStep", "()F");
468 android_hardware_camera_parameters.getFlashMode =
469 gst_amc_jni_get_method_id (env, &err, klass, "getFlashMode",
470 "()Ljava/lang/String;");
472 android_hardware_camera_parameters.getFocalLength =
473 gst_amc_jni_get_method_id (env, &err, klass, "getFocalLength", "()F");
475 android_hardware_camera_parameters.getFocusMode =
476 gst_amc_jni_get_method_id (env, &err, klass, "getFocusMode",
477 "()Ljava/lang/String;");
479 android_hardware_camera_parameters.getHorizontalViewAngle =
480 gst_amc_jni_get_method_id (env, &err, klass, "getHorizontalViewAngle",
483 android_hardware_camera_parameters.getMaxExposureCompensation =
484 gst_amc_jni_get_method_id (env, &err, klass, "getMaxExposureCompensation",
487 android_hardware_camera_parameters.getMaxZoom =
488 gst_amc_jni_get_method_id (env, &err, klass, "getMaxZoom", "()I");
490 android_hardware_camera_parameters.getMinExposureCompensation =
491 gst_amc_jni_get_method_id (env, &err, klass, "getMinExposureCompensation",
494 android_hardware_camera_parameters.getPreviewFormat =
495 gst_amc_jni_get_method_id (env, &err, klass, "getPreviewFormat", "()I");
497 android_hardware_camera_parameters.getPreviewFpsRange =
498 gst_amc_jni_get_method_id (env, &err, klass, "getPreviewFpsRange",
501 android_hardware_camera_parameters.getPreviewSize =
502 gst_amc_jni_get_method_id (env, &err, klass, "getPreviewSize",
503 "()Landroid/hardware/Camera$Size;");
505 android_hardware_camera_parameters.getSceneMode =
506 gst_amc_jni_get_method_id (env, &err, klass, "getSceneMode",
507 "()Ljava/lang/String;");
509 android_hardware_camera_parameters.getSupportedAntibanding =
510 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedAntibanding",
511 "()Ljava/util/List;");
513 android_hardware_camera_parameters.getSupportedColorEffects =
514 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedColorEffects",
515 "()Ljava/util/List;");
517 android_hardware_camera_parameters.getSupportedFlashModes =
518 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedFlashModes",
519 "()Ljava/util/List;");
521 android_hardware_camera_parameters.getSupportedFocusModes =
522 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedFocusModes",
523 "()Ljava/util/List;");
525 android_hardware_camera_parameters.getSupportedPreviewFormats =
526 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedPreviewFormats",
527 "()Ljava/util/List;");
529 android_hardware_camera_parameters.getSupportedPreviewFpsRange =
530 gst_amc_jni_get_method_id (env, &err, klass,
531 "getSupportedPreviewFpsRange", "()Ljava/util/List;");
533 android_hardware_camera_parameters.getSupportedPreviewSizes =
534 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedPreviewSizes",
535 "()Ljava/util/List;");
537 android_hardware_camera_parameters.getSupportedSceneModes =
538 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedSceneModes",
539 "()Ljava/util/List;");
541 android_hardware_camera_parameters.getSupportedWhiteBalance =
542 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedWhiteBalance",
543 "()Ljava/util/List;");
545 android_hardware_camera_parameters.getVerticalViewAngle =
546 gst_amc_jni_get_method_id (env, &err, klass, "getVerticalViewAngle",
549 android_hardware_camera_parameters.getVideoStabilization =
550 gst_amc_jni_get_method_id (env, &err, klass, "getVideoStabilization",
553 android_hardware_camera_parameters.getWhiteBalance =
554 gst_amc_jni_get_method_id (env, &err, klass, "getWhiteBalance",
555 "()Ljava/lang/String;");
557 android_hardware_camera_parameters.getZoom =
558 gst_amc_jni_get_method_id (env, &err, klass, "getZoom", "()I");
560 android_hardware_camera_parameters.getZoomRatios =
561 gst_amc_jni_get_method_id (env, &err, klass, "getZoomRatios",
562 "()Ljava/util/List;");
564 android_hardware_camera_parameters.isSmoothZoomSupported =
565 gst_amc_jni_get_method_id (env, &err, klass, "isSmoothZoomSupported",
568 android_hardware_camera_parameters.isVideoStabilizationSupported =
569 gst_amc_jni_get_method_id (env, &err, klass,
570 "isVideoStabilizationSupported", "()Z");
572 android_hardware_camera_parameters.isZoomSupported =
573 gst_amc_jni_get_method_id (env, &err, klass, "isZoomSupported", "()Z");
575 android_hardware_camera_parameters.setAntibanding =
576 gst_amc_jni_get_method_id (env, &err, klass, "setAntibanding",
577 "(Ljava/lang/String;)V");
579 android_hardware_camera_parameters.setColorEffect =
580 gst_amc_jni_get_method_id (env, &err, klass, "setColorEffect",
581 "(Ljava/lang/String;)V");
583 android_hardware_camera_parameters.setExposureCompensation =
584 gst_amc_jni_get_method_id (env, &err, klass, "setExposureCompensation",
587 android_hardware_camera_parameters.setFlashMode =
588 gst_amc_jni_get_method_id (env, &err, klass, "setFlashMode",
589 "(Ljava/lang/String;)V");
591 android_hardware_camera_parameters.setFocusMode =
592 gst_amc_jni_get_method_id (env, &err, klass, "setFocusMode",
593 "(Ljava/lang/String;)V");
595 android_hardware_camera_parameters.setPreviewFormat =
596 gst_amc_jni_get_method_id (env, &err, klass, "setPreviewFormat", "(I)V");
598 android_hardware_camera_parameters.setPreviewFpsRange =
599 gst_amc_jni_get_method_id (env, &err, klass, "setPreviewFpsRange",
602 android_hardware_camera_parameters.setPreviewSize =
603 gst_amc_jni_get_method_id (env, &err, klass, "setPreviewSize", "(II)V");
605 android_hardware_camera_parameters.setSceneMode =
606 gst_amc_jni_get_method_id (env, &err, klass, "setSceneMode",
607 "(Ljava/lang/String;)V");
609 android_hardware_camera_parameters.setWhiteBalance =
610 gst_amc_jni_get_method_id (env, &err, klass, "setWhiteBalance",
611 "(Ljava/lang/String;)V");
613 android_hardware_camera_parameters.setVideoStabilization =
614 gst_amc_jni_get_method_id (env, &err, klass, "setVideoStabilization",
617 android_hardware_camera_parameters.setZoom =
618 gst_amc_jni_get_method_id (env, &err, klass, "setZoom", "(I)V");
620 android_hardware_camera_parameters.unflatten =
621 gst_amc_jni_get_method_id (env, &err, klass, "unflatten",
622 "(Ljava/lang/String;)V");
625 gst_amc_jni_get_static_field_id (env, &err, klass, "WHITE_BALANCE_AUTO",
626 "Ljava/lang/String;");
629 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
630 &android_hardware_camera_parameters.WHITE_BALANCE_AUTO))
633 Parameters_WHITE_BALANCE_AUTO =
634 (*env)->GetStringUTFChars (env,
635 android_hardware_camera_parameters.WHITE_BALANCE_AUTO, NULL);
637 jobject local = android_hardware_camera_parameters.WHITE_BALANCE_AUTO;
639 android_hardware_camera_parameters.WHITE_BALANCE_AUTO =
640 gst_amc_jni_object_make_global (env, local);
644 gst_amc_jni_get_static_field_id (env, &err, klass,
645 "WHITE_BALANCE_INCANDESCENT", "Ljava/lang/String;");
648 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
649 &android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT))
652 Parameters_WHITE_BALANCE_INCANDESCENT =
653 (*env)->GetStringUTFChars (env,
654 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT, NULL);
657 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT;
659 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT =
660 gst_amc_jni_object_make_global (env, local);
664 gst_amc_jni_get_static_field_id (env, &err, klass,
665 "WHITE_BALANCE_FLUORESCENT", "Ljava/lang/String;");
668 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
669 &android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT))
672 Parameters_WHITE_BALANCE_FLUORESCENT =
673 (*env)->GetStringUTFChars (env,
674 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT, NULL);
677 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT;
679 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT =
680 gst_amc_jni_object_make_global (env, local);
684 gst_amc_jni_get_static_field_id (env, &err, klass,
685 "WHITE_BALANCE_WARM_FLUORESCENT", "Ljava/lang/String;");
688 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
689 &android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT))
692 Parameters_WHITE_BALANCE_WARM_FLUORESCENT =
693 (*env)->GetStringUTFChars (env,
694 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT, NULL);
697 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT;
699 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT =
700 gst_amc_jni_object_make_global (env, local);
704 gst_amc_jni_get_static_field_id (env, &err, klass,
705 "WHITE_BALANCE_DAYLIGHT", "Ljava/lang/String;");
708 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
709 &android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT))
712 Parameters_WHITE_BALANCE_DAYLIGHT =
713 (*env)->GetStringUTFChars (env,
714 android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT, NULL);
716 jobject local = android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT;
718 android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT =
719 gst_amc_jni_object_make_global (env, local);
723 gst_amc_jni_get_static_field_id (env, &err, klass,
724 "WHITE_BALANCE_CLOUDY_DAYLIGHT", "Ljava/lang/String;");
727 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
728 &android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT))
730 Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT =
731 (*env)->GetStringUTFChars (env,
732 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT, NULL);
735 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT;
737 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT =
738 gst_amc_jni_object_make_global (env, local);
742 gst_amc_jni_get_static_field_id (env, &err, klass,
743 "WHITE_BALANCE_TWILIGHT", "Ljava/lang/String;");
746 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
747 &android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT))
749 Parameters_WHITE_BALANCE_TWILIGHT =
750 (*env)->GetStringUTFChars (env,
751 android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT, NULL);
753 jobject local = android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT;
755 android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT =
756 gst_amc_jni_object_make_global (env, local);
760 gst_amc_jni_get_static_field_id (env, &err, klass, "WHITE_BALANCE_SHADE",
761 "Ljava/lang/String;");
764 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
765 &android_hardware_camera_parameters.WHITE_BALANCE_SHADE))
768 Parameters_WHITE_BALANCE_SHADE =
769 (*env)->GetStringUTFChars (env,
770 android_hardware_camera_parameters.WHITE_BALANCE_SHADE, NULL);
772 jobject local = android_hardware_camera_parameters.WHITE_BALANCE_SHADE;
774 android_hardware_camera_parameters.WHITE_BALANCE_SHADE =
775 gst_amc_jni_object_make_global (env, local);
779 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_NONE",
780 "Ljava/lang/String;");
783 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
784 &android_hardware_camera_parameters.EFFECT_NONE))
787 Parameters_EFFECT_NONE =
788 (*env)->GetStringUTFChars (env,
789 android_hardware_camera_parameters.EFFECT_NONE, NULL);
791 jobject local = android_hardware_camera_parameters.EFFECT_NONE;
793 android_hardware_camera_parameters.EFFECT_NONE =
794 gst_amc_jni_object_make_global (env, local);
798 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_MONO",
799 "Ljava/lang/String;");
802 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
803 &android_hardware_camera_parameters.EFFECT_MONO))
806 Parameters_EFFECT_MONO =
807 (*env)->GetStringUTFChars (env,
808 android_hardware_camera_parameters.EFFECT_MONO, NULL);
810 jobject local = android_hardware_camera_parameters.EFFECT_MONO;
812 android_hardware_camera_parameters.EFFECT_MONO =
813 gst_amc_jni_object_make_global (env, local);
817 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_NEGATIVE",
818 "Ljava/lang/String;");
821 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
822 &android_hardware_camera_parameters.EFFECT_NEGATIVE))
825 Parameters_EFFECT_NEGATIVE =
826 (*env)->GetStringUTFChars (env,
827 android_hardware_camera_parameters.EFFECT_NEGATIVE, NULL);
829 jobject local = android_hardware_camera_parameters.EFFECT_NEGATIVE;
831 android_hardware_camera_parameters.EFFECT_NEGATIVE =
832 gst_amc_jni_object_make_global (env, local);
836 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_SOLARIZE",
837 "Ljava/lang/String;");
840 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
841 &android_hardware_camera_parameters.EFFECT_SOLARIZE))
844 Parameters_EFFECT_SOLARIZE =
845 (*env)->GetStringUTFChars (env,
846 android_hardware_camera_parameters.EFFECT_SOLARIZE, NULL);
848 jobject local = android_hardware_camera_parameters.EFFECT_SOLARIZE;
850 android_hardware_camera_parameters.EFFECT_SOLARIZE =
851 gst_amc_jni_object_make_global (env, local);
855 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_SEPIA",
856 "Ljava/lang/String;");
859 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
860 &android_hardware_camera_parameters.EFFECT_SEPIA))
863 Parameters_EFFECT_SEPIA =
864 (*env)->GetStringUTFChars (env,
865 android_hardware_camera_parameters.EFFECT_SEPIA, NULL);
867 jobject local = android_hardware_camera_parameters.EFFECT_SEPIA;
869 android_hardware_camera_parameters.EFFECT_SEPIA =
870 gst_amc_jni_object_make_global (env, local);
874 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_POSTERIZE",
875 "Ljava/lang/String;");
878 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
879 &android_hardware_camera_parameters.EFFECT_POSTERIZE))
882 Parameters_EFFECT_POSTERIZE =
883 (*env)->GetStringUTFChars (env,
884 android_hardware_camera_parameters.EFFECT_POSTERIZE, NULL);
886 jobject local = android_hardware_camera_parameters.EFFECT_POSTERIZE;
888 android_hardware_camera_parameters.EFFECT_POSTERIZE =
889 gst_amc_jni_object_make_global (env, local);
893 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_WHITEBOARD",
894 "Ljava/lang/String;");
897 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
898 &android_hardware_camera_parameters.EFFECT_WHITEBOARD))
901 Parameters_EFFECT_WHITEBOARD =
902 (*env)->GetStringUTFChars (env,
903 android_hardware_camera_parameters.EFFECT_WHITEBOARD, NULL);
905 jobject local = android_hardware_camera_parameters.EFFECT_WHITEBOARD;
907 android_hardware_camera_parameters.EFFECT_WHITEBOARD =
908 gst_amc_jni_object_make_global (env, local);
912 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_BLACKBOARD",
913 "Ljava/lang/String;");
916 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
917 &android_hardware_camera_parameters.EFFECT_BLACKBOARD))
920 Parameters_EFFECT_BLACKBOARD =
921 (*env)->GetStringUTFChars (env,
922 android_hardware_camera_parameters.EFFECT_BLACKBOARD, NULL);
924 jobject local = android_hardware_camera_parameters.EFFECT_BLACKBOARD;
926 android_hardware_camera_parameters.EFFECT_BLACKBOARD =
927 gst_amc_jni_object_make_global (env, local);
931 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_AQUA",
932 "Ljava/lang/String;");
935 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
936 &android_hardware_camera_parameters.EFFECT_AQUA))
939 Parameters_EFFECT_AQUA =
940 (*env)->GetStringUTFChars (env,
941 android_hardware_camera_parameters.EFFECT_AQUA, NULL);
943 jobject local = android_hardware_camera_parameters.EFFECT_AQUA;
945 android_hardware_camera_parameters.EFFECT_AQUA =
946 gst_amc_jni_object_make_global (env, local);
950 gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_AUTO",
951 "Ljava/lang/String;");
954 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
955 &android_hardware_camera_parameters.ANTIBANDING_AUTO))
958 Parameters_ANTIBANDING_AUTO =
959 (*env)->GetStringUTFChars (env,
960 android_hardware_camera_parameters.ANTIBANDING_AUTO, NULL);
962 jobject local = android_hardware_camera_parameters.ANTIBANDING_AUTO;
964 android_hardware_camera_parameters.ANTIBANDING_AUTO =
965 gst_amc_jni_object_make_global (env, local);
969 gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_50HZ",
970 "Ljava/lang/String;");
973 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
974 &android_hardware_camera_parameters.ANTIBANDING_50HZ))
977 Parameters_ANTIBANDING_50HZ =
978 (*env)->GetStringUTFChars (env,
979 android_hardware_camera_parameters.ANTIBANDING_50HZ, NULL);
981 jobject local = android_hardware_camera_parameters.ANTIBANDING_50HZ;
983 android_hardware_camera_parameters.ANTIBANDING_50HZ =
984 gst_amc_jni_object_make_global (env, local);
988 gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_60HZ",
989 "Ljava/lang/String;");
992 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
993 &android_hardware_camera_parameters.ANTIBANDING_60HZ))
996 Parameters_ANTIBANDING_60HZ =
997 (*env)->GetStringUTFChars (env,
998 android_hardware_camera_parameters.ANTIBANDING_60HZ, NULL);
1000 jobject local = android_hardware_camera_parameters.ANTIBANDING_60HZ;
1002 android_hardware_camera_parameters.ANTIBANDING_60HZ =
1003 gst_amc_jni_object_make_global (env, local);
1007 gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_OFF",
1008 "Ljava/lang/String;");
1011 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1012 &android_hardware_camera_parameters.ANTIBANDING_OFF))
1015 Parameters_ANTIBANDING_OFF =
1016 (*env)->GetStringUTFChars (env,
1017 android_hardware_camera_parameters.ANTIBANDING_OFF, NULL);
1019 jobject local = android_hardware_camera_parameters.ANTIBANDING_OFF;
1021 android_hardware_camera_parameters.ANTIBANDING_OFF =
1022 gst_amc_jni_object_make_global (env, local);
1026 gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_OFF",
1027 "Ljava/lang/String;");
1030 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1031 &android_hardware_camera_parameters.FLASH_MODE_OFF))
1034 Parameters_FLASH_MODE_OFF =
1035 (*env)->GetStringUTFChars (env,
1036 android_hardware_camera_parameters.FLASH_MODE_OFF, NULL);
1038 jobject local = android_hardware_camera_parameters.FLASH_MODE_OFF;
1040 android_hardware_camera_parameters.FLASH_MODE_OFF =
1041 gst_amc_jni_object_make_global (env, local);
1045 gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_AUTO",
1046 "Ljava/lang/String;");
1049 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1050 &android_hardware_camera_parameters.FLASH_MODE_AUTO))
1053 Parameters_FLASH_MODE_AUTO =
1054 (*env)->GetStringUTFChars (env,
1055 android_hardware_camera_parameters.FLASH_MODE_AUTO, NULL);
1057 jobject local = android_hardware_camera_parameters.FLASH_MODE_AUTO;
1059 android_hardware_camera_parameters.FLASH_MODE_AUTO =
1060 gst_amc_jni_object_make_global (env, local);
1064 gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_ON",
1065 "Ljava/lang/String;");
1068 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1069 &android_hardware_camera_parameters.FLASH_MODE_ON))
1072 Parameters_FLASH_MODE_ON =
1073 (*env)->GetStringUTFChars (env,
1074 android_hardware_camera_parameters.FLASH_MODE_ON, NULL);
1076 jobject local = android_hardware_camera_parameters.FLASH_MODE_ON;
1078 android_hardware_camera_parameters.FLASH_MODE_ON =
1079 gst_amc_jni_object_make_global (env, local);
1083 gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_RED_EYE",
1084 "Ljava/lang/String;");
1087 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1088 &android_hardware_camera_parameters.FLASH_MODE_RED_EYE))
1091 Parameters_FLASH_MODE_RED_EYE =
1092 (*env)->GetStringUTFChars (env,
1093 android_hardware_camera_parameters.FLASH_MODE_RED_EYE, NULL);
1095 jobject local = android_hardware_camera_parameters.FLASH_MODE_RED_EYE;
1097 android_hardware_camera_parameters.FLASH_MODE_RED_EYE =
1098 gst_amc_jni_object_make_global (env, local);
1102 gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_TORCH",
1103 "Ljava/lang/String;");
1106 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1107 &android_hardware_camera_parameters.FLASH_MODE_TORCH))
1110 Parameters_FLASH_MODE_TORCH =
1111 (*env)->GetStringUTFChars (env,
1112 android_hardware_camera_parameters.FLASH_MODE_TORCH, NULL);
1114 jobject local = android_hardware_camera_parameters.FLASH_MODE_TORCH;
1116 android_hardware_camera_parameters.FLASH_MODE_TORCH =
1117 gst_amc_jni_object_make_global (env, local);
1121 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_AUTO",
1122 "Ljava/lang/String;");
1125 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1126 &android_hardware_camera_parameters.SCENE_MODE_AUTO))
1129 Parameters_SCENE_MODE_AUTO =
1130 (*env)->GetStringUTFChars (env,
1131 android_hardware_camera_parameters.SCENE_MODE_AUTO, NULL);
1133 jobject local = android_hardware_camera_parameters.SCENE_MODE_AUTO;
1135 android_hardware_camera_parameters.SCENE_MODE_AUTO =
1136 gst_amc_jni_object_make_global (env, local);
1140 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_ACTION",
1141 "Ljava/lang/String;");
1144 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1145 &android_hardware_camera_parameters.SCENE_MODE_ACTION))
1148 Parameters_SCENE_MODE_ACTION =
1149 (*env)->GetStringUTFChars (env,
1150 android_hardware_camera_parameters.SCENE_MODE_ACTION, NULL);
1152 jobject local = android_hardware_camera_parameters.SCENE_MODE_ACTION;
1154 android_hardware_camera_parameters.SCENE_MODE_ACTION =
1155 gst_amc_jni_object_make_global (env, local);
1159 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_PORTRAIT",
1160 "Ljava/lang/String;");
1163 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1164 &android_hardware_camera_parameters.SCENE_MODE_PORTRAIT))
1167 Parameters_SCENE_MODE_PORTRAIT =
1168 (*env)->GetStringUTFChars (env,
1169 android_hardware_camera_parameters.SCENE_MODE_PORTRAIT, NULL);
1171 jobject local = android_hardware_camera_parameters.SCENE_MODE_PORTRAIT;
1173 android_hardware_camera_parameters.SCENE_MODE_PORTRAIT =
1174 gst_amc_jni_object_make_global (env, local);
1178 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_LANDSCAPE",
1179 "Ljava/lang/String;");
1182 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1183 &android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE))
1185 Parameters_SCENE_MODE_LANDSCAPE =
1186 (*env)->GetStringUTFChars (env,
1187 android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE, NULL);
1189 jobject local = android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE;
1191 android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE =
1192 gst_amc_jni_object_make_global (env, local);
1196 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_NIGHT",
1197 "Ljava/lang/String;");
1200 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1201 &android_hardware_camera_parameters.SCENE_MODE_NIGHT))
1204 Parameters_SCENE_MODE_NIGHT =
1205 (*env)->GetStringUTFChars (env,
1206 android_hardware_camera_parameters.SCENE_MODE_NIGHT, NULL);
1208 jobject local = android_hardware_camera_parameters.SCENE_MODE_NIGHT;
1210 android_hardware_camera_parameters.SCENE_MODE_NIGHT =
1211 gst_amc_jni_object_make_global (env, local);
1215 gst_amc_jni_get_static_field_id (env, &err, klass,
1216 "SCENE_MODE_NIGHT_PORTRAIT", "Ljava/lang/String;");
1219 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1220 &android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT))
1222 Parameters_SCENE_MODE_NIGHT_PORTRAIT =
1223 (*env)->GetStringUTFChars (env,
1224 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT, NULL);
1227 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT;
1229 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT =
1230 gst_amc_jni_object_make_global (env, local);
1233 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_THEATRE",
1234 "Ljava/lang/String;");
1237 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1238 &android_hardware_camera_parameters.SCENE_MODE_THEATRE))
1241 Parameters_SCENE_MODE_THEATRE =
1242 (*env)->GetStringUTFChars (env,
1243 android_hardware_camera_parameters.SCENE_MODE_THEATRE, NULL);
1245 jobject local = android_hardware_camera_parameters.SCENE_MODE_THEATRE;
1247 android_hardware_camera_parameters.SCENE_MODE_THEATRE =
1248 gst_amc_jni_object_make_global (env, local);
1252 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_BEACH",
1253 "Ljava/lang/String;");
1256 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1257 &android_hardware_camera_parameters.SCENE_MODE_BEACH))
1260 Parameters_SCENE_MODE_BEACH =
1261 (*env)->GetStringUTFChars (env,
1262 android_hardware_camera_parameters.SCENE_MODE_BEACH, NULL);
1264 jobject local = android_hardware_camera_parameters.SCENE_MODE_BEACH;
1266 android_hardware_camera_parameters.SCENE_MODE_BEACH =
1267 gst_amc_jni_object_make_global (env, local);
1271 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_SNOW",
1272 "Ljava/lang/String;");
1275 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1276 &android_hardware_camera_parameters.SCENE_MODE_SNOW))
1279 Parameters_SCENE_MODE_SNOW =
1280 (*env)->GetStringUTFChars (env,
1281 android_hardware_camera_parameters.SCENE_MODE_SNOW, NULL);
1283 jobject local = android_hardware_camera_parameters.SCENE_MODE_SNOW;
1285 android_hardware_camera_parameters.SCENE_MODE_SNOW =
1286 gst_amc_jni_object_make_global (env, local);
1290 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_SUNSET",
1291 "Ljava/lang/String;");
1294 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1295 &android_hardware_camera_parameters.SCENE_MODE_SUNSET))
1299 Parameters_SCENE_MODE_SUNSET =
1300 (*env)->GetStringUTFChars (env,
1301 android_hardware_camera_parameters.SCENE_MODE_SUNSET, NULL);
1303 jobject local = android_hardware_camera_parameters.SCENE_MODE_SUNSET;
1305 android_hardware_camera_parameters.SCENE_MODE_SUNSET =
1306 gst_amc_jni_object_make_global (env, local);
1310 gst_amc_jni_get_static_field_id (env, &err, klass,
1311 "SCENE_MODE_STEADYPHOTO", "Ljava/lang/String;");
1314 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1315 &android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO))
1319 Parameters_SCENE_MODE_STEADYPHOTO =
1320 (*env)->GetStringUTFChars (env,
1321 android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO, NULL);
1323 jobject local = android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO;
1325 android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO =
1326 gst_amc_jni_object_make_global (env, local);
1330 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_FIREWORKS",
1331 "Ljava/lang/String;");
1334 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1335 &android_hardware_camera_parameters.SCENE_MODE_FIREWORKS))
1338 Parameters_SCENE_MODE_FIREWORKS =
1339 (*env)->GetStringUTFChars (env,
1340 android_hardware_camera_parameters.SCENE_MODE_FIREWORKS, NULL);
1342 jobject local = android_hardware_camera_parameters.SCENE_MODE_FIREWORKS;
1344 android_hardware_camera_parameters.SCENE_MODE_FIREWORKS =
1345 gst_amc_jni_object_make_global (env, local);
1349 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_SPORTS",
1350 "Ljava/lang/String;");
1353 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1354 &android_hardware_camera_parameters.SCENE_MODE_SPORTS))
1358 Parameters_SCENE_MODE_SPORTS =
1359 (*env)->GetStringUTFChars (env,
1360 android_hardware_camera_parameters.SCENE_MODE_SPORTS, NULL);
1362 jobject local = android_hardware_camera_parameters.SCENE_MODE_SPORTS;
1364 android_hardware_camera_parameters.SCENE_MODE_SPORTS =
1365 gst_amc_jni_object_make_global (env, local);
1369 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_PARTY",
1370 "Ljava/lang/String;");
1373 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1374 &android_hardware_camera_parameters.SCENE_MODE_PARTY))
1377 Parameters_SCENE_MODE_PARTY =
1378 (*env)->GetStringUTFChars (env,
1379 android_hardware_camera_parameters.SCENE_MODE_PARTY, NULL);
1381 jobject local = android_hardware_camera_parameters.SCENE_MODE_PARTY;
1383 android_hardware_camera_parameters.SCENE_MODE_PARTY =
1384 gst_amc_jni_object_make_global (env, local);
1388 gst_amc_jni_get_static_field_id (env, &err, klass,
1389 "SCENE_MODE_CANDLELIGHT", "Ljava/lang/String;");
1392 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1393 &android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT))
1396 Parameters_SCENE_MODE_CANDLELIGHT =
1397 (*env)->GetStringUTFChars (env,
1398 android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT, NULL);
1400 jobject local = android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT;
1402 android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT =
1403 gst_amc_jni_object_make_global (env, local);
1408 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_BARCODE",
1409 "Ljava/lang/String;");
1412 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1413 &android_hardware_camera_parameters.SCENE_MODE_BARCODE))
1416 Parameters_SCENE_MODE_BARCODE =
1417 (*env)->GetStringUTFChars (env,
1418 android_hardware_camera_parameters.SCENE_MODE_BARCODE, NULL);
1420 jobject local = android_hardware_camera_parameters.SCENE_MODE_BARCODE;
1422 android_hardware_camera_parameters.SCENE_MODE_BARCODE =
1423 gst_amc_jni_object_make_global (env, local);
1427 gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_AUTO",
1428 "Ljava/lang/String;");
1431 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1432 &android_hardware_camera_parameters.FOCUS_MODE_AUTO))
1435 Parameters_FOCUS_MODE_AUTO =
1436 (*env)->GetStringUTFChars (env,
1437 android_hardware_camera_parameters.FOCUS_MODE_AUTO, NULL);
1439 jobject local = android_hardware_camera_parameters.FOCUS_MODE_AUTO;
1441 android_hardware_camera_parameters.FOCUS_MODE_AUTO =
1442 gst_amc_jni_object_make_global (env, local);
1446 gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_INFINITY",
1447 "Ljava/lang/String;");
1450 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1451 &android_hardware_camera_parameters.FOCUS_MODE_INFINITY))
1454 Parameters_FOCUS_MODE_INFINITY =
1455 (*env)->GetStringUTFChars (env,
1456 android_hardware_camera_parameters.FOCUS_MODE_INFINITY, NULL);
1458 jobject local = android_hardware_camera_parameters.FOCUS_MODE_INFINITY;
1460 android_hardware_camera_parameters.FOCUS_MODE_INFINITY =
1461 gst_amc_jni_object_make_global (env, local);
1465 gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_MACRO",
1466 "Ljava/lang/String;");
1469 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1470 &android_hardware_camera_parameters.FOCUS_MODE_MACRO))
1473 Parameters_FOCUS_MODE_MACRO =
1474 (*env)->GetStringUTFChars (env,
1475 android_hardware_camera_parameters.FOCUS_MODE_MACRO, NULL);
1477 jobject local = android_hardware_camera_parameters.FOCUS_MODE_MACRO;
1479 android_hardware_camera_parameters.FOCUS_MODE_MACRO =
1480 gst_amc_jni_object_make_global (env, local);
1484 gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_FIXED",
1485 "Ljava/lang/String;");
1488 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1489 &android_hardware_camera_parameters.FOCUS_MODE_FIXED))
1492 Parameters_FOCUS_MODE_FIXED =
1493 (*env)->GetStringUTFChars (env,
1494 android_hardware_camera_parameters.FOCUS_MODE_FIXED, NULL);
1496 jobject local = android_hardware_camera_parameters.FOCUS_MODE_FIXED;
1498 android_hardware_camera_parameters.FOCUS_MODE_FIXED =
1499 gst_amc_jni_object_make_global (env, local);
1503 gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_EDOF",
1504 "Ljava/lang/String;");
1507 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1508 &android_hardware_camera_parameters.FOCUS_MODE_EDOF))
1511 Parameters_FOCUS_MODE_EDOF =
1512 (*env)->GetStringUTFChars (env,
1513 android_hardware_camera_parameters.FOCUS_MODE_EDOF, NULL);
1515 jobject local = android_hardware_camera_parameters.FOCUS_MODE_EDOF;
1517 android_hardware_camera_parameters.FOCUS_MODE_EDOF =
1518 gst_amc_jni_object_make_global (env, local);
1522 gst_amc_jni_get_static_field_id (env, &err, klass,
1523 "FOCUS_MODE_CONTINUOUS_VIDEO", "Ljava/lang/String;");
1526 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1527 &android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO))
1530 Parameters_FOCUS_MODE_CONTINUOUS_VIDEO =
1531 (*env)->GetStringUTFChars (env,
1532 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO, NULL);
1535 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO;
1537 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO =
1538 gst_amc_jni_object_make_global (env, local);
1542 gst_amc_jni_get_static_field_id (env, &err, klass,
1543 "FOCUS_MODE_CONTINUOUS_PICTURE", "Ljava/lang/String;");
1546 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1547 &android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE))
1551 Parameters_FOCUS_MODE_CONTINUOUS_PICTURE =
1552 (*env)->GetStringUTFChars (env,
1553 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE, NULL);
1556 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE;
1558 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE =
1559 gst_amc_jni_object_make_global (env, local);
1562 /* java.lang.String */
1563 klass = java_lang_string.klass =
1564 gst_amc_jni_get_class (env, &err, "java/lang/String");
1565 java_lang_string.equals =
1566 gst_amc_jni_get_method_id (env, &err, klass, "equals",
1567 "(Ljava/lang/Object;)Z");
1569 /* java.util.List */
1570 klass = java_util_list.klass =
1571 gst_amc_jni_get_class (env, &err, "java/util/List");
1572 java_util_list.iterator =
1573 gst_amc_jni_get_method_id (env, &err, klass, "iterator",
1574 "()Ljava/util/Iterator;");
1576 /* java.util.Iterator */
1577 klass = java_util_iterator.klass =
1578 gst_amc_jni_get_class (env, &err, "java/util/Iterator");
1579 java_util_iterator.hasNext =
1580 gst_amc_jni_get_method_id (env, &err, klass, "hasNext", "()Z");
1581 java_util_iterator.next =
1582 gst_amc_jni_get_method_id (env, &err, klass, "next",
1583 "()Ljava/lang/Object;");
1585 /* java.lang.Integer */
1586 klass = java_lang_integer.klass =
1587 gst_amc_jni_get_class (env, &err, "java/lang/Integer");
1588 java_lang_integer.intValue =
1589 gst_amc_jni_get_method_id (env, &err, klass, "intValue", "()I");
1591 if (!org_freedesktop_gstreamer_androidmedia_gstahccallback.klass) {
1592 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass =
1593 gst_amc_jni_get_application_class (env,
1594 "org/freedesktop/gstreamer/androidmedia/GstAhcCallback", &err);
1596 if (!org_freedesktop_gstreamer_androidmedia_gstahccallback.klass)
1599 org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor =
1600 gst_amc_jni_get_method_id (env, &err,
1601 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass, "<init>",
1604 if ((*env)->RegisterNatives (env,
1605 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
1606 native_methods, G_N_ELEMENTS (native_methods))) {
1607 GST_ERROR ("Failed to register native methods for GstAhcCallback");
1615 GST_ERROR ("Failed to initialize android.hardware.Camera classes: %s",
1617 g_clear_error (&err);
1626 gst_android_hardware_camera_init (void)
1628 GST_DEBUG_CATEGORY_INIT (ahc_debug, "ahc", 0,
1629 "Android Gstreamer Hardware Camera");
1630 if (!_init_classes ()) {
1631 gst_android_hardware_camera_deinit ();
1639 gst_android_hardware_camera_deinit (void)
1641 JNIEnv *env = gst_amc_jni_get_env ();
1643 if (android_hardware_camera.klass)
1644 gst_amc_jni_object_unref (env, android_hardware_camera.klass);
1645 android_hardware_camera.klass = NULL;
1647 if (android_hardware_camera_camerainfo.klass)
1648 gst_amc_jni_object_unref (env, android_hardware_camera_camerainfo.klass);
1649 android_hardware_camera_camerainfo.klass = NULL;
1651 if (android_hardware_camera_size.klass)
1652 gst_amc_jni_object_unref (env, android_hardware_camera_size.klass);
1653 android_hardware_camera_size.klass = NULL;
1655 if (android_hardware_camera_parameters.klass)
1656 gst_amc_jni_object_unref (env, android_hardware_camera_parameters.klass);
1657 android_hardware_camera_parameters.klass = NULL;
1658 if (Parameters_WHITE_BALANCE_AUTO)
1659 (*env)->ReleaseStringUTFChars (env,
1660 android_hardware_camera_parameters.WHITE_BALANCE_AUTO,
1661 Parameters_WHITE_BALANCE_AUTO);
1662 Parameters_WHITE_BALANCE_AUTO = NULL;
1663 if (android_hardware_camera_parameters.WHITE_BALANCE_AUTO)
1664 gst_amc_jni_object_unref (env,
1665 android_hardware_camera_parameters.WHITE_BALANCE_AUTO);
1666 android_hardware_camera_parameters.WHITE_BALANCE_AUTO = NULL;
1667 if (Parameters_WHITE_BALANCE_INCANDESCENT)
1668 (*env)->ReleaseStringUTFChars (env,
1669 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT,
1670 Parameters_WHITE_BALANCE_INCANDESCENT);
1671 Parameters_WHITE_BALANCE_INCANDESCENT = NULL;
1672 if (android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT)
1673 gst_amc_jni_object_unref (env,
1674 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT);
1675 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT = NULL;
1676 if (Parameters_WHITE_BALANCE_FLUORESCENT)
1677 (*env)->ReleaseStringUTFChars (env,
1678 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT,
1679 Parameters_WHITE_BALANCE_FLUORESCENT);
1680 Parameters_WHITE_BALANCE_FLUORESCENT = NULL;
1681 if (android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT)
1682 gst_amc_jni_object_unref (env,
1683 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT);
1684 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT = NULL;
1685 if (Parameters_WHITE_BALANCE_WARM_FLUORESCENT)
1686 (*env)->ReleaseStringUTFChars (env,
1687 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT,
1688 Parameters_WHITE_BALANCE_WARM_FLUORESCENT);
1689 Parameters_WHITE_BALANCE_WARM_FLUORESCENT = NULL;
1690 if (android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT)
1691 gst_amc_jni_object_unref (env,
1692 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT);
1693 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT = NULL;
1694 if (Parameters_WHITE_BALANCE_DAYLIGHT)
1695 (*env)->ReleaseStringUTFChars (env,
1696 android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT,
1697 Parameters_WHITE_BALANCE_DAYLIGHT);
1698 Parameters_WHITE_BALANCE_DAYLIGHT = NULL;
1699 if (android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT)
1700 gst_amc_jni_object_unref (env,
1701 android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT);
1702 android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT = NULL;
1703 if (Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT)
1704 (*env)->ReleaseStringUTFChars (env,
1705 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT,
1706 Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT);
1707 Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT = NULL;
1708 if (android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT)
1709 gst_amc_jni_object_unref (env,
1710 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT);
1711 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT = NULL;
1712 if (Parameters_WHITE_BALANCE_TWILIGHT)
1713 (*env)->ReleaseStringUTFChars (env,
1714 android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT,
1715 Parameters_WHITE_BALANCE_TWILIGHT);
1716 Parameters_WHITE_BALANCE_TWILIGHT = NULL;
1717 if (android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT)
1718 gst_amc_jni_object_unref (env,
1719 android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT);
1720 android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT = NULL;
1721 if (Parameters_WHITE_BALANCE_SHADE)
1722 (*env)->ReleaseStringUTFChars (env,
1723 android_hardware_camera_parameters.WHITE_BALANCE_SHADE,
1724 Parameters_WHITE_BALANCE_SHADE);
1725 Parameters_WHITE_BALANCE_SHADE = NULL;
1726 if (android_hardware_camera_parameters.WHITE_BALANCE_SHADE)
1727 gst_amc_jni_object_unref (env,
1728 android_hardware_camera_parameters.WHITE_BALANCE_SHADE);
1729 android_hardware_camera_parameters.WHITE_BALANCE_SHADE = NULL;
1730 if (Parameters_EFFECT_NONE)
1731 (*env)->ReleaseStringUTFChars (env,
1732 android_hardware_camera_parameters.EFFECT_NONE, Parameters_EFFECT_NONE);
1733 Parameters_EFFECT_NONE = NULL;
1734 if (android_hardware_camera_parameters.EFFECT_NONE)
1735 gst_amc_jni_object_unref (env,
1736 android_hardware_camera_parameters.EFFECT_NONE);
1737 android_hardware_camera_parameters.EFFECT_NONE = NULL;
1738 if (Parameters_EFFECT_MONO)
1739 (*env)->ReleaseStringUTFChars (env,
1740 android_hardware_camera_parameters.EFFECT_MONO, Parameters_EFFECT_MONO);
1741 Parameters_EFFECT_MONO = NULL;
1742 if (android_hardware_camera_parameters.EFFECT_MONO)
1743 gst_amc_jni_object_unref (env,
1744 android_hardware_camera_parameters.EFFECT_MONO);
1745 android_hardware_camera_parameters.EFFECT_MONO = NULL;
1746 if (Parameters_EFFECT_NEGATIVE)
1747 (*env)->ReleaseStringUTFChars (env,
1748 android_hardware_camera_parameters.EFFECT_NEGATIVE,
1749 Parameters_EFFECT_NEGATIVE);
1750 Parameters_EFFECT_NEGATIVE = NULL;
1751 if (android_hardware_camera_parameters.EFFECT_NEGATIVE)
1752 gst_amc_jni_object_unref (env,
1753 android_hardware_camera_parameters.EFFECT_NEGATIVE);
1754 android_hardware_camera_parameters.EFFECT_NEGATIVE = NULL;
1755 if (Parameters_EFFECT_SOLARIZE)
1756 (*env)->ReleaseStringUTFChars (env,
1757 android_hardware_camera_parameters.EFFECT_SOLARIZE,
1758 Parameters_EFFECT_SOLARIZE);
1759 Parameters_EFFECT_SOLARIZE = NULL;
1760 if (android_hardware_camera_parameters.EFFECT_SOLARIZE)
1761 gst_amc_jni_object_unref (env,
1762 android_hardware_camera_parameters.EFFECT_SOLARIZE);
1763 android_hardware_camera_parameters.EFFECT_SOLARIZE = NULL;
1764 if (Parameters_EFFECT_SEPIA)
1765 (*env)->ReleaseStringUTFChars (env,
1766 android_hardware_camera_parameters.EFFECT_SEPIA,
1767 Parameters_EFFECT_SEPIA);
1768 Parameters_EFFECT_SEPIA = NULL;
1769 if (android_hardware_camera_parameters.EFFECT_SEPIA)
1770 gst_amc_jni_object_unref (env,
1771 android_hardware_camera_parameters.EFFECT_SEPIA);
1772 android_hardware_camera_parameters.EFFECT_SEPIA = NULL;
1773 if (Parameters_EFFECT_POSTERIZE)
1774 (*env)->ReleaseStringUTFChars (env,
1775 android_hardware_camera_parameters.EFFECT_POSTERIZE,
1776 Parameters_EFFECT_POSTERIZE);
1777 Parameters_EFFECT_POSTERIZE = NULL;
1778 if (android_hardware_camera_parameters.EFFECT_POSTERIZE)
1779 gst_amc_jni_object_unref (env,
1780 android_hardware_camera_parameters.EFFECT_POSTERIZE);
1781 android_hardware_camera_parameters.EFFECT_POSTERIZE = NULL;
1782 if (Parameters_EFFECT_WHITEBOARD)
1783 (*env)->ReleaseStringUTFChars (env,
1784 android_hardware_camera_parameters.EFFECT_WHITEBOARD,
1785 Parameters_EFFECT_WHITEBOARD);
1786 Parameters_EFFECT_WHITEBOARD = NULL;
1787 if (android_hardware_camera_parameters.EFFECT_WHITEBOARD)
1788 gst_amc_jni_object_unref (env,
1789 android_hardware_camera_parameters.EFFECT_WHITEBOARD);
1790 android_hardware_camera_parameters.EFFECT_WHITEBOARD = NULL;
1791 if (Parameters_EFFECT_BLACKBOARD)
1792 (*env)->ReleaseStringUTFChars (env,
1793 android_hardware_camera_parameters.EFFECT_BLACKBOARD,
1794 Parameters_EFFECT_BLACKBOARD);
1795 Parameters_EFFECT_BLACKBOARD = NULL;
1796 if (android_hardware_camera_parameters.EFFECT_BLACKBOARD)
1797 gst_amc_jni_object_unref (env,
1798 android_hardware_camera_parameters.EFFECT_BLACKBOARD);
1799 android_hardware_camera_parameters.EFFECT_BLACKBOARD = NULL;
1800 if (Parameters_EFFECT_AQUA)
1801 (*env)->ReleaseStringUTFChars (env,
1802 android_hardware_camera_parameters.EFFECT_AQUA, Parameters_EFFECT_AQUA);
1803 Parameters_EFFECT_AQUA = NULL;
1804 if (android_hardware_camera_parameters.EFFECT_AQUA)
1805 gst_amc_jni_object_unref (env,
1806 android_hardware_camera_parameters.EFFECT_AQUA);
1807 android_hardware_camera_parameters.EFFECT_AQUA = NULL;
1808 if (Parameters_ANTIBANDING_AUTO)
1809 (*env)->ReleaseStringUTFChars (env,
1810 android_hardware_camera_parameters.ANTIBANDING_AUTO,
1811 Parameters_ANTIBANDING_AUTO);
1812 Parameters_ANTIBANDING_AUTO = NULL;
1813 if (android_hardware_camera_parameters.ANTIBANDING_AUTO)
1814 gst_amc_jni_object_unref (env,
1815 android_hardware_camera_parameters.ANTIBANDING_AUTO);
1816 android_hardware_camera_parameters.ANTIBANDING_AUTO = NULL;
1817 if (Parameters_ANTIBANDING_50HZ)
1818 (*env)->ReleaseStringUTFChars (env,
1819 android_hardware_camera_parameters.ANTIBANDING_50HZ,
1820 Parameters_ANTIBANDING_50HZ);
1821 Parameters_ANTIBANDING_50HZ = NULL;
1822 if (android_hardware_camera_parameters.ANTIBANDING_50HZ)
1823 gst_amc_jni_object_unref (env,
1824 android_hardware_camera_parameters.ANTIBANDING_50HZ);
1825 android_hardware_camera_parameters.ANTIBANDING_50HZ = NULL;
1826 if (Parameters_ANTIBANDING_60HZ)
1827 (*env)->ReleaseStringUTFChars (env,
1828 android_hardware_camera_parameters.ANTIBANDING_60HZ,
1829 Parameters_ANTIBANDING_60HZ);
1830 Parameters_ANTIBANDING_60HZ = NULL;
1831 if (android_hardware_camera_parameters.ANTIBANDING_60HZ)
1832 gst_amc_jni_object_unref (env,
1833 android_hardware_camera_parameters.ANTIBANDING_60HZ);
1834 android_hardware_camera_parameters.ANTIBANDING_60HZ = NULL;
1835 if (Parameters_ANTIBANDING_OFF)
1836 (*env)->ReleaseStringUTFChars (env,
1837 android_hardware_camera_parameters.ANTIBANDING_OFF,
1838 Parameters_ANTIBANDING_OFF);
1839 Parameters_ANTIBANDING_OFF = NULL;
1840 if (android_hardware_camera_parameters.ANTIBANDING_OFF)
1841 gst_amc_jni_object_unref (env,
1842 android_hardware_camera_parameters.ANTIBANDING_OFF);
1843 android_hardware_camera_parameters.ANTIBANDING_OFF = NULL;
1844 if (Parameters_FLASH_MODE_OFF)
1845 (*env)->ReleaseStringUTFChars (env,
1846 android_hardware_camera_parameters.FLASH_MODE_OFF,
1847 Parameters_FLASH_MODE_OFF);
1848 Parameters_FLASH_MODE_OFF = NULL;
1849 if (android_hardware_camera_parameters.FLASH_MODE_OFF)
1850 gst_amc_jni_object_unref (env,
1851 android_hardware_camera_parameters.FLASH_MODE_OFF);
1852 android_hardware_camera_parameters.FLASH_MODE_OFF = NULL;
1853 if (Parameters_FLASH_MODE_AUTO)
1854 (*env)->ReleaseStringUTFChars (env,
1855 android_hardware_camera_parameters.FLASH_MODE_AUTO,
1856 Parameters_FLASH_MODE_AUTO);
1857 Parameters_FLASH_MODE_AUTO = NULL;
1858 if (android_hardware_camera_parameters.FLASH_MODE_AUTO)
1859 gst_amc_jni_object_unref (env,
1860 android_hardware_camera_parameters.FLASH_MODE_AUTO);
1861 android_hardware_camera_parameters.FLASH_MODE_AUTO = NULL;
1862 if (Parameters_FLASH_MODE_ON)
1863 (*env)->ReleaseStringUTFChars (env,
1864 android_hardware_camera_parameters.FLASH_MODE_ON,
1865 Parameters_FLASH_MODE_ON);
1866 Parameters_FLASH_MODE_ON = NULL;
1867 if (android_hardware_camera_parameters.FLASH_MODE_ON)
1868 gst_amc_jni_object_unref (env,
1869 android_hardware_camera_parameters.FLASH_MODE_ON);
1870 android_hardware_camera_parameters.FLASH_MODE_ON = NULL;
1871 if (Parameters_FLASH_MODE_RED_EYE)
1872 (*env)->ReleaseStringUTFChars (env,
1873 android_hardware_camera_parameters.FLASH_MODE_RED_EYE,
1874 Parameters_FLASH_MODE_RED_EYE);
1875 Parameters_FLASH_MODE_RED_EYE = NULL;
1876 if (android_hardware_camera_parameters.FLASH_MODE_RED_EYE)
1877 gst_amc_jni_object_unref (env,
1878 android_hardware_camera_parameters.FLASH_MODE_RED_EYE);
1879 android_hardware_camera_parameters.FLASH_MODE_RED_EYE = NULL;
1880 if (Parameters_FLASH_MODE_TORCH)
1881 (*env)->ReleaseStringUTFChars (env,
1882 android_hardware_camera_parameters.FLASH_MODE_TORCH,
1883 Parameters_FLASH_MODE_TORCH);
1884 Parameters_FLASH_MODE_TORCH = NULL;
1885 if (android_hardware_camera_parameters.FLASH_MODE_TORCH)
1886 gst_amc_jni_object_unref (env,
1887 android_hardware_camera_parameters.FLASH_MODE_TORCH);
1888 android_hardware_camera_parameters.FLASH_MODE_TORCH = NULL;
1889 if (Parameters_SCENE_MODE_AUTO)
1890 (*env)->ReleaseStringUTFChars (env,
1891 android_hardware_camera_parameters.SCENE_MODE_AUTO,
1892 Parameters_SCENE_MODE_AUTO);
1893 Parameters_SCENE_MODE_AUTO = NULL;
1894 if (android_hardware_camera_parameters.SCENE_MODE_AUTO)
1895 gst_amc_jni_object_unref (env,
1896 android_hardware_camera_parameters.SCENE_MODE_AUTO);
1897 android_hardware_camera_parameters.SCENE_MODE_AUTO = NULL;
1898 if (Parameters_SCENE_MODE_ACTION)
1899 (*env)->ReleaseStringUTFChars (env,
1900 android_hardware_camera_parameters.SCENE_MODE_ACTION,
1901 Parameters_SCENE_MODE_ACTION);
1902 Parameters_SCENE_MODE_ACTION = NULL;
1903 if (android_hardware_camera_parameters.SCENE_MODE_ACTION)
1904 gst_amc_jni_object_unref (env,
1905 android_hardware_camera_parameters.SCENE_MODE_ACTION);
1906 android_hardware_camera_parameters.SCENE_MODE_ACTION = NULL;
1907 if (Parameters_SCENE_MODE_PORTRAIT)
1908 (*env)->ReleaseStringUTFChars (env,
1909 android_hardware_camera_parameters.SCENE_MODE_PORTRAIT,
1910 Parameters_SCENE_MODE_PORTRAIT);
1911 Parameters_SCENE_MODE_PORTRAIT = NULL;
1912 if (android_hardware_camera_parameters.SCENE_MODE_PORTRAIT)
1913 gst_amc_jni_object_unref (env,
1914 android_hardware_camera_parameters.SCENE_MODE_PORTRAIT);
1915 android_hardware_camera_parameters.SCENE_MODE_PORTRAIT = NULL;
1916 if (Parameters_SCENE_MODE_LANDSCAPE)
1917 (*env)->ReleaseStringUTFChars (env,
1918 android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE,
1919 Parameters_SCENE_MODE_LANDSCAPE);
1920 Parameters_SCENE_MODE_LANDSCAPE = NULL;
1921 if (android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE)
1922 gst_amc_jni_object_unref (env,
1923 android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE);
1924 android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE = NULL;
1925 if (Parameters_SCENE_MODE_NIGHT)
1926 (*env)->ReleaseStringUTFChars (env,
1927 android_hardware_camera_parameters.SCENE_MODE_NIGHT,
1928 Parameters_SCENE_MODE_NIGHT);
1929 Parameters_SCENE_MODE_NIGHT = NULL;
1930 if (android_hardware_camera_parameters.SCENE_MODE_NIGHT)
1931 gst_amc_jni_object_unref (env,
1932 android_hardware_camera_parameters.SCENE_MODE_NIGHT);
1933 android_hardware_camera_parameters.SCENE_MODE_NIGHT = NULL;
1934 if (Parameters_SCENE_MODE_NIGHT_PORTRAIT)
1935 (*env)->ReleaseStringUTFChars (env,
1936 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT,
1937 Parameters_SCENE_MODE_NIGHT_PORTRAIT);
1938 Parameters_SCENE_MODE_NIGHT_PORTRAIT = NULL;
1939 if (android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT)
1940 gst_amc_jni_object_unref (env,
1941 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT);
1942 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT = NULL;
1943 if (Parameters_SCENE_MODE_THEATRE)
1944 (*env)->ReleaseStringUTFChars (env,
1945 android_hardware_camera_parameters.SCENE_MODE_THEATRE,
1946 Parameters_SCENE_MODE_THEATRE);
1947 Parameters_SCENE_MODE_THEATRE = NULL;
1948 if (android_hardware_camera_parameters.SCENE_MODE_THEATRE)
1949 gst_amc_jni_object_unref (env,
1950 android_hardware_camera_parameters.SCENE_MODE_THEATRE);
1951 android_hardware_camera_parameters.SCENE_MODE_THEATRE = NULL;
1952 if (Parameters_SCENE_MODE_BEACH)
1953 (*env)->ReleaseStringUTFChars (env,
1954 android_hardware_camera_parameters.SCENE_MODE_BEACH,
1955 Parameters_SCENE_MODE_BEACH);
1956 Parameters_SCENE_MODE_BEACH = NULL;
1957 if (android_hardware_camera_parameters.SCENE_MODE_BEACH)
1958 gst_amc_jni_object_unref (env,
1959 android_hardware_camera_parameters.SCENE_MODE_BEACH);
1960 android_hardware_camera_parameters.SCENE_MODE_BEACH = NULL;
1961 if (Parameters_SCENE_MODE_SNOW)
1962 (*env)->ReleaseStringUTFChars (env,
1963 android_hardware_camera_parameters.SCENE_MODE_SNOW,
1964 Parameters_SCENE_MODE_SNOW);
1965 Parameters_SCENE_MODE_SNOW = NULL;
1966 if (android_hardware_camera_parameters.SCENE_MODE_SNOW)
1967 gst_amc_jni_object_unref (env,
1968 android_hardware_camera_parameters.SCENE_MODE_SNOW);
1969 android_hardware_camera_parameters.SCENE_MODE_SNOW = NULL;
1970 if (Parameters_SCENE_MODE_SUNSET)
1971 (*env)->ReleaseStringUTFChars (env,
1972 android_hardware_camera_parameters.SCENE_MODE_SUNSET,
1973 Parameters_SCENE_MODE_SUNSET);
1974 Parameters_SCENE_MODE_SUNSET = NULL;
1975 if (android_hardware_camera_parameters.SCENE_MODE_SUNSET)
1976 gst_amc_jni_object_unref (env,
1977 android_hardware_camera_parameters.SCENE_MODE_SUNSET);
1978 android_hardware_camera_parameters.SCENE_MODE_SUNSET = NULL;
1979 if (Parameters_SCENE_MODE_STEADYPHOTO)
1980 (*env)->ReleaseStringUTFChars (env,
1981 android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO,
1982 Parameters_SCENE_MODE_STEADYPHOTO);
1983 Parameters_SCENE_MODE_STEADYPHOTO = NULL;
1984 if (android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO)
1985 gst_amc_jni_object_unref (env,
1986 android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO);
1987 android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO = NULL;
1988 if (Parameters_SCENE_MODE_FIREWORKS)
1989 (*env)->ReleaseStringUTFChars (env,
1990 android_hardware_camera_parameters.SCENE_MODE_FIREWORKS,
1991 Parameters_SCENE_MODE_FIREWORKS);
1992 Parameters_SCENE_MODE_FIREWORKS = NULL;
1993 if (android_hardware_camera_parameters.SCENE_MODE_FIREWORKS)
1994 gst_amc_jni_object_unref (env,
1995 android_hardware_camera_parameters.SCENE_MODE_FIREWORKS);
1996 android_hardware_camera_parameters.SCENE_MODE_FIREWORKS = NULL;
1997 if (Parameters_SCENE_MODE_SPORTS)
1998 (*env)->ReleaseStringUTFChars (env,
1999 android_hardware_camera_parameters.SCENE_MODE_SPORTS,
2000 Parameters_SCENE_MODE_SPORTS);
2001 Parameters_SCENE_MODE_SPORTS = NULL;
2002 if (android_hardware_camera_parameters.SCENE_MODE_SPORTS)
2003 gst_amc_jni_object_unref (env,
2004 android_hardware_camera_parameters.SCENE_MODE_SPORTS);
2005 android_hardware_camera_parameters.SCENE_MODE_SPORTS = NULL;
2006 if (Parameters_SCENE_MODE_PARTY)
2007 (*env)->ReleaseStringUTFChars (env,
2008 android_hardware_camera_parameters.SCENE_MODE_PARTY,
2009 Parameters_SCENE_MODE_PARTY);
2010 Parameters_SCENE_MODE_PARTY = NULL;
2011 if (android_hardware_camera_parameters.SCENE_MODE_PARTY)
2012 gst_amc_jni_object_unref (env,
2013 android_hardware_camera_parameters.SCENE_MODE_PARTY);
2014 android_hardware_camera_parameters.SCENE_MODE_PARTY = NULL;
2015 if (Parameters_SCENE_MODE_CANDLELIGHT)
2016 (*env)->ReleaseStringUTFChars (env,
2017 android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT,
2018 Parameters_SCENE_MODE_CANDLELIGHT);
2019 Parameters_SCENE_MODE_CANDLELIGHT = NULL;
2020 if (android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT)
2021 gst_amc_jni_object_unref (env,
2022 android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT);
2023 android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT = NULL;
2024 if (Parameters_SCENE_MODE_BARCODE)
2025 (*env)->ReleaseStringUTFChars (env,
2026 android_hardware_camera_parameters.SCENE_MODE_BARCODE,
2027 Parameters_SCENE_MODE_BARCODE);
2028 Parameters_SCENE_MODE_BARCODE = NULL;
2029 if (android_hardware_camera_parameters.SCENE_MODE_BARCODE)
2030 gst_amc_jni_object_unref (env,
2031 android_hardware_camera_parameters.SCENE_MODE_BARCODE);
2032 android_hardware_camera_parameters.SCENE_MODE_BARCODE = NULL;
2033 if (Parameters_FOCUS_MODE_AUTO)
2034 (*env)->ReleaseStringUTFChars (env,
2035 android_hardware_camera_parameters.FOCUS_MODE_AUTO,
2036 Parameters_FOCUS_MODE_AUTO);
2037 Parameters_FOCUS_MODE_AUTO = NULL;
2038 if (android_hardware_camera_parameters.FOCUS_MODE_AUTO)
2039 gst_amc_jni_object_unref (env,
2040 android_hardware_camera_parameters.FOCUS_MODE_AUTO);
2041 android_hardware_camera_parameters.FOCUS_MODE_AUTO = NULL;
2042 if (Parameters_FOCUS_MODE_INFINITY)
2043 (*env)->ReleaseStringUTFChars (env,
2044 android_hardware_camera_parameters.FOCUS_MODE_INFINITY,
2045 Parameters_FOCUS_MODE_INFINITY);
2046 Parameters_FOCUS_MODE_INFINITY = NULL;
2047 if (android_hardware_camera_parameters.FOCUS_MODE_INFINITY)
2048 gst_amc_jni_object_unref (env,
2049 android_hardware_camera_parameters.FOCUS_MODE_INFINITY);
2050 android_hardware_camera_parameters.FOCUS_MODE_INFINITY = NULL;
2051 if (Parameters_FOCUS_MODE_MACRO)
2052 (*env)->ReleaseStringUTFChars (env,
2053 android_hardware_camera_parameters.FOCUS_MODE_MACRO,
2054 Parameters_FOCUS_MODE_MACRO);
2055 Parameters_FOCUS_MODE_MACRO = NULL;
2056 if (android_hardware_camera_parameters.FOCUS_MODE_MACRO)
2057 gst_amc_jni_object_unref (env,
2058 android_hardware_camera_parameters.FOCUS_MODE_MACRO);
2059 android_hardware_camera_parameters.FOCUS_MODE_MACRO = NULL;
2060 if (Parameters_FOCUS_MODE_FIXED)
2061 (*env)->ReleaseStringUTFChars (env,
2062 android_hardware_camera_parameters.FOCUS_MODE_FIXED,
2063 Parameters_FOCUS_MODE_FIXED);
2064 Parameters_FOCUS_MODE_FIXED = NULL;
2065 if (android_hardware_camera_parameters.FOCUS_MODE_FIXED)
2066 gst_amc_jni_object_unref (env,
2067 android_hardware_camera_parameters.FOCUS_MODE_FIXED);
2068 android_hardware_camera_parameters.FOCUS_MODE_FIXED = NULL;
2069 if (Parameters_FOCUS_MODE_EDOF)
2070 (*env)->ReleaseStringUTFChars (env,
2071 android_hardware_camera_parameters.FOCUS_MODE_EDOF,
2072 Parameters_FOCUS_MODE_EDOF);
2073 Parameters_FOCUS_MODE_EDOF = NULL;
2074 if (android_hardware_camera_parameters.FOCUS_MODE_EDOF)
2075 gst_amc_jni_object_unref (env,
2076 android_hardware_camera_parameters.FOCUS_MODE_EDOF);
2077 android_hardware_camera_parameters.FOCUS_MODE_EDOF = NULL;
2078 if (Parameters_FOCUS_MODE_CONTINUOUS_VIDEO)
2079 (*env)->ReleaseStringUTFChars (env,
2080 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO,
2081 Parameters_FOCUS_MODE_CONTINUOUS_VIDEO);
2082 Parameters_FOCUS_MODE_CONTINUOUS_VIDEO = NULL;
2083 if (android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO)
2084 gst_amc_jni_object_unref (env,
2085 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
2086 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO = NULL;
2087 if (Parameters_FOCUS_MODE_CONTINUOUS_PICTURE)
2088 (*env)->ReleaseStringUTFChars (env,
2089 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE,
2090 Parameters_FOCUS_MODE_CONTINUOUS_PICTURE);
2091 Parameters_FOCUS_MODE_CONTINUOUS_PICTURE = NULL;
2092 if (android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE)
2093 gst_amc_jni_object_unref (env,
2094 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
2095 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE = NULL;
2097 if (java_lang_string.klass)
2098 gst_amc_jni_object_unref (env, java_lang_string.klass);
2099 java_lang_string.klass = NULL;
2101 if (java_util_list.klass)
2102 gst_amc_jni_object_unref (env, java_util_list.klass);
2103 java_util_list.klass = NULL;
2105 if (java_util_iterator.klass)
2106 gst_amc_jni_object_unref (env, java_util_iterator.klass);
2107 java_util_iterator.klass = NULL;
2109 if (java_lang_integer.klass)
2110 gst_amc_jni_object_unref (env, java_lang_integer.klass);
2111 java_lang_integer.klass = NULL;
2113 if (org_freedesktop_gstreamer_androidmedia_gstahccallback.klass) {
2114 (*env)->UnregisterNatives (env,
2115 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass);
2116 gst_amc_jni_object_unref (env,
2117 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass);
2119 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass = NULL;
2122 /* android.hardware.Camera */
2124 gst_ah_camera_add_callback_buffer (GstAHCamera * self, jbyteArray buffer)
2126 JNIEnv *env = gst_amc_jni_get_env ();
2129 GST_DEBUG ("add callback_buffer %p", buffer);
2131 gst_amc_jni_call_void_method (env, &err, self->object,
2132 android_hardware_camera.addCallbackBuffer, buffer);
2134 GST_ERROR ("Failed to call android.hardware.Camera.addCallbackBuffer: %s",
2136 g_clear_error (&err);
2141 gst_ah_camera_auto_focus (GstAHCamera * self,
2142 GstAHCAutoFocusCallback cb, gpointer user_data)
2144 JNIEnv *env = gst_amc_jni_get_env ();
2146 jobject object = NULL;
2147 gboolean ret = FALSE;
2150 object = gst_amc_jni_new_object (env,
2153 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
2154 org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
2155 *((jlong *) & cb), *((jlong *) & user_data));
2158 ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object");
2159 g_clear_error (&err);
2164 gst_amc_jni_call_void_method (env, &err, self->object,
2165 android_hardware_camera.autoFocus, object);
2167 GST_ERROR ("Failed to call android.hardware.Camera.autoFocus: %s",
2175 g_clear_error (&err);
2177 gst_amc_jni_object_local_unref (env, object);
2183 gst_ah_camera_cancel_auto_focus (GstAHCamera * self)
2185 JNIEnv *env = gst_amc_jni_get_env ();
2188 gst_amc_jni_call_void_method (env, &err, self->object,
2189 android_hardware_camera.cancelAutoFocus);
2191 GST_ERROR ("Failed to call android.hardware.Camera.cancelAutoFocus: %s",
2193 g_clear_error (&err);
2201 gst_ah_camera_get_camera_info (gint camera_id, GstAHCCameraInfo * camera_info)
2203 JNIEnv *env = gst_amc_jni_get_env ();
2205 jobject jcamera_info = NULL;
2206 gboolean ret = FALSE;
2208 jcamera_info = gst_amc_jni_new_object (env,
2211 android_hardware_camera_camerainfo.klass,
2212 android_hardware_camera_camerainfo.constructor);
2214 GST_ERROR ("Failed to create android.hardware.camera.CameraInfo object");
2215 g_clear_error (&err);
2219 gst_amc_jni_call_static_void_method (env, &err, android_hardware_camera.klass,
2220 android_hardware_camera.getCameraInfo, camera_id, jcamera_info);
2222 GST_ERROR ("Failed to call android.hardware.Camera.getCameraInfo: %s",
2227 camera_info->facing = (*env)->GetIntField (env, jcamera_info,
2228 android_hardware_camera_camerainfo.facing);
2229 if ((*env)->ExceptionCheck (env)) {
2230 GST_ERROR ("Failed to get CameraInfo.facing field");
2231 (*env)->ExceptionClear (env);
2235 camera_info->orientation = (*env)->GetIntField (env, jcamera_info,
2236 android_hardware_camera_camerainfo.orientation);
2237 if ((*env)->ExceptionCheck (env)) {
2238 GST_ERROR ("Failed to get CameraInfo.orientation field");
2239 (*env)->ExceptionClear (env);
2246 g_clear_error (&err);
2248 gst_amc_jni_object_local_unref (env, jcamera_info);
2254 gst_ah_camera_get_number_of_cameras (void)
2256 JNIEnv *env = gst_amc_jni_get_env ();
2260 gst_amc_jni_call_static_int_method (env, &err, android_hardware_camera.klass,
2261 android_hardware_camera.getNumberOfCameras, &num_cameras);
2263 GST_ERROR ("Failed to call android.hardware.Camera.getNumberOfCameras: %s",
2265 g_clear_error (&err);
2273 gst_ah_camera_get_parameters (GstAHCamera * self)
2275 JNIEnv *env = gst_amc_jni_get_env ();
2277 jobject object = NULL;
2278 GstAHCParameters *params = NULL;
2280 gst_amc_jni_call_object_method (env, &err, self->object,
2281 android_hardware_camera.getParameters, &object);
2283 GST_ERROR ("Failed to call android.hardware.Camera.getParameters: %s",
2285 g_clear_error (&err);
2289 GST_WARNING ("android.hardware.Camera.getParameter is NULL");
2293 params = g_slice_new0 (GstAHCParameters);
2294 params->object = gst_amc_jni_object_ref (env, object);
2295 gst_amc_jni_object_local_unref (env, object);
2296 if (!params->object) {
2297 GST_ERROR ("Failed to create global reference");
2298 (*env)->ExceptionClear (env);
2299 g_slice_free (GstAHCParameters, params);
2303 GST_DEBUG ("return parameters %p", params->object);
2309 gst_ah_camera_lock (GstAHCamera * self)
2311 JNIEnv *env = gst_amc_jni_get_env ();
2314 gst_amc_jni_call_void_method (env, &err, self->object,
2315 android_hardware_camera.lock);
2317 GST_ERROR ("Failed to call android.hardware.Camera.lock: %s", err->message);
2318 g_clear_error (&err);
2326 gst_ah_camera_open (gint camera_id)
2328 JNIEnv *env = gst_amc_jni_get_env ();
2330 jobject object = NULL;
2331 GstAHCamera *camera = NULL;
2333 gst_amc_jni_call_static_object_method (env, &err,
2334 android_hardware_camera.klass, android_hardware_camera.open, &object,
2337 GST_ERROR ("Failed to call android.hardware.Camera.open: %s", err->message);
2338 g_clear_error (&err);
2343 camera = g_slice_new0 (GstAHCamera);
2344 camera->object = gst_amc_jni_object_ref (env, object);
2345 gst_amc_jni_object_local_unref (env, object);
2346 if (!camera->object) {
2347 GST_ERROR ("Failed to create global reference");
2348 (*env)->ExceptionClear (env);
2349 g_slice_free (GstAHCamera, camera);
2359 gst_ah_camera_reconnect (GstAHCamera * self)
2361 JNIEnv *env = gst_amc_jni_get_env ();
2364 gst_amc_jni_call_void_method (env, &err, self->object,
2365 android_hardware_camera.reconnect);
2367 GST_ERROR ("Failed to call android.hardware.Camera.reconnect: %s",
2369 g_clear_error (&err);
2377 gst_ah_camera_release (GstAHCamera * self)
2379 JNIEnv *env = gst_amc_jni_get_env ();
2382 gst_amc_jni_call_void_method (env, &err, self->object,
2383 android_hardware_camera.release);
2385 GST_ERROR ("Failed to call android.hardware.Camera.release: %s",
2387 g_clear_error (&err);
2392 gst_ah_camera_free (GstAHCamera * self)
2394 JNIEnv *env = gst_amc_jni_get_env ();
2396 gst_amc_jni_object_unref (env, self->object);
2397 g_slice_free (GstAHCamera, self);
2402 gst_ah_camera_set_parameters (GstAHCamera * self, GstAHCParameters * params)
2404 JNIEnv *env = gst_amc_jni_get_env ();
2407 gst_amc_jni_call_void_method (env, &err, self->object,
2408 android_hardware_camera.setParameters, params->object);
2410 GST_ERROR ("Failed to call android.hardware.Camera.setParameters: %s",
2412 g_clear_error (&err);
2420 gst_ah_camera_set_error_callback (GstAHCamera * self, GstAHCErrorCallback cb,
2423 JNIEnv *env = gst_amc_jni_get_env ();
2425 jobject object = NULL;
2426 gboolean ret = FALSE;
2429 object = gst_amc_jni_new_object (env,
2432 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
2433 org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
2434 *((jlong *) & cb), *((jlong *) & user_data));
2437 ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object");
2438 g_clear_error (&err);
2443 gst_amc_jni_call_void_method (env, &err, self->object,
2444 android_hardware_camera.setErrorCallback, object);
2446 GST_ERROR ("Failed to call android.hardware.Camera.setErrorCallback: %s",
2454 g_clear_error (&err);
2456 gst_amc_jni_object_local_unref (env, object);
2462 gst_ah_camera_set_preview_callback_with_buffer (GstAHCamera * self,
2463 GstAHCPreviewCallback cb, gpointer user_data)
2465 JNIEnv *env = gst_amc_jni_get_env ();
2467 jobject object = NULL;
2468 gboolean ret = FALSE;
2471 object = gst_amc_jni_new_object (env,
2474 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
2475 org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
2476 *((jlong *) & cb), *((jlong *) & user_data));
2479 ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object");
2480 g_clear_error (&err);
2485 gst_amc_jni_call_void_method (env, &err, self->object,
2486 android_hardware_camera.setPreviewCallbackWithBuffer, object);
2489 ("Failed to call android.hardware.Camera.setPreviewCallbackWithBuffer: %s",
2497 g_clear_error (&err);
2499 gst_amc_jni_object_local_unref (env, object);
2505 gst_ah_camera_set_preview_texture (GstAHCamera * self,
2506 GstAmcSurfaceTexture * surfaceTexture)
2508 JNIEnv *env = gst_amc_jni_get_env ();
2511 gst_amc_jni_call_void_method (env, &err, self->object,
2512 android_hardware_camera.setPreviewTexture, surfaceTexture->jobject);
2514 GST_ERROR ("Failed to call android.hardware.Camera.setPreviewTexture: %s",
2516 g_clear_error (&err);
2521 gst_ah_camera_start_preview (GstAHCamera * self)
2523 JNIEnv *env = gst_amc_jni_get_env ();
2526 gst_amc_jni_call_void_method (env, &err, self->object,
2527 android_hardware_camera.startPreview);
2529 GST_ERROR ("Failed to call android.hardware.Camera.startPreview: %s",
2531 g_clear_error (&err);
2539 gst_ah_camera_start_smooth_zoom (GstAHCamera * self, gint value)
2541 JNIEnv *env = gst_amc_jni_get_env ();
2544 gst_amc_jni_call_void_method (env, &err, self->object,
2545 android_hardware_camera.startSmoothZoom, value);
2547 GST_ERROR ("Failed to call android.hardware.Camera.startSmoothZoom: %s",
2549 g_clear_error (&err);
2557 gst_ah_camera_stop_preview (GstAHCamera * self)
2559 JNIEnv *env = gst_amc_jni_get_env ();
2562 gst_amc_jni_call_void_method (env, &err, self->object,
2563 android_hardware_camera.stopPreview);
2565 GST_ERROR ("Failed to call android.hardware.Camera.stopPreview: %s",
2567 g_clear_error (&err);
2575 gst_ah_camera_stop_smooth_zoom (GstAHCamera * self)
2577 JNIEnv *env = gst_amc_jni_get_env ();
2580 gst_amc_jni_call_void_method (env, &err, self->object,
2581 android_hardware_camera.stopSmoothZoom);
2583 GST_ERROR ("Failed to call android.hardware.Camera.stopSmoothZoom: %s",
2585 g_clear_error (&err);
2593 gst_ah_camera_unlock (GstAHCamera * self)
2595 JNIEnv *env = gst_amc_jni_get_env ();
2598 gst_amc_jni_call_void_method (env, &err, self->object,
2599 android_hardware_camera.unlock);
2601 GST_ERROR ("Failed to call android.hardware.Camera.unlock: %s",
2603 g_clear_error (&err);
2610 /* android.hardware.Camera.Size */
2612 gst_ahc_size_new (gint width, gint height)
2614 GstAHCSize *self = g_slice_new (GstAHCSize);
2616 self->width = width;
2617 self->height = height;
2623 gst_ahc_size_free (GstAHCSize * self)
2625 g_slice_free (GstAHCSize, self);
2628 /* java.lang.String */
2630 java_lang_string_equals (JNIEnv * env, jstring str, jstring obj)
2632 return (*env)->CallBooleanMethod (env, str, java_lang_string.equals, obj);
2635 /* java.util.List */
2637 java_util_list_iterator (JNIEnv * env, jobject obj)
2639 return (*env)->CallObjectMethod (env, obj, java_util_list.iterator);
2642 /* java.util.Iterator */
2644 java_util_iterator_next (JNIEnv * env, jobject obj)
2646 return (*env)->CallObjectMethod (env, obj, java_util_iterator.next);
2650 java_util_iterator_has_next (JNIEnv * env, jobject obj)
2652 return (*env)->CallBooleanMethod (env, obj, java_util_iterator.hasNext);
2655 /* java.lang.Integer */
2657 java_lang_integer_int_value (JNIEnv * env, jobject obj)
2659 return (*env)->CallIntMethod (env, obj, java_lang_integer.intValue);
2663 /* android.hardware.Camera.Parameters */
2664 static const gchar *
2665 _white_balance_to_gchar (JNIEnv * env, jstring white_balance)
2670 if (java_lang_string_equals (env, white_balance,
2671 android_hardware_camera_parameters.WHITE_BALANCE_AUTO))
2672 return Parameters_WHITE_BALANCE_AUTO;
2673 else if (java_lang_string_equals (env, white_balance,
2674 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT))
2675 return Parameters_WHITE_BALANCE_INCANDESCENT;
2676 else if (java_lang_string_equals (env, white_balance,
2677 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT))
2678 return Parameters_WHITE_BALANCE_FLUORESCENT;
2679 else if (java_lang_string_equals (env, white_balance,
2680 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT))
2681 return Parameters_WHITE_BALANCE_WARM_FLUORESCENT;
2682 else if (java_lang_string_equals (env, white_balance,
2683 android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT))
2684 return Parameters_WHITE_BALANCE_DAYLIGHT;
2685 else if (java_lang_string_equals (env, white_balance,
2686 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT))
2687 return Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT;
2688 else if (java_lang_string_equals (env, white_balance,
2689 android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT))
2690 return Parameters_WHITE_BALANCE_TWILIGHT;
2691 else if (java_lang_string_equals (env, white_balance,
2692 android_hardware_camera_parameters.WHITE_BALANCE_SHADE))
2693 return Parameters_WHITE_BALANCE_SHADE;
2699 _white_balance_to_jstring (const gchar * white_balance)
2704 if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_AUTO))
2705 return android_hardware_camera_parameters.WHITE_BALANCE_AUTO;
2706 else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_INCANDESCENT))
2707 return android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT;
2708 else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_FLUORESCENT))
2709 return android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT;
2710 else if (!g_strcmp0 (white_balance,
2711 Parameters_WHITE_BALANCE_WARM_FLUORESCENT))
2712 return android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT;
2713 else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_DAYLIGHT))
2714 return android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT;
2715 else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT))
2716 return android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT;
2717 else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_TWILIGHT))
2718 return android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT;
2719 else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_SHADE))
2720 return android_hardware_camera_parameters.WHITE_BALANCE_SHADE;
2725 static const gchar *
2726 _color_effect_to_gchar (JNIEnv * env, jstring color_effect)
2731 if (java_lang_string_equals (env, color_effect,
2732 android_hardware_camera_parameters.EFFECT_NONE))
2733 return Parameters_EFFECT_NONE;
2734 else if (java_lang_string_equals (env, color_effect,
2735 android_hardware_camera_parameters.EFFECT_MONO))
2736 return Parameters_EFFECT_MONO;
2737 else if (java_lang_string_equals (env, color_effect,
2738 android_hardware_camera_parameters.EFFECT_NEGATIVE))
2739 return Parameters_EFFECT_NEGATIVE;
2740 else if (java_lang_string_equals (env, color_effect,
2741 android_hardware_camera_parameters.EFFECT_SOLARIZE))
2742 return Parameters_EFFECT_SOLARIZE;
2743 else if (java_lang_string_equals (env, color_effect,
2744 android_hardware_camera_parameters.EFFECT_SEPIA))
2745 return Parameters_EFFECT_SEPIA;
2746 else if (java_lang_string_equals (env, color_effect,
2747 android_hardware_camera_parameters.EFFECT_POSTERIZE))
2748 return Parameters_EFFECT_POSTERIZE;
2749 else if (java_lang_string_equals (env, color_effect,
2750 android_hardware_camera_parameters.EFFECT_WHITEBOARD))
2751 return Parameters_EFFECT_WHITEBOARD;
2752 else if (java_lang_string_equals (env, color_effect,
2753 android_hardware_camera_parameters.EFFECT_BLACKBOARD))
2754 return Parameters_EFFECT_BLACKBOARD;
2755 else if (java_lang_string_equals (env, color_effect,
2756 android_hardware_camera_parameters.EFFECT_AQUA))
2757 return Parameters_EFFECT_AQUA;
2763 _color_effect_to_jstring (const gchar * color_effect)
2768 if (!g_strcmp0 (color_effect, Parameters_EFFECT_NONE))
2769 return android_hardware_camera_parameters.EFFECT_NONE;
2770 else if (!g_strcmp0 (color_effect, Parameters_EFFECT_MONO))
2771 return android_hardware_camera_parameters.EFFECT_MONO;
2772 else if (!g_strcmp0 (color_effect, Parameters_EFFECT_NEGATIVE))
2773 return android_hardware_camera_parameters.EFFECT_NEGATIVE;
2774 else if (!g_strcmp0 (color_effect, Parameters_EFFECT_SOLARIZE))
2775 return android_hardware_camera_parameters.EFFECT_SOLARIZE;
2776 else if (!g_strcmp0 (color_effect, Parameters_EFFECT_SEPIA))
2777 return android_hardware_camera_parameters.EFFECT_SEPIA;
2778 else if (!g_strcmp0 (color_effect, Parameters_EFFECT_POSTERIZE))
2779 return android_hardware_camera_parameters.EFFECT_POSTERIZE;
2780 else if (!g_strcmp0 (color_effect, Parameters_EFFECT_WHITEBOARD))
2781 return android_hardware_camera_parameters.EFFECT_WHITEBOARD;
2782 else if (!g_strcmp0 (color_effect, Parameters_EFFECT_BLACKBOARD))
2783 return android_hardware_camera_parameters.EFFECT_BLACKBOARD;
2784 else if (!g_strcmp0 (color_effect, Parameters_EFFECT_AQUA))
2785 return android_hardware_camera_parameters.EFFECT_AQUA;
2790 static const gchar *
2791 _antibanding_to_gchar (JNIEnv * env, jstring antibanding)
2796 if (java_lang_string_equals (env, antibanding,
2797 android_hardware_camera_parameters.ANTIBANDING_AUTO))
2798 return Parameters_ANTIBANDING_AUTO;
2799 else if (java_lang_string_equals (env, antibanding,
2800 android_hardware_camera_parameters.ANTIBANDING_50HZ))
2801 return Parameters_ANTIBANDING_50HZ;
2802 else if (java_lang_string_equals (env, antibanding,
2803 android_hardware_camera_parameters.ANTIBANDING_60HZ))
2804 return Parameters_ANTIBANDING_60HZ;
2805 else if (java_lang_string_equals (env, antibanding,
2806 android_hardware_camera_parameters.ANTIBANDING_OFF))
2807 return Parameters_ANTIBANDING_OFF;
2813 _antibanding_to_jstring (const gchar * antibanding)
2818 if (!g_strcmp0 (antibanding, Parameters_ANTIBANDING_AUTO))
2819 return android_hardware_camera_parameters.ANTIBANDING_AUTO;
2820 else if (!g_strcmp0 (antibanding, Parameters_ANTIBANDING_50HZ))
2821 return android_hardware_camera_parameters.ANTIBANDING_50HZ;
2822 else if (!g_strcmp0 (antibanding, Parameters_ANTIBANDING_60HZ))
2823 return android_hardware_camera_parameters.ANTIBANDING_60HZ;
2824 else if (!g_strcmp0 (antibanding, Parameters_ANTIBANDING_OFF))
2825 return android_hardware_camera_parameters.ANTIBANDING_OFF;
2830 static const gchar *
2831 _flash_mode_to_gchar (JNIEnv * env, jstring flash_mode)
2836 if (java_lang_string_equals (env, flash_mode,
2837 android_hardware_camera_parameters.FLASH_MODE_OFF))
2838 return Parameters_FLASH_MODE_OFF;
2839 else if (java_lang_string_equals (env, flash_mode,
2840 android_hardware_camera_parameters.FLASH_MODE_AUTO))
2841 return Parameters_FLASH_MODE_AUTO;
2842 else if (java_lang_string_equals (env, flash_mode,
2843 android_hardware_camera_parameters.FLASH_MODE_ON))
2844 return Parameters_FLASH_MODE_ON;
2845 else if (java_lang_string_equals (env, flash_mode,
2846 android_hardware_camera_parameters.FLASH_MODE_RED_EYE))
2847 return Parameters_FLASH_MODE_RED_EYE;
2848 else if (java_lang_string_equals (env, flash_mode,
2849 android_hardware_camera_parameters.FLASH_MODE_TORCH))
2850 return Parameters_FLASH_MODE_TORCH;
2856 _flash_mode_to_jstring (const gchar * flash_mode)
2861 if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_OFF))
2862 return android_hardware_camera_parameters.FLASH_MODE_OFF;
2863 else if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_AUTO))
2864 return android_hardware_camera_parameters.FLASH_MODE_AUTO;
2865 else if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_ON))
2866 return android_hardware_camera_parameters.FLASH_MODE_ON;
2867 else if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_RED_EYE))
2868 return android_hardware_camera_parameters.FLASH_MODE_RED_EYE;
2869 else if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_TORCH))
2870 return android_hardware_camera_parameters.FLASH_MODE_TORCH;
2875 static const gchar *
2876 _scene_mode_to_gchar (JNIEnv * env, jstring scene_mode)
2881 if (java_lang_string_equals (env, scene_mode,
2882 android_hardware_camera_parameters.SCENE_MODE_AUTO))
2883 return Parameters_SCENE_MODE_AUTO;
2884 else if (java_lang_string_equals (env, scene_mode,
2885 android_hardware_camera_parameters.SCENE_MODE_ACTION))
2886 return Parameters_SCENE_MODE_ACTION;
2887 else if (java_lang_string_equals (env, scene_mode,
2888 android_hardware_camera_parameters.SCENE_MODE_PORTRAIT))
2889 return Parameters_SCENE_MODE_PORTRAIT;
2890 else if (java_lang_string_equals (env, scene_mode,
2891 android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE))
2892 return Parameters_SCENE_MODE_LANDSCAPE;
2893 else if (java_lang_string_equals (env, scene_mode,
2894 android_hardware_camera_parameters.SCENE_MODE_NIGHT))
2895 return Parameters_SCENE_MODE_NIGHT;
2896 else if (java_lang_string_equals (env, scene_mode,
2897 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT))
2898 return Parameters_SCENE_MODE_NIGHT_PORTRAIT;
2899 else if (java_lang_string_equals (env, scene_mode,
2900 android_hardware_camera_parameters.SCENE_MODE_THEATRE))
2901 return Parameters_SCENE_MODE_THEATRE;
2902 else if (java_lang_string_equals (env, scene_mode,
2903 android_hardware_camera_parameters.SCENE_MODE_BEACH))
2904 return Parameters_SCENE_MODE_BEACH;
2905 else if (java_lang_string_equals (env, scene_mode,
2906 android_hardware_camera_parameters.SCENE_MODE_SNOW))
2907 return Parameters_SCENE_MODE_SNOW;
2908 else if (java_lang_string_equals (env, scene_mode,
2909 android_hardware_camera_parameters.SCENE_MODE_SUNSET))
2910 return Parameters_SCENE_MODE_SUNSET;
2911 else if (java_lang_string_equals (env, scene_mode,
2912 android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO))
2913 return Parameters_SCENE_MODE_STEADYPHOTO;
2914 else if (java_lang_string_equals (env, scene_mode,
2915 android_hardware_camera_parameters.SCENE_MODE_FIREWORKS))
2916 return Parameters_SCENE_MODE_FIREWORKS;
2917 else if (java_lang_string_equals (env, scene_mode,
2918 android_hardware_camera_parameters.SCENE_MODE_SPORTS))
2919 return Parameters_SCENE_MODE_SPORTS;
2920 else if (java_lang_string_equals (env, scene_mode,
2921 android_hardware_camera_parameters.SCENE_MODE_PARTY))
2922 return Parameters_SCENE_MODE_PARTY;
2923 else if (java_lang_string_equals (env, scene_mode,
2924 android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT))
2925 return Parameters_SCENE_MODE_CANDLELIGHT;
2926 else if (java_lang_string_equals (env, scene_mode,
2927 android_hardware_camera_parameters.SCENE_MODE_BARCODE))
2928 return Parameters_SCENE_MODE_BARCODE;
2933 static const jstring
2934 _scene_mode_to_jstring (const gchar * scene_mode)
2939 if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_AUTO))
2940 return android_hardware_camera_parameters.SCENE_MODE_AUTO;
2941 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_ACTION))
2942 return android_hardware_camera_parameters.SCENE_MODE_ACTION;
2943 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_PORTRAIT))
2944 return android_hardware_camera_parameters.SCENE_MODE_PORTRAIT;
2945 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_LANDSCAPE))
2946 return android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE;
2947 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_NIGHT))
2948 return android_hardware_camera_parameters.SCENE_MODE_NIGHT;
2949 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_NIGHT_PORTRAIT))
2950 return android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT;
2951 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_THEATRE))
2952 return android_hardware_camera_parameters.SCENE_MODE_THEATRE;
2953 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_BEACH))
2954 return android_hardware_camera_parameters.SCENE_MODE_BEACH;
2955 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_SNOW))
2956 return android_hardware_camera_parameters.SCENE_MODE_SNOW;
2957 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_SUNSET))
2958 return android_hardware_camera_parameters.SCENE_MODE_SUNSET;
2959 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_STEADYPHOTO))
2960 return android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO;
2961 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_FIREWORKS))
2962 return android_hardware_camera_parameters.SCENE_MODE_FIREWORKS;
2963 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_SPORTS))
2964 return android_hardware_camera_parameters.SCENE_MODE_SPORTS;
2965 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_PARTY))
2966 return android_hardware_camera_parameters.SCENE_MODE_PARTY;
2967 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_CANDLELIGHT))
2968 return android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT;
2969 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_BARCODE))
2970 return android_hardware_camera_parameters.SCENE_MODE_BARCODE;
2975 static const gchar *
2976 _focus_mode_to_gchar (JNIEnv * env, jstring focus_mode)
2981 if (java_lang_string_equals (env, focus_mode,
2982 android_hardware_camera_parameters.FOCUS_MODE_AUTO))
2983 return Parameters_FOCUS_MODE_AUTO;
2984 else if (java_lang_string_equals (env, focus_mode,
2985 android_hardware_camera_parameters.FOCUS_MODE_INFINITY))
2986 return Parameters_FOCUS_MODE_INFINITY;
2987 else if (java_lang_string_equals (env, focus_mode,
2988 android_hardware_camera_parameters.FOCUS_MODE_MACRO))
2989 return Parameters_FOCUS_MODE_MACRO;
2990 else if (java_lang_string_equals (env, focus_mode,
2991 android_hardware_camera_parameters.FOCUS_MODE_FIXED))
2992 return Parameters_FOCUS_MODE_FIXED;
2993 else if (java_lang_string_equals (env, focus_mode,
2994 android_hardware_camera_parameters.FOCUS_MODE_EDOF))
2995 return Parameters_FOCUS_MODE_EDOF;
2996 else if (java_lang_string_equals (env, focus_mode,
2997 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO))
2998 return Parameters_FOCUS_MODE_CONTINUOUS_VIDEO;
2999 else if (java_lang_string_equals (env, focus_mode,
3000 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE))
3001 return Parameters_FOCUS_MODE_CONTINUOUS_PICTURE;
3007 _focus_mode_to_jstring (const gchar * focus_mode)
3012 if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_AUTO))
3013 return android_hardware_camera_parameters.FOCUS_MODE_AUTO;
3014 else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_INFINITY))
3015 return android_hardware_camera_parameters.FOCUS_MODE_INFINITY;
3016 else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_MACRO))
3017 return android_hardware_camera_parameters.FOCUS_MODE_MACRO;
3018 else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_FIXED))
3019 return android_hardware_camera_parameters.FOCUS_MODE_FIXED;
3020 else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_EDOF))
3021 return android_hardware_camera_parameters.FOCUS_MODE_EDOF;
3022 else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_CONTINUOUS_VIDEO))
3023 return android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO;
3024 else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_CONTINUOUS_PICTURE))
3025 return android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE;
3031 gst_ahc_parameters_flatten (GstAHCParameters * self)
3033 JNIEnv *env = gst_amc_jni_get_env ();
3035 jstring v_str = NULL;
3036 const gchar *v = NULL;
3039 gst_amc_jni_call_object_method (env, &err, self->object,
3040 android_hardware_camera_parameters.flatten, &v_str);
3042 GST_ERROR ("Failed to call android.hardware.Camera.Parameters.flatten: %s",
3047 v = (*env)->GetStringUTFChars (env, v_str, NULL);
3049 GST_ERROR ("Failed to convert string to UTF8");
3050 (*env)->ExceptionClear (env);
3057 g_clear_error (&err);
3059 (*env)->ReleaseStringUTFChars (env, v_str, v);
3061 gst_amc_jni_object_local_unref (env, v_str);
3067 gst_ahc_parameters_get_antibanding (GstAHCParameters * self)
3069 JNIEnv *env = gst_amc_jni_get_env ();
3071 const gchar *ret = NULL;
3072 jstring antibanding;
3074 gst_amc_jni_call_object_method (env, &err, self->object,
3075 android_hardware_camera_parameters.getAntibanding, &antibanding);
3078 ("Failed to call android.hardware.Camera.Parameters.getAntibanding: %s",
3080 g_clear_error (&err);
3084 ret = _antibanding_to_gchar (env, antibanding);
3087 gst_amc_jni_object_local_unref (env, antibanding);
3093 gst_ahc_parameters_get_color_effect (GstAHCParameters * self)
3095 JNIEnv *env = gst_amc_jni_get_env ();
3097 const gchar *ret = NULL;
3098 jstring color_effect;
3100 gst_amc_jni_call_object_method (env, &err, self->object,
3101 android_hardware_camera_parameters.getColorEffect, &color_effect);
3104 ("Failed to call android.hardware.Camera.Parameters.getColorEffect: %s",
3106 g_clear_error (&err);
3110 ret = _color_effect_to_gchar (env, color_effect);
3113 gst_amc_jni_object_local_unref (env, color_effect);
3119 gst_ahc_parameters_get_exposure_compensation (GstAHCParameters * self)
3121 JNIEnv *env = gst_amc_jni_get_env ();
3125 gst_amc_jni_call_int_method (env, &err, self->object,
3126 android_hardware_camera_parameters.getExposureCompensation, &ev);
3129 ("Failed to call android.hardware.Camera.Parameters.getExposureCompensation: %s",
3131 g_clear_error (&err);
3139 gst_ahc_parameters_get_exposure_compensation_step (GstAHCParameters * self)
3141 JNIEnv *env = gst_amc_jni_get_env ();
3145 gst_amc_jni_call_float_method (env, &err, self->object,
3146 android_hardware_camera_parameters.getExposureCompensationStep, &step);
3149 ("Failed to call android.hardware.Camera.Parameters.getExposureCompensationStep: %s",
3151 g_clear_error (&err);
3159 gst_ahc_parameters_get_flash_mode (GstAHCParameters * self)
3161 JNIEnv *env = gst_amc_jni_get_env ();
3163 const gchar *ret = NULL;
3166 gst_amc_jni_call_object_method (env, &err, self->object,
3167 android_hardware_camera_parameters.getFlashMode, &flash_mode);
3170 ("Failed to call android.hardware.Camera.Parameters.getFlashMode: %s",
3172 g_clear_error (&err);
3176 ret = _flash_mode_to_gchar (env, flash_mode);
3179 gst_amc_jni_object_local_unref (env, flash_mode);
3185 gst_ahc_parameters_get_focal_length (GstAHCParameters * self)
3187 JNIEnv *env = gst_amc_jni_get_env ();
3191 gst_amc_jni_call_float_method (env, &err, self->object,
3192 android_hardware_camera_parameters.getFocalLength, &length);
3195 ("Failed to call android.hardware.Camera.Parameters.getFocalLength: %s",
3197 g_clear_error (&err);
3205 gst_ahc_parameters_get_focus_mode (GstAHCParameters * self)
3207 JNIEnv *env = gst_amc_jni_get_env ();
3209 const gchar *ret = NULL;
3212 gst_amc_jni_call_object_method (env, &err, self->object,
3213 android_hardware_camera_parameters.getFocusMode, &focus_mode);
3216 ("Failed to call android.hardware.Camera.Parameters.getFocusMode: %s",
3218 g_clear_error (&err);
3222 ret = _focus_mode_to_gchar (env, focus_mode);
3225 gst_amc_jni_object_local_unref (env, focus_mode);
3231 gst_ahc_parameters_get_horizontal_view_angle (GstAHCParameters * self)
3233 JNIEnv *env = gst_amc_jni_get_env ();
3237 gst_amc_jni_call_float_method (env, &err, self->object,
3238 android_hardware_camera_parameters.getHorizontalViewAngle, &angle);
3241 ("Failed to call android.hardware.Camera.Parameters.getHorizontalViewAngle: %s",
3243 g_clear_error (&err);
3251 gst_ahc_parameters_get_max_exposure_compensation (GstAHCParameters * self)
3253 JNIEnv *env = gst_amc_jni_get_env ();
3257 gst_amc_jni_call_int_method (env, &err, self->object,
3258 android_hardware_camera_parameters.getMaxExposureCompensation, &max);
3261 ("Failed to call android.hardware.Camera.Parameters.getMaxExposureCompensation: %s",
3263 g_clear_error (&err);
3271 gst_ahc_parameters_get_max_zoom (GstAHCParameters * self)
3273 JNIEnv *env = gst_amc_jni_get_env ();
3277 gst_amc_jni_call_int_method (env, &err, self->object,
3278 android_hardware_camera_parameters.getMaxZoom, &max);
3281 ("Failed to call android.hardware.Camera.Parameters.getMaxZoom: %s",
3283 g_clear_error (&err);
3291 gst_ahc_parameters_get_min_exposure_compensation (GstAHCParameters * self)
3293 JNIEnv *env = gst_amc_jni_get_env ();
3297 gst_amc_jni_call_int_method (env, &err, self->object,
3298 android_hardware_camera_parameters.getMinExposureCompensation, &min);
3301 ("Failed to call android.hardware.Camera.Parameters.getMinExposureCompensation: %s",
3303 g_clear_error (&err);
3311 gst_ahc_parameters_get_preview_format (GstAHCParameters * self)
3313 JNIEnv *env = gst_amc_jni_get_env ();
3317 gst_amc_jni_call_int_method (env, &err, self->object,
3318 android_hardware_camera_parameters.getPreviewFormat, &format);
3321 ("Failed to call android.hardware.Camera.Parameters.getPreviewFormat: %s",
3323 g_clear_error (&err);
3331 gst_ahc_parameters_get_preview_fps_range (GstAHCParameters * self,
3332 gint * min, gint * max)
3334 JNIEnv *env = gst_amc_jni_get_env ();
3336 gboolean ret = FALSE;
3337 jintArray range = NULL;
3340 range = (*env)->NewIntArray (env, 2);
3342 (*env)->ExceptionClear (env);
3343 GST_ERROR ("Failed to create array");
3347 gst_amc_jni_call_void_method (env, &err, self->object,
3348 android_hardware_camera_parameters.getPreviewFpsRange, range);
3351 ("Failed to call android.hardware.Camera.Parameters.getPreviewFpsRange: %s",
3356 fps = (*env)->GetIntArrayElements (env, range, NULL);
3357 if ((*env)->ExceptionCheck (env) || !fps) {
3358 (*env)->ExceptionClear (env);
3359 GST_ERROR ("Failed to get array elements");
3370 g_clear_error (&err);
3372 (*env)->ReleaseIntArrayElements (env, range, fps, JNI_ABORT);
3374 gst_amc_jni_object_local_unref (env, range);
3380 gst_ahc_parameters_get_preview_size (GstAHCParameters * self)
3382 JNIEnv *env = gst_amc_jni_get_env ();
3384 jobject jsize = NULL;
3385 GstAHCSize *size = NULL;
3387 gst_amc_jni_call_object_method (env, &err, self->object,
3388 android_hardware_camera_parameters.getPreviewSize, &jsize);
3391 ("Failed to call android.hardware.Camera.Parameters.getPreviewSize: %s",
3396 size = g_slice_new (GstAHCSize);
3397 size->width = (*env)->GetIntField (env, jsize,
3398 android_hardware_camera_size.width);
3399 if ((*env)->ExceptionCheck (env)) {
3400 GST_ERROR ("Failed to get Camera.Size.width field");
3401 (*env)->ExceptionClear (env);
3402 g_slice_free (GstAHCSize, size);
3407 size->height = (*env)->GetIntField (env, jsize,
3408 android_hardware_camera_size.height);
3409 if ((*env)->ExceptionCheck (env)) {
3410 GST_ERROR ("Failed to get Camera.Size.height field");
3411 (*env)->ExceptionClear (env);
3412 g_slice_free (GstAHCSize, size);
3419 g_clear_error (&err);
3421 gst_amc_jni_object_local_unref (env, jsize);
3427 gst_ahc_parameters_get_scene_mode (GstAHCParameters * self)
3429 JNIEnv *env = gst_amc_jni_get_env ();
3431 const gchar *ret = NULL;
3434 gst_amc_jni_call_object_method (env, &err, self->object,
3435 android_hardware_camera_parameters.getSceneMode, &scene_mode);
3438 ("Failed to call android.hardware.Camera.Parameters.getSceneMode: %s",
3440 g_clear_error (&err);
3444 ret = _scene_mode_to_gchar (env, scene_mode);
3447 gst_amc_jni_object_local_unref (env, scene_mode);
3453 gst_ahc_parameters_get_supported_antibanding (GstAHCParameters * self)
3455 JNIEnv *env = gst_amc_jni_get_env ();
3457 jobject list = NULL;
3460 gst_amc_jni_call_object_method (env, &err, self->object,
3461 android_hardware_camera_parameters.getSupportedAntibanding, &list);
3464 ("Failed to call android.hardware.Camera.Parameters.getSupportedAntibanding: %s",
3466 g_clear_error (&err);
3471 jobject iterator = NULL;
3473 iterator = java_util_list_iterator (env, list);
3475 while (java_util_iterator_has_next (env, iterator)) {
3476 jobject str = java_util_iterator_next (env, iterator);
3479 const gchar *value = _antibanding_to_gchar (env, str);
3481 ret = g_list_append (ret, (gchar *) value);
3482 gst_amc_jni_object_local_unref (env, str);
3485 gst_amc_jni_object_local_unref (env, iterator);
3487 gst_amc_jni_object_local_unref (env, list);
3494 gst_ahc_parameters_supported_antibanding_free (GList * list)
3500 gst_ahc_parameters_get_supported_color_effects (GstAHCParameters * self)
3502 JNIEnv *env = gst_amc_jni_get_env ();
3504 jobject list = NULL;
3507 gst_amc_jni_call_object_method (env, &err, self->object,
3508 android_hardware_camera_parameters.getSupportedColorEffects, &list);
3511 ("Failed to call android.hardware.Camera.Parameters.getSupportedColorEffects: %s",
3513 g_clear_error (&err);
3518 jobject iterator = NULL;
3520 iterator = java_util_list_iterator (env, list);
3522 while (java_util_iterator_has_next (env, iterator)) {
3523 jobject str = java_util_iterator_next (env, iterator);
3526 const gchar *value = _color_effect_to_gchar (env, str);
3528 ret = g_list_append (ret, (gchar *) value);
3529 gst_amc_jni_object_local_unref (env, str);
3532 gst_amc_jni_object_local_unref (env, iterator);
3534 gst_amc_jni_object_local_unref (env, list);
3541 gst_ahc_parameters_supported_color_effects_free (GList * list)
3547 gst_ahc_parameters_get_supported_flash_modes (GstAHCParameters * self)
3549 JNIEnv *env = gst_amc_jni_get_env ();
3551 jobject list = NULL;
3554 gst_amc_jni_call_object_method (env, &err, self->object,
3555 android_hardware_camera_parameters.getSupportedFlashModes, &list);
3558 ("Failed to call android.hardware.Camera.Parameters.getSupportedFlashModes: %s",
3560 g_clear_error (&err);
3565 jobject iterator = NULL;
3567 iterator = java_util_list_iterator (env, list);
3569 while (java_util_iterator_has_next (env, iterator)) {
3570 jobject str = java_util_iterator_next (env, iterator);
3573 const gchar *value = _flash_mode_to_gchar (env, str);
3575 ret = g_list_append (ret, (gchar *) value);
3576 gst_amc_jni_object_local_unref (env, str);
3579 gst_amc_jni_object_local_unref (env, iterator);
3581 gst_amc_jni_object_local_unref (env, list);
3588 gst_ahc_parameters_supported_flash_modes_free (GList * list)
3594 gst_ahc_parameters_get_supported_focus_modes (GstAHCParameters * self)
3596 JNIEnv *env = gst_amc_jni_get_env ();
3598 jobject list = NULL;
3601 gst_amc_jni_call_object_method (env, &err, self->object,
3602 android_hardware_camera_parameters.getSupportedFocusModes, &list);
3605 ("Failed to call android.hardware.Camera.Parameters.getSupportedFocusModes: %s",
3607 g_clear_error (&err);
3612 jobject iterator = NULL;
3614 iterator = java_util_list_iterator (env, list);
3616 while (java_util_iterator_has_next (env, iterator)) {
3617 jobject str = java_util_iterator_next (env, iterator);
3620 const gchar *value = _focus_mode_to_gchar (env, str);
3622 ret = g_list_append (ret, (gchar *) value);
3623 gst_amc_jni_object_local_unref (env, str);
3626 gst_amc_jni_object_local_unref (env, iterator);
3628 gst_amc_jni_object_local_unref (env, list);
3635 gst_ahc_parameters_supported_focus_modes_free (GList * list)
3641 gst_ahc_parameters_get_supported_preview_formats (GstAHCParameters * self)
3643 JNIEnv *env = gst_amc_jni_get_env ();
3645 jobject list = NULL;
3648 gst_amc_jni_call_object_method (env, &err, self->object,
3649 android_hardware_camera_parameters.getSupportedPreviewFormats, &list);
3652 ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewFormats: %s",
3654 g_clear_error (&err);
3659 jobject iterator = NULL;
3661 iterator = java_util_list_iterator (env, list);
3663 while (java_util_iterator_has_next (env, iterator)) {
3664 jobject integer = java_util_iterator_next (env, iterator);
3667 jint value = java_lang_integer_int_value (env, integer);
3669 ret = g_list_append (ret, GINT_TO_POINTER (value));
3670 gst_amc_jni_object_local_unref (env, integer);
3673 gst_amc_jni_object_local_unref (env, iterator);
3675 gst_amc_jni_object_local_unref (env, list);
3682 gst_ahc_parameters_supported_preview_formats_free (GList * list)
3688 gst_ahc_parameters_get_supported_preview_fps_range (GstAHCParameters * self)
3690 JNIEnv *env = gst_amc_jni_get_env ();
3692 jobject list = NULL;
3695 gst_amc_jni_call_object_method (env, &err, self->object,
3696 android_hardware_camera_parameters.getSupportedPreviewFpsRange, &list);
3699 ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewFpsRange: %s",
3701 g_clear_error (&err);
3706 jobject iterator = NULL;
3708 iterator = java_util_list_iterator (env, list);
3710 while (java_util_iterator_has_next (env, iterator)) {
3711 jintArray range = java_util_iterator_next (env, iterator);
3714 jint *fps = g_new (jint, 2);
3716 (*env)->GetIntArrayRegion (env, range, 0, 2, fps);
3717 ret = g_list_append (ret, fps);
3718 gst_amc_jni_object_local_unref (env, range);
3721 gst_amc_jni_object_local_unref (env, iterator);
3723 gst_amc_jni_object_local_unref (env, list);
3730 gst_ahc_parameters_supported_preview_fps_range_free (GList * list)
3732 g_list_foreach (list, (GFunc) g_free, NULL);
3737 gst_ahc_parameters_get_supported_preview_sizes (GstAHCParameters * self)
3739 JNIEnv *env = gst_amc_jni_get_env ();
3741 jobject list = NULL;
3744 gst_amc_jni_call_object_method (env, &err, self->object,
3745 android_hardware_camera_parameters.getSupportedPreviewSizes, &list);
3748 ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewSizes: %s",
3750 g_clear_error (&err);
3755 jobject iterator = NULL;
3757 iterator = java_util_list_iterator (env, list);
3759 while (java_util_iterator_has_next (env, iterator)) {
3760 jobject jsize = java_util_iterator_next (env, iterator);
3765 width = (*env)->GetIntField (env, jsize,
3766 android_hardware_camera_size.width);
3767 height = (*env)->GetIntField (env, jsize,
3768 android_hardware_camera_size.height);
3770 ret = g_list_append (ret, gst_ahc_size_new (width, height));
3771 gst_amc_jni_object_local_unref (env, jsize);
3774 gst_amc_jni_object_local_unref (env, iterator);
3776 gst_amc_jni_object_local_unref (env, list);
3783 gst_ahc_parameters_supported_preview_sizes_free (GList * list)
3785 g_list_foreach (list, (GFunc) gst_ahc_size_free, NULL);
3790 gst_ahc_parameters_get_supported_scene_modes (GstAHCParameters * self)
3792 JNIEnv *env = gst_amc_jni_get_env ();
3794 jobject list = NULL;
3797 gst_amc_jni_call_object_method (env, &err, self->object,
3798 android_hardware_camera_parameters.getSupportedSceneModes, &list);
3801 ("Failed to call android.hardware.Camera.Parameters.getSupportedSceneModes: %s",
3803 g_clear_error (&err);
3808 jobject iterator = NULL;
3810 iterator = java_util_list_iterator (env, list);
3812 while (java_util_iterator_has_next (env, iterator)) {
3813 jobject str = java_util_iterator_next (env, iterator);
3816 const gchar *value = _scene_mode_to_gchar (env, str);
3818 ret = g_list_append (ret, (gchar *) value);
3819 gst_amc_jni_object_local_unref (env, str);
3822 gst_amc_jni_object_local_unref (env, iterator);
3824 gst_amc_jni_object_local_unref (env, list);
3831 gst_ahc_parameters_supported_scene_modes_free (GList * list)
3837 gst_ahc_parameters_get_supported_white_balance (GstAHCParameters * self)
3839 JNIEnv *env = gst_amc_jni_get_env ();
3841 jobject list = NULL;
3844 gst_amc_jni_call_object_method (env, &err, self->object,
3845 android_hardware_camera_parameters.getSupportedWhiteBalance, &list);
3848 ("Failed to call android.hardware.Camera.Parameters.getSupportedWhiteBalance: %s",
3850 g_clear_error (&err);
3855 jobject iterator = NULL;
3857 iterator = java_util_list_iterator (env, list);
3859 while (java_util_iterator_has_next (env, iterator)) {
3860 jobject str = java_util_iterator_next (env, iterator);
3863 const gchar *value = _white_balance_to_gchar (env, str);
3865 ret = g_list_append (ret, (gchar *) value);
3866 gst_amc_jni_object_local_unref (env, str);
3869 gst_amc_jni_object_local_unref (env, iterator);
3871 gst_amc_jni_object_local_unref (env, list);
3878 gst_ahc_parameters_supported_white_balance_free (GList * list)
3884 gst_ahc_parameters_get_vertical_view_angle (GstAHCParameters * self)
3886 JNIEnv *env = gst_amc_jni_get_env ();
3890 gst_amc_jni_call_float_method (env, &err, self->object,
3891 android_hardware_camera_parameters.getVerticalViewAngle, &angle);
3894 ("Failed to call android.hardware.Camera.Parameters.getVerticalViewAngle: %s",
3896 g_clear_error (&err);
3904 gst_ahc_parameters_get_video_stabilization (GstAHCParameters * self)
3906 JNIEnv *env = gst_amc_jni_get_env ();
3910 gst_amc_jni_call_boolean_method (env, &err, self->object,
3911 android_hardware_camera_parameters.getVideoStabilization, &ret);
3914 ("Failed to call android.hardware.Camera.Parameters.getVideoStabilization: %s",
3916 g_clear_error (&err);
3924 gst_ahc_parameters_get_white_balance (GstAHCParameters * self)
3926 JNIEnv *env = gst_amc_jni_get_env ();
3928 const gchar *ret = NULL;
3929 jstring white_balance;
3931 gst_amc_jni_call_object_method (env, &err, self->object,
3932 android_hardware_camera_parameters.getWhiteBalance, &white_balance);
3935 ("Failed to call android.hardware.Camera.Parameters.getWhiteBalance: %s",
3937 g_clear_error (&err);
3941 ret = _white_balance_to_gchar (env, white_balance);
3944 gst_amc_jni_object_local_unref (env, white_balance);
3950 gst_ahc_parameters_get_zoom (GstAHCParameters * self)
3952 JNIEnv *env = gst_amc_jni_get_env ();
3956 gst_amc_jni_call_int_method (env, &err, self->object,
3957 android_hardware_camera_parameters.getZoom, &zoom);
3959 GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getZoom: %s",
3961 g_clear_error (&err);
3969 gst_ahc_parameters_get_zoom_ratios (GstAHCParameters * self)
3971 JNIEnv *env = gst_amc_jni_get_env ();
3973 jobject list = NULL;
3976 gst_amc_jni_call_object_method (env, &err, self->object,
3977 android_hardware_camera_parameters.getZoomRatios, &list);
3980 ("Failed to call android.hardware.Camera.Parameters.getZoomRatios: %s",
3982 g_clear_error (&err);
3987 jobject iterator = NULL;
3989 iterator = java_util_list_iterator (env, list);
3991 while (java_util_iterator_has_next (env, iterator)) {
3992 jobject integer = java_util_iterator_next (env, iterator);
3995 jint value = java_lang_integer_int_value (env, integer);
3997 ret = g_list_append (ret, GINT_TO_POINTER (value));
3998 gst_amc_jni_object_local_unref (env, integer);
4001 gst_amc_jni_object_local_unref (env, iterator);
4003 gst_amc_jni_object_local_unref (env, list);
4010 gst_ahc_parameters_zoom_ratios_free (GList * list)
4016 gst_ahc_parameters_is_smooth_zoom_supported (GstAHCParameters * self)
4018 JNIEnv *env = gst_amc_jni_get_env ();
4022 gst_amc_jni_call_boolean_method (env, &err, self->object,
4023 android_hardware_camera_parameters.isSmoothZoomSupported, &supported);
4026 ("Failed to call android.hardware.Camera.Parameters.isSmoothZoomSupported: %s",
4028 g_clear_error (&err);
4036 gst_ahc_parameters_is_video_stabilization_supported (GstAHCParameters * self)
4038 JNIEnv *env = gst_amc_jni_get_env ();
4042 gst_amc_jni_call_boolean_method (env, &err, self->object,
4043 android_hardware_camera_parameters.isVideoStabilizationSupported,
4047 ("Failed to call android.hardware.Camera.Parameters.isVideoStabilizationSupported: %s",
4049 g_clear_error (&err);
4057 gst_ahc_parameters_is_zoom_supported (GstAHCParameters * self)
4059 JNIEnv *env = gst_amc_jni_get_env ();
4063 gst_amc_jni_call_boolean_method (env, &err, self->object,
4064 android_hardware_camera_parameters.isZoomSupported, &supported);
4067 ("Failed to call android.hardware.Camera.Parameters.isZoomSupported: %s",
4069 g_clear_error (&err);
4077 gst_ahc_parameters_set_antibanding (GstAHCParameters * self,
4078 const gchar * value)
4080 JNIEnv *env = gst_amc_jni_get_env ();
4082 jstring antibanding;
4084 antibanding = _antibanding_to_jstring (value);
4088 gst_amc_jni_call_void_method (env, &err, self->object,
4089 android_hardware_camera_parameters.setAntibanding, antibanding);
4092 ("Failed to call android.hardware.Camera.Parameters.setAntibanding: %s",
4094 g_clear_error (&err);
4102 gst_ahc_parameters_set_color_effect (GstAHCParameters * self,
4103 const gchar * value)
4105 JNIEnv *env = gst_amc_jni_get_env ();
4107 jstring color_effect;
4109 color_effect = _color_effect_to_jstring (value);
4113 gst_amc_jni_call_void_method (env, &err, self->object,
4114 android_hardware_camera_parameters.setColorEffect, color_effect);
4117 ("Failed to call android.hardware.Camera.Parameters.setColorEffect: %s",
4119 g_clear_error (&err);
4127 gst_ahc_parameters_set_exposure_compensation (GstAHCParameters * self,
4130 JNIEnv *env = gst_amc_jni_get_env ();
4133 gst_amc_jni_call_void_method (env, &err, self->object,
4134 android_hardware_camera_parameters.setExposureCompensation, value);
4137 ("Failed to call android.hardware.Camera.Parameters.setExposureCompensation: %s",
4139 g_clear_error (&err);
4147 gst_ahc_parameters_set_flash_mode (GstAHCParameters * self, const gchar * value)
4149 JNIEnv *env = gst_amc_jni_get_env ();
4153 flash_mode = _flash_mode_to_jstring (value);
4157 gst_amc_jni_call_void_method (env, &err, self->object,
4158 android_hardware_camera_parameters.setFlashMode, flash_mode);
4161 ("Failed to call android.hardware.Camera.Parameters.setFlashMode: %s",
4163 g_clear_error (&err);
4171 gst_ahc_parameters_set_focus_mode (GstAHCParameters * self, const gchar * value)
4173 JNIEnv *env = gst_amc_jni_get_env ();
4177 focus_mode = _focus_mode_to_jstring (value);
4181 gst_amc_jni_call_void_method (env, &err, self->object,
4182 android_hardware_camera_parameters.setFocusMode, focus_mode);
4185 ("Failed to call android.hardware.Camera.Parameters.setFocusMode: %s",
4187 g_clear_error (&err);
4195 gst_ahc_parameters_set_preview_format (GstAHCParameters * self, gint format)
4197 JNIEnv *env = gst_amc_jni_get_env ();
4200 gst_amc_jni_call_void_method (env, &err, self->object,
4201 android_hardware_camera_parameters.setPreviewFormat, format);
4204 ("Failed to call android.hardware.Camera.Parameters.setPreviewFormat: %s",
4206 g_clear_error (&err);
4214 gst_ahc_parameters_set_preview_fps_range (GstAHCParameters * self,
4217 JNIEnv *env = gst_amc_jni_get_env ();
4220 gst_amc_jni_call_void_method (env, &err, self->object,
4221 android_hardware_camera_parameters.setPreviewFpsRange, min, max);
4224 ("Failed to call android.hardware.Camera.Parameters.setPreviewFpsRange: %s",
4226 g_clear_error (&err);
4234 gst_ahc_parameters_set_preview_size (GstAHCParameters * self,
4235 gint width, gint height)
4237 JNIEnv *env = gst_amc_jni_get_env ();
4240 gst_amc_jni_call_void_method (env, &err, self->object,
4241 android_hardware_camera_parameters.setPreviewSize, width, height);
4244 ("Failed to call android.hardware.Camera.Parameters.setPreviewSize: %s",
4246 g_clear_error (&err);
4254 gst_ahc_parameters_set_scene_mode (GstAHCParameters * self, const gchar * value)
4256 JNIEnv *env = gst_amc_jni_get_env ();
4260 scene_mode = _scene_mode_to_jstring (value);
4264 gst_amc_jni_call_void_method (env, &err, self->object,
4265 android_hardware_camera_parameters.setSceneMode, scene_mode);
4268 ("Failed to call android.hardware.Camera.Parameters.setSceneMode: %s",
4270 g_clear_error (&err);
4279 gst_ahc_parameters_set_video_stabilization (GstAHCParameters * self,
4282 JNIEnv *env = gst_amc_jni_get_env ();
4285 gst_amc_jni_call_void_method (env, &err, self->object,
4286 android_hardware_camera_parameters.setVideoStabilization, toggle);
4289 ("Failed to call android.hardware.Camera.Parameters.setVideoStabilization: %s",
4291 g_clear_error (&err);
4299 gst_ahc_parameters_set_white_balance (GstAHCParameters * self,
4300 const gchar * value)
4302 JNIEnv *env = gst_amc_jni_get_env ();
4304 jstring white_balance;
4306 white_balance = _white_balance_to_jstring (value);
4310 gst_amc_jni_call_void_method (env, &err, self->object,
4311 android_hardware_camera_parameters.setWhiteBalance, white_balance);
4314 ("Failed to call android.hardware.Camera.Parameters.setWhiteBalance: %s",
4316 g_clear_error (&err);
4324 gst_ahc_parameters_set_zoom (GstAHCParameters * self, gint value)
4326 JNIEnv *env = gst_amc_jni_get_env ();
4329 gst_amc_jni_call_void_method (env, &err, self->object,
4330 android_hardware_camera_parameters.setZoom, value);
4332 GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setZoom: %s",
4334 g_clear_error (&err);
4342 gst_ahc_parameters_unflatten (GstAHCParameters * self, const gchar * flattened)
4344 JNIEnv *env = gst_amc_jni_get_env ();
4346 jstring v_str = NULL;
4347 gboolean ret = TRUE;
4349 v_str = (*env)->NewStringUTF (env, flattened);
4353 gst_amc_jni_call_void_method (env, &err, self->object,
4354 android_hardware_camera_parameters.unflatten, v_str);
4357 ("Failed to call android.hardware.Camera.Parameters.unflatten: %s",
4359 g_clear_error (&err);
4363 gst_amc_jni_object_local_unref (env, self->object);
4369 gst_ahc_parameters_free (GstAHCParameters * self)
4371 JNIEnv *env = gst_amc_jni_get_env ();
4373 g_return_if_fail (self != NULL);
4374 g_return_if_fail (self->object != NULL);
4376 GST_DEBUG ("freeing parameters %p", self->object);
4378 gst_amc_jni_object_unref (env, self->object);
4379 g_slice_free (GstAHCParameters, self);