1 /*
2 * Copyright (C) 2012, Collabora Ltd.
3 * Copyright (C) 2012, Cisco Systems, Inc.
4 * Author: Youness Alaoui <youness.alaoui@collabora.co.uk>
5 *
6 * Copyright (C) 2015, Collabora Ltd.
7 * Author: Justin Kim <justin.kim@collabora.com>
8 *
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.
13 *
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.
18 *
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
22 *
23 */
24
25 #ifdef HAVE_CONFIG_H
26 #include "config.h"
27 #endif
28
29 #include "gstjniutils.h"
30
31 #include "gst-android-hardware-camera.h"
32
33 GST_DEBUG_CATEGORY_STATIC (ahc_debug);
34 #define GST_CAT_DEFAULT ahc_debug
35
36 static struct
37 {
38 jclass klass;
39 jmethodID addCallbackBuffer;
40 jmethodID autoFocus;
41 jmethodID cancelAutoFocus;
42 jmethodID getCameraInfo;
43 jmethodID getNumberOfCameras;
44 jmethodID getParameters;
45 jmethodID lock;
46 jmethodID open;
47 jmethodID reconnect;
48 jmethodID release;
49 jmethodID setErrorCallback;
50 jmethodID setParameters;
51 jmethodID setPreviewCallbackWithBuffer;
52 jmethodID setPreviewTexture;
53 jmethodID startPreview;
54 jmethodID startSmoothZoom;
55 jmethodID stopPreview;
56 jmethodID stopSmoothZoom;
57 jmethodID unlock;
58 } android_hardware_camera = {
59 0};
60
61 static struct
62 {
63 jclass klass;
64 jmethodID constructor;
65 jfieldID facing;
66 jfieldID orientation;
67 jint CAMERA_FACING_BACK;
68 jint CAMERA_FACING_FRONT;
69 } android_hardware_camera_camerainfo = {
70 0};
71
72 gint CameraInfo_CAMERA_FACING_BACK;
73 gint CameraInfo_CAMERA_FACING_FRONT;
74
75 static struct
76 {
77 jclass klass;
78 jfieldID width;
79 jfieldID height;
80 } android_hardware_camera_size = {
81 0};
82
83 static struct
84 {
85 jclass klass;
86 jmethodID flatten;
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;
96 jmethodID getMaxZoom;
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;
114 jmethodID getZoom;
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;
130 jmethodID setZoom;
131 jmethodID unflatten;
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;
140 jstring EFFECT_NONE;
141 jstring EFFECT_MONO;
142 jstring EFFECT_NEGATIVE;
143 jstring EFFECT_SOLARIZE;
144 jstring EFFECT_SEPIA;
145 jstring EFFECT_POSTERIZE;
146 jstring EFFECT_WHITEBOARD;
147 jstring EFFECT_BLACKBOARD;
148 jstring EFFECT_AQUA;
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 = {
182 0};
183
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;
233
234 static struct
235 {
236 jclass klass;
237 jmethodID iterator;
238 } java_util_list = {
239 0};
240
241 static struct
242 {
243 jclass klass;
244 jmethodID hasNext;
245 jmethodID next;
246 } java_util_iterator = {
247 0};
248
249 static struct
250 {
251 jclass klass;
252 jmethodID intValue;
253 } java_lang_integer = {
254 0};
255
256 static struct
257 {
258 jclass klass;
259 jmethodID equals;
260 } java_lang_string = {
261 0};
262
263 static struct
264 {
265 jclass klass;
266 jmethodID constructor;
267 } org_freedesktop_gstreamer_androidmedia_gstahccallback = {
268 0};
269
270 static void
gst_ah_camera_on_preview_frame(JNIEnv * env,jclass klass,jbyteArray data,jobject camera,jlong callback,jlong user_data)271 gst_ah_camera_on_preview_frame (JNIEnv * env, jclass klass, jbyteArray data,
272 jobject camera, jlong callback, jlong user_data)
273 {
274 GstAHCPreviewCallback cb = (GstAHCPreviewCallback) (gsize) callback;
275
276 if (cb)
277 cb (data, (gpointer) (gsize) user_data);
278 }
279
280 static void
gst_ah_camera_on_error(JNIEnv * env,jclass klass,jint error,jobject camera,jlong callback,jlong user_data)281 gst_ah_camera_on_error (JNIEnv * env, jclass klass, jint error,
282 jobject camera, jlong callback, jlong user_data)
283 {
284 GstAHCErrorCallback cb = (GstAHCErrorCallback) (gsize) callback;
285
286 if (cb)
287 cb (error, (gpointer) (gsize) user_data);
288 }
289
290 static void
gst_ah_camera_on_auto_focus(JNIEnv * env,jclass klass,jboolean success,jobject camera,jlong callback,jlong user_data)291 gst_ah_camera_on_auto_focus (JNIEnv * env, jclass klass, jboolean success,
292 jobject camera, jlong callback, jlong user_data)
293 {
294 GstAHCAutoFocusCallback cb = (GstAHCAutoFocusCallback) (gsize) callback;
295
296 if (cb)
297 cb (success, (gpointer) (gsize) user_data);
298 }
299
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}
310 };
311
312 static gboolean
_init_classes(void)313 _init_classes (void)
314 {
315 JNIEnv *env;
316 GError *err = NULL;
317
318 jclass klass;
319 jfieldID fieldID;
320
321 env = gst_amc_jni_get_env ();
322
323 /* android.hardware.Camera */
324 klass = android_hardware_camera.klass =
325 gst_amc_jni_get_class (env, &err, "android/hardware/Camera");
326 if (!klass)
327 goto failed;
328
329 android_hardware_camera.addCallbackBuffer =
330 gst_amc_jni_get_method_id (env, &err, klass,
331 "addCallbackBuffer", "([B)V");
332
333 android_hardware_camera.autoFocus =
334 gst_amc_jni_get_method_id (env, &err, klass,
335 "autoFocus", "(Landroid/hardware/Camera$AutoFocusCallback;)V");
336
337 android_hardware_camera.cancelAutoFocus =
338 gst_amc_jni_get_method_id (env, &err, klass, "cancelAutoFocus", "()V");
339
340 android_hardware_camera.getCameraInfo =
341 gst_amc_jni_get_static_method_id (env, &err, klass,
342 "getCameraInfo", "(ILandroid/hardware/Camera$CameraInfo;)V");
343
344 android_hardware_camera.getNumberOfCameras =
345 gst_amc_jni_get_static_method_id (env, &err, klass,
346 "getNumberOfCameras", "()I");
347
348 android_hardware_camera.getParameters =
349 gst_amc_jni_get_method_id (env, &err, klass,
350 "getParameters", "()Landroid/hardware/Camera$Parameters;");
351
352 android_hardware_camera.lock =
353 gst_amc_jni_get_method_id (env, &err, klass, "lock", "()V");
354
355 android_hardware_camera.open =
356 gst_amc_jni_get_static_method_id (env, &err, klass,
357 "open", "(I)Landroid/hardware/Camera;");
358
359 android_hardware_camera.reconnect =
360 gst_amc_jni_get_method_id (env, &err, klass, "reconnect", "()V");
361
362 android_hardware_camera.release =
363 gst_amc_jni_get_method_id (env, &err, klass, "release", "()V");
364
365 android_hardware_camera.setErrorCallback =
366 gst_amc_jni_get_method_id (env, &err, klass, "setErrorCallback",
367 "(Landroid/hardware/Camera$ErrorCallback;)V");
368
369 android_hardware_camera.setParameters =
370 gst_amc_jni_get_method_id (env, &err, klass, "setParameters",
371 "(Landroid/hardware/Camera$Parameters;)V");
372
373 android_hardware_camera.setPreviewCallbackWithBuffer =
374 gst_amc_jni_get_method_id (env, &err, klass,
375 "setPreviewCallbackWithBuffer",
376 "(Landroid/hardware/Camera$PreviewCallback;)V");
377
378 android_hardware_camera.setPreviewTexture =
379 gst_amc_jni_get_method_id (env, &err, klass,
380 "setPreviewTexture", "(Landroid/graphics/SurfaceTexture;)V");
381
382 android_hardware_camera.startPreview =
383 gst_amc_jni_get_method_id (env, &err, klass, "startPreview", "()V");
384
385 android_hardware_camera.startSmoothZoom =
386 gst_amc_jni_get_method_id (env, &err, klass, "startSmoothZoom", "(I)V");
387
388 android_hardware_camera.stopPreview =
389 gst_amc_jni_get_method_id (env, &err, klass, "stopPreview", "()V");
390
391 android_hardware_camera.stopPreview =
392 gst_amc_jni_get_method_id (env, &err, klass, "stopPreview", "()V");
393
394 android_hardware_camera.unlock =
395 gst_amc_jni_get_method_id (env, &err, klass, "unlock", "()V");
396
397 /* android.hardware.Camera.CameraInfo */
398 klass = android_hardware_camera_camerainfo.klass =
399 gst_amc_jni_get_class (env, &err, "android/hardware/Camera$CameraInfo");
400 if (!klass)
401 goto failed;
402
403 android_hardware_camera_camerainfo.constructor =
404 gst_amc_jni_get_method_id (env, &err, klass, "<init>", "()V");
405
406 android_hardware_camera_camerainfo.facing =
407 gst_amc_jni_get_field_id (env, &err, klass, "facing", "I");
408
409 android_hardware_camera_camerainfo.orientation =
410 gst_amc_jni_get_field_id (env, &err, klass, "orientation", "I");
411
412
413 fieldID =
414 gst_amc_jni_get_static_field_id (env, &err, klass, "CAMERA_FACING_BACK",
415 "I");
416 if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
417 &android_hardware_camera_camerainfo.CAMERA_FACING_BACK))
418 goto failed;
419 CameraInfo_CAMERA_FACING_BACK =
420 android_hardware_camera_camerainfo.CAMERA_FACING_BACK;
421
422 fieldID =
423 gst_amc_jni_get_static_field_id (env, &err, klass, "CAMERA_FACING_FRONT",
424 "I");
425 if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
426 &android_hardware_camera_camerainfo.CAMERA_FACING_FRONT))
427 goto failed;
428 CameraInfo_CAMERA_FACING_FRONT =
429 android_hardware_camera_camerainfo.CAMERA_FACING_FRONT;
430
431 /* android.hardware.Camera.Size */
432 klass = android_hardware_camera_size.klass =
433 gst_amc_jni_get_class (env, &err, "android/hardware/Camera$Size");
434 if (!klass)
435 goto failed;
436
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");
441
442 /* android.hardware.Camera.Parameters */
443 klass = android_hardware_camera_parameters.klass =
444 gst_amc_jni_get_class (env, &err, "android/hardware/Camera$Parameters");
445 if (!klass)
446 goto failed;
447
448 android_hardware_camera_parameters.flatten =
449 gst_amc_jni_get_method_id (env, &err, klass, "flatten",
450 "()Ljava/lang/String;");
451
452 android_hardware_camera_parameters.getAntibanding =
453 gst_amc_jni_get_method_id (env, &err, klass, "getAntibanding",
454 "()Ljava/lang/String;");
455
456 android_hardware_camera_parameters.getColorEffect =
457 gst_amc_jni_get_method_id (env, &err, klass, "getColorEffect",
458 "()Ljava/lang/String;");
459
460 android_hardware_camera_parameters.getExposureCompensation =
461 gst_amc_jni_get_method_id (env, &err, klass, "getExposureCompensation",
462 "()I");
463
464 android_hardware_camera_parameters.getExposureCompensationStep =
465 gst_amc_jni_get_method_id (env, &err, klass,
466 "getExposureCompensationStep", "()F");
467
468 android_hardware_camera_parameters.getFlashMode =
469 gst_amc_jni_get_method_id (env, &err, klass, "getFlashMode",
470 "()Ljava/lang/String;");
471
472 android_hardware_camera_parameters.getFocalLength =
473 gst_amc_jni_get_method_id (env, &err, klass, "getFocalLength", "()F");
474
475 android_hardware_camera_parameters.getFocusMode =
476 gst_amc_jni_get_method_id (env, &err, klass, "getFocusMode",
477 "()Ljava/lang/String;");
478
479 android_hardware_camera_parameters.getHorizontalViewAngle =
480 gst_amc_jni_get_method_id (env, &err, klass, "getHorizontalViewAngle",
481 "()F");
482
483 android_hardware_camera_parameters.getMaxExposureCompensation =
484 gst_amc_jni_get_method_id (env, &err, klass, "getMaxExposureCompensation",
485 "()I");
486
487 android_hardware_camera_parameters.getMaxZoom =
488 gst_amc_jni_get_method_id (env, &err, klass, "getMaxZoom", "()I");
489
490 android_hardware_camera_parameters.getMinExposureCompensation =
491 gst_amc_jni_get_method_id (env, &err, klass, "getMinExposureCompensation",
492 "()I");
493
494 android_hardware_camera_parameters.getPreviewFormat =
495 gst_amc_jni_get_method_id (env, &err, klass, "getPreviewFormat", "()I");
496
497 android_hardware_camera_parameters.getPreviewFpsRange =
498 gst_amc_jni_get_method_id (env, &err, klass, "getPreviewFpsRange",
499 "([I)V");
500
501 android_hardware_camera_parameters.getPreviewSize =
502 gst_amc_jni_get_method_id (env, &err, klass, "getPreviewSize",
503 "()Landroid/hardware/Camera$Size;");
504
505 android_hardware_camera_parameters.getSceneMode =
506 gst_amc_jni_get_method_id (env, &err, klass, "getSceneMode",
507 "()Ljava/lang/String;");
508
509 android_hardware_camera_parameters.getSupportedAntibanding =
510 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedAntibanding",
511 "()Ljava/util/List;");
512
513 android_hardware_camera_parameters.getSupportedColorEffects =
514 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedColorEffects",
515 "()Ljava/util/List;");
516
517 android_hardware_camera_parameters.getSupportedFlashModes =
518 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedFlashModes",
519 "()Ljava/util/List;");
520
521 android_hardware_camera_parameters.getSupportedFocusModes =
522 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedFocusModes",
523 "()Ljava/util/List;");
524
525 android_hardware_camera_parameters.getSupportedPreviewFormats =
526 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedPreviewFormats",
527 "()Ljava/util/List;");
528
529 android_hardware_camera_parameters.getSupportedPreviewFpsRange =
530 gst_amc_jni_get_method_id (env, &err, klass,
531 "getSupportedPreviewFpsRange", "()Ljava/util/List;");
532
533 android_hardware_camera_parameters.getSupportedPreviewSizes =
534 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedPreviewSizes",
535 "()Ljava/util/List;");
536
537 android_hardware_camera_parameters.getSupportedSceneModes =
538 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedSceneModes",
539 "()Ljava/util/List;");
540
541 android_hardware_camera_parameters.getSupportedWhiteBalance =
542 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedWhiteBalance",
543 "()Ljava/util/List;");
544
545 android_hardware_camera_parameters.getVerticalViewAngle =
546 gst_amc_jni_get_method_id (env, &err, klass, "getVerticalViewAngle",
547 "()F");
548
549 android_hardware_camera_parameters.getVideoStabilization =
550 gst_amc_jni_get_method_id (env, &err, klass, "getVideoStabilization",
551 "()Z");
552
553 android_hardware_camera_parameters.getWhiteBalance =
554 gst_amc_jni_get_method_id (env, &err, klass, "getWhiteBalance",
555 "()Ljava/lang/String;");
556
557 android_hardware_camera_parameters.getZoom =
558 gst_amc_jni_get_method_id (env, &err, klass, "getZoom", "()I");
559
560 android_hardware_camera_parameters.getZoomRatios =
561 gst_amc_jni_get_method_id (env, &err, klass, "getZoomRatios",
562 "()Ljava/util/List;");
563
564 android_hardware_camera_parameters.isSmoothZoomSupported =
565 gst_amc_jni_get_method_id (env, &err, klass, "isSmoothZoomSupported",
566 "()Z");
567
568 android_hardware_camera_parameters.isVideoStabilizationSupported =
569 gst_amc_jni_get_method_id (env, &err, klass,
570 "isVideoStabilizationSupported", "()Z");
571
572 android_hardware_camera_parameters.isZoomSupported =
573 gst_amc_jni_get_method_id (env, &err, klass, "isZoomSupported", "()Z");
574
575 android_hardware_camera_parameters.setAntibanding =
576 gst_amc_jni_get_method_id (env, &err, klass, "setAntibanding",
577 "(Ljava/lang/String;)V");
578
579 android_hardware_camera_parameters.setColorEffect =
580 gst_amc_jni_get_method_id (env, &err, klass, "setColorEffect",
581 "(Ljava/lang/String;)V");
582
583 android_hardware_camera_parameters.setExposureCompensation =
584 gst_amc_jni_get_method_id (env, &err, klass, "setExposureCompensation",
585 "(I)V");
586
587 android_hardware_camera_parameters.setFlashMode =
588 gst_amc_jni_get_method_id (env, &err, klass, "setFlashMode",
589 "(Ljava/lang/String;)V");
590
591 android_hardware_camera_parameters.setFocusMode =
592 gst_amc_jni_get_method_id (env, &err, klass, "setFocusMode",
593 "(Ljava/lang/String;)V");
594
595 android_hardware_camera_parameters.setPreviewFormat =
596 gst_amc_jni_get_method_id (env, &err, klass, "setPreviewFormat", "(I)V");
597
598 android_hardware_camera_parameters.setPreviewFpsRange =
599 gst_amc_jni_get_method_id (env, &err, klass, "setPreviewFpsRange",
600 "(II)V");
601
602 android_hardware_camera_parameters.setPreviewSize =
603 gst_amc_jni_get_method_id (env, &err, klass, "setPreviewSize", "(II)V");
604
605 android_hardware_camera_parameters.setSceneMode =
606 gst_amc_jni_get_method_id (env, &err, klass, "setSceneMode",
607 "(Ljava/lang/String;)V");
608
609 android_hardware_camera_parameters.setWhiteBalance =
610 gst_amc_jni_get_method_id (env, &err, klass, "setWhiteBalance",
611 "(Ljava/lang/String;)V");
612
613 android_hardware_camera_parameters.setVideoStabilization =
614 gst_amc_jni_get_method_id (env, &err, klass, "setVideoStabilization",
615 "(Z)V");
616
617 android_hardware_camera_parameters.setZoom =
618 gst_amc_jni_get_method_id (env, &err, klass, "setZoom", "(I)V");
619
620 android_hardware_camera_parameters.unflatten =
621 gst_amc_jni_get_method_id (env, &err, klass, "unflatten",
622 "(Ljava/lang/String;)V");
623
624 fieldID =
625 gst_amc_jni_get_static_field_id (env, &err, klass, "WHITE_BALANCE_AUTO",
626 "Ljava/lang/String;");
627 if (!fieldID)
628 goto failed;
629 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
630 &android_hardware_camera_parameters.WHITE_BALANCE_AUTO))
631 goto failed;
632
633 Parameters_WHITE_BALANCE_AUTO =
634 (*env)->GetStringUTFChars (env,
635 android_hardware_camera_parameters.WHITE_BALANCE_AUTO, NULL);
636 {
637 jobject local = android_hardware_camera_parameters.WHITE_BALANCE_AUTO;
638
639 android_hardware_camera_parameters.WHITE_BALANCE_AUTO =
640 gst_amc_jni_object_make_global (env, local);
641 }
642
643 fieldID =
644 gst_amc_jni_get_static_field_id (env, &err, klass,
645 "WHITE_BALANCE_INCANDESCENT", "Ljava/lang/String;");
646 if (!fieldID)
647 goto failed;
648 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
649 &android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT))
650 goto failed;
651
652 Parameters_WHITE_BALANCE_INCANDESCENT =
653 (*env)->GetStringUTFChars (env,
654 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT, NULL);
655 {
656 jobject local =
657 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT;
658
659 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT =
660 gst_amc_jni_object_make_global (env, local);
661 }
662
663 fieldID =
664 gst_amc_jni_get_static_field_id (env, &err, klass,
665 "WHITE_BALANCE_FLUORESCENT", "Ljava/lang/String;");
666 if (!fieldID)
667 goto failed;
668 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
669 &android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT))
670 goto failed;
671
672 Parameters_WHITE_BALANCE_FLUORESCENT =
673 (*env)->GetStringUTFChars (env,
674 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT, NULL);
675 {
676 jobject local =
677 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT;
678
679 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT =
680 gst_amc_jni_object_make_global (env, local);
681 }
682
683 fieldID =
684 gst_amc_jni_get_static_field_id (env, &err, klass,
685 "WHITE_BALANCE_WARM_FLUORESCENT", "Ljava/lang/String;");
686 if (!fieldID)
687 goto failed;
688 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
689 &android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT))
690 goto failed;
691
692 Parameters_WHITE_BALANCE_WARM_FLUORESCENT =
693 (*env)->GetStringUTFChars (env,
694 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT, NULL);
695 {
696 jobject local =
697 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT;
698
699 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT =
700 gst_amc_jni_object_make_global (env, local);
701 }
702
703 fieldID =
704 gst_amc_jni_get_static_field_id (env, &err, klass,
705 "WHITE_BALANCE_DAYLIGHT", "Ljava/lang/String;");
706 if (!fieldID)
707 goto failed;
708 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
709 &android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT))
710 goto failed;
711
712 Parameters_WHITE_BALANCE_DAYLIGHT =
713 (*env)->GetStringUTFChars (env,
714 android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT, NULL);
715 {
716 jobject local = android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT;
717
718 android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT =
719 gst_amc_jni_object_make_global (env, local);
720 }
721
722 fieldID =
723 gst_amc_jni_get_static_field_id (env, &err, klass,
724 "WHITE_BALANCE_CLOUDY_DAYLIGHT", "Ljava/lang/String;");
725 if (!fieldID)
726 goto failed;
727 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
728 &android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT))
729 goto failed;
730 Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT =
731 (*env)->GetStringUTFChars (env,
732 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT, NULL);
733 {
734 jobject local =
735 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT;
736
737 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT =
738 gst_amc_jni_object_make_global (env, local);
739 }
740
741 fieldID =
742 gst_amc_jni_get_static_field_id (env, &err, klass,
743 "WHITE_BALANCE_TWILIGHT", "Ljava/lang/String;");
744 if (!fieldID)
745 goto failed;
746 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
747 &android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT))
748 goto failed;
749 Parameters_WHITE_BALANCE_TWILIGHT =
750 (*env)->GetStringUTFChars (env,
751 android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT, NULL);
752 {
753 jobject local = android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT;
754
755 android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT =
756 gst_amc_jni_object_make_global (env, local);
757 }
758
759 fieldID =
760 gst_amc_jni_get_static_field_id (env, &err, klass, "WHITE_BALANCE_SHADE",
761 "Ljava/lang/String;");
762 if (!fieldID)
763 goto failed;
764 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
765 &android_hardware_camera_parameters.WHITE_BALANCE_SHADE))
766 goto failed;
767
768 Parameters_WHITE_BALANCE_SHADE =
769 (*env)->GetStringUTFChars (env,
770 android_hardware_camera_parameters.WHITE_BALANCE_SHADE, NULL);
771 {
772 jobject local = android_hardware_camera_parameters.WHITE_BALANCE_SHADE;
773
774 android_hardware_camera_parameters.WHITE_BALANCE_SHADE =
775 gst_amc_jni_object_make_global (env, local);
776 }
777
778 fieldID =
779 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_NONE",
780 "Ljava/lang/String;");
781 if (!fieldID)
782 goto failed;
783 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
784 &android_hardware_camera_parameters.EFFECT_NONE))
785 goto failed;
786
787 Parameters_EFFECT_NONE =
788 (*env)->GetStringUTFChars (env,
789 android_hardware_camera_parameters.EFFECT_NONE, NULL);
790 {
791 jobject local = android_hardware_camera_parameters.EFFECT_NONE;
792
793 android_hardware_camera_parameters.EFFECT_NONE =
794 gst_amc_jni_object_make_global (env, local);
795 }
796
797 fieldID =
798 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_MONO",
799 "Ljava/lang/String;");
800 if (!fieldID)
801 goto failed;
802 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
803 &android_hardware_camera_parameters.EFFECT_MONO))
804 goto failed;
805
806 Parameters_EFFECT_MONO =
807 (*env)->GetStringUTFChars (env,
808 android_hardware_camera_parameters.EFFECT_MONO, NULL);
809 {
810 jobject local = android_hardware_camera_parameters.EFFECT_MONO;
811
812 android_hardware_camera_parameters.EFFECT_MONO =
813 gst_amc_jni_object_make_global (env, local);
814 }
815
816 fieldID =
817 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_NEGATIVE",
818 "Ljava/lang/String;");
819 if (!fieldID)
820 goto failed;
821 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
822 &android_hardware_camera_parameters.EFFECT_NEGATIVE))
823 goto failed;
824
825 Parameters_EFFECT_NEGATIVE =
826 (*env)->GetStringUTFChars (env,
827 android_hardware_camera_parameters.EFFECT_NEGATIVE, NULL);
828 {
829 jobject local = android_hardware_camera_parameters.EFFECT_NEGATIVE;
830
831 android_hardware_camera_parameters.EFFECT_NEGATIVE =
832 gst_amc_jni_object_make_global (env, local);
833 }
834
835 fieldID =
836 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_SOLARIZE",
837 "Ljava/lang/String;");
838 if (!fieldID)
839 goto failed;
840 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
841 &android_hardware_camera_parameters.EFFECT_SOLARIZE))
842 goto failed;
843
844 Parameters_EFFECT_SOLARIZE =
845 (*env)->GetStringUTFChars (env,
846 android_hardware_camera_parameters.EFFECT_SOLARIZE, NULL);
847 {
848 jobject local = android_hardware_camera_parameters.EFFECT_SOLARIZE;
849
850 android_hardware_camera_parameters.EFFECT_SOLARIZE =
851 gst_amc_jni_object_make_global (env, local);
852 }
853
854 fieldID =
855 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_SEPIA",
856 "Ljava/lang/String;");
857 if (!fieldID)
858 goto failed;
859 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
860 &android_hardware_camera_parameters.EFFECT_SEPIA))
861 goto failed;
862
863 Parameters_EFFECT_SEPIA =
864 (*env)->GetStringUTFChars (env,
865 android_hardware_camera_parameters.EFFECT_SEPIA, NULL);
866 {
867 jobject local = android_hardware_camera_parameters.EFFECT_SEPIA;
868
869 android_hardware_camera_parameters.EFFECT_SEPIA =
870 gst_amc_jni_object_make_global (env, local);
871 }
872
873 fieldID =
874 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_POSTERIZE",
875 "Ljava/lang/String;");
876 if (!fieldID)
877 goto failed;
878 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
879 &android_hardware_camera_parameters.EFFECT_POSTERIZE))
880 goto failed;
881
882 Parameters_EFFECT_POSTERIZE =
883 (*env)->GetStringUTFChars (env,
884 android_hardware_camera_parameters.EFFECT_POSTERIZE, NULL);
885 {
886 jobject local = android_hardware_camera_parameters.EFFECT_POSTERIZE;
887
888 android_hardware_camera_parameters.EFFECT_POSTERIZE =
889 gst_amc_jni_object_make_global (env, local);
890 }
891
892 fieldID =
893 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_WHITEBOARD",
894 "Ljava/lang/String;");
895 if (!fieldID)
896 goto failed;
897 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
898 &android_hardware_camera_parameters.EFFECT_WHITEBOARD))
899 goto failed;
900
901 Parameters_EFFECT_WHITEBOARD =
902 (*env)->GetStringUTFChars (env,
903 android_hardware_camera_parameters.EFFECT_WHITEBOARD, NULL);
904 {
905 jobject local = android_hardware_camera_parameters.EFFECT_WHITEBOARD;
906
907 android_hardware_camera_parameters.EFFECT_WHITEBOARD =
908 gst_amc_jni_object_make_global (env, local);
909 }
910
911 fieldID =
912 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_BLACKBOARD",
913 "Ljava/lang/String;");
914 if (!fieldID)
915 goto failed;
916 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
917 &android_hardware_camera_parameters.EFFECT_BLACKBOARD))
918 goto failed;
919
920 Parameters_EFFECT_BLACKBOARD =
921 (*env)->GetStringUTFChars (env,
922 android_hardware_camera_parameters.EFFECT_BLACKBOARD, NULL);
923 {
924 jobject local = android_hardware_camera_parameters.EFFECT_BLACKBOARD;
925
926 android_hardware_camera_parameters.EFFECT_BLACKBOARD =
927 gst_amc_jni_object_make_global (env, local);
928 }
929
930 fieldID =
931 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_AQUA",
932 "Ljava/lang/String;");
933 if (!fieldID)
934 goto failed;
935 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
936 &android_hardware_camera_parameters.EFFECT_AQUA))
937 goto failed;
938
939 Parameters_EFFECT_AQUA =
940 (*env)->GetStringUTFChars (env,
941 android_hardware_camera_parameters.EFFECT_AQUA, NULL);
942 {
943 jobject local = android_hardware_camera_parameters.EFFECT_AQUA;
944
945 android_hardware_camera_parameters.EFFECT_AQUA =
946 gst_amc_jni_object_make_global (env, local);
947 }
948
949 fieldID =
950 gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_AUTO",
951 "Ljava/lang/String;");
952 if (!fieldID)
953 goto failed;
954 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
955 &android_hardware_camera_parameters.ANTIBANDING_AUTO))
956 goto failed;
957
958 Parameters_ANTIBANDING_AUTO =
959 (*env)->GetStringUTFChars (env,
960 android_hardware_camera_parameters.ANTIBANDING_AUTO, NULL);
961 {
962 jobject local = android_hardware_camera_parameters.ANTIBANDING_AUTO;
963
964 android_hardware_camera_parameters.ANTIBANDING_AUTO =
965 gst_amc_jni_object_make_global (env, local);
966 }
967
968 fieldID =
969 gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_50HZ",
970 "Ljava/lang/String;");
971 if (!fieldID)
972 goto failed;
973 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
974 &android_hardware_camera_parameters.ANTIBANDING_50HZ))
975 goto failed;
976
977 Parameters_ANTIBANDING_50HZ =
978 (*env)->GetStringUTFChars (env,
979 android_hardware_camera_parameters.ANTIBANDING_50HZ, NULL);
980 {
981 jobject local = android_hardware_camera_parameters.ANTIBANDING_50HZ;
982
983 android_hardware_camera_parameters.ANTIBANDING_50HZ =
984 gst_amc_jni_object_make_global (env, local);
985 }
986
987 fieldID =
988 gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_60HZ",
989 "Ljava/lang/String;");
990 if (!fieldID)
991 goto failed;
992 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
993 &android_hardware_camera_parameters.ANTIBANDING_60HZ))
994 goto failed;
995
996 Parameters_ANTIBANDING_60HZ =
997 (*env)->GetStringUTFChars (env,
998 android_hardware_camera_parameters.ANTIBANDING_60HZ, NULL);
999 {
1000 jobject local = android_hardware_camera_parameters.ANTIBANDING_60HZ;
1001
1002 android_hardware_camera_parameters.ANTIBANDING_60HZ =
1003 gst_amc_jni_object_make_global (env, local);
1004 }
1005
1006 fieldID =
1007 gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_OFF",
1008 "Ljava/lang/String;");
1009 if (!fieldID)
1010 goto failed;
1011 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1012 &android_hardware_camera_parameters.ANTIBANDING_OFF))
1013 goto failed;
1014
1015 Parameters_ANTIBANDING_OFF =
1016 (*env)->GetStringUTFChars (env,
1017 android_hardware_camera_parameters.ANTIBANDING_OFF, NULL);
1018 {
1019 jobject local = android_hardware_camera_parameters.ANTIBANDING_OFF;
1020
1021 android_hardware_camera_parameters.ANTIBANDING_OFF =
1022 gst_amc_jni_object_make_global (env, local);
1023 }
1024
1025 fieldID =
1026 gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_OFF",
1027 "Ljava/lang/String;");
1028 if (!fieldID)
1029 goto failed;
1030 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1031 &android_hardware_camera_parameters.FLASH_MODE_OFF))
1032 goto failed;
1033
1034 Parameters_FLASH_MODE_OFF =
1035 (*env)->GetStringUTFChars (env,
1036 android_hardware_camera_parameters.FLASH_MODE_OFF, NULL);
1037 {
1038 jobject local = android_hardware_camera_parameters.FLASH_MODE_OFF;
1039
1040 android_hardware_camera_parameters.FLASH_MODE_OFF =
1041 gst_amc_jni_object_make_global (env, local);
1042 }
1043
1044 fieldID =
1045 gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_AUTO",
1046 "Ljava/lang/String;");
1047 if (!fieldID)
1048 goto failed;
1049 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1050 &android_hardware_camera_parameters.FLASH_MODE_AUTO))
1051 goto failed;
1052
1053 Parameters_FLASH_MODE_AUTO =
1054 (*env)->GetStringUTFChars (env,
1055 android_hardware_camera_parameters.FLASH_MODE_AUTO, NULL);
1056 {
1057 jobject local = android_hardware_camera_parameters.FLASH_MODE_AUTO;
1058
1059 android_hardware_camera_parameters.FLASH_MODE_AUTO =
1060 gst_amc_jni_object_make_global (env, local);
1061 }
1062
1063 fieldID =
1064 gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_ON",
1065 "Ljava/lang/String;");
1066 if (!fieldID)
1067 goto failed;
1068 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1069 &android_hardware_camera_parameters.FLASH_MODE_ON))
1070 goto failed;
1071
1072 Parameters_FLASH_MODE_ON =
1073 (*env)->GetStringUTFChars (env,
1074 android_hardware_camera_parameters.FLASH_MODE_ON, NULL);
1075 {
1076 jobject local = android_hardware_camera_parameters.FLASH_MODE_ON;
1077
1078 android_hardware_camera_parameters.FLASH_MODE_ON =
1079 gst_amc_jni_object_make_global (env, local);
1080 }
1081
1082 fieldID =
1083 gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_RED_EYE",
1084 "Ljava/lang/String;");
1085 if (!fieldID)
1086 goto failed;
1087 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1088 &android_hardware_camera_parameters.FLASH_MODE_RED_EYE))
1089 goto failed;
1090
1091 Parameters_FLASH_MODE_RED_EYE =
1092 (*env)->GetStringUTFChars (env,
1093 android_hardware_camera_parameters.FLASH_MODE_RED_EYE, NULL);
1094 {
1095 jobject local = android_hardware_camera_parameters.FLASH_MODE_RED_EYE;
1096
1097 android_hardware_camera_parameters.FLASH_MODE_RED_EYE =
1098 gst_amc_jni_object_make_global (env, local);
1099 }
1100
1101 fieldID =
1102 gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_TORCH",
1103 "Ljava/lang/String;");
1104 if (!fieldID)
1105 goto failed;
1106 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1107 &android_hardware_camera_parameters.FLASH_MODE_TORCH))
1108 goto failed;
1109
1110 Parameters_FLASH_MODE_TORCH =
1111 (*env)->GetStringUTFChars (env,
1112 android_hardware_camera_parameters.FLASH_MODE_TORCH, NULL);
1113 {
1114 jobject local = android_hardware_camera_parameters.FLASH_MODE_TORCH;
1115
1116 android_hardware_camera_parameters.FLASH_MODE_TORCH =
1117 gst_amc_jni_object_make_global (env, local);
1118 }
1119
1120 fieldID =
1121 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_AUTO",
1122 "Ljava/lang/String;");
1123 if (!fieldID)
1124 goto failed;
1125 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1126 &android_hardware_camera_parameters.SCENE_MODE_AUTO))
1127 goto failed;
1128
1129 Parameters_SCENE_MODE_AUTO =
1130 (*env)->GetStringUTFChars (env,
1131 android_hardware_camera_parameters.SCENE_MODE_AUTO, NULL);
1132 {
1133 jobject local = android_hardware_camera_parameters.SCENE_MODE_AUTO;
1134
1135 android_hardware_camera_parameters.SCENE_MODE_AUTO =
1136 gst_amc_jni_object_make_global (env, local);
1137 }
1138
1139 fieldID =
1140 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_ACTION",
1141 "Ljava/lang/String;");
1142 if (!fieldID)
1143 goto failed;
1144 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1145 &android_hardware_camera_parameters.SCENE_MODE_ACTION))
1146 goto failed;
1147
1148 Parameters_SCENE_MODE_ACTION =
1149 (*env)->GetStringUTFChars (env,
1150 android_hardware_camera_parameters.SCENE_MODE_ACTION, NULL);
1151 {
1152 jobject local = android_hardware_camera_parameters.SCENE_MODE_ACTION;
1153
1154 android_hardware_camera_parameters.SCENE_MODE_ACTION =
1155 gst_amc_jni_object_make_global (env, local);
1156 }
1157
1158 fieldID =
1159 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_PORTRAIT",
1160 "Ljava/lang/String;");
1161 if (!fieldID)
1162 goto failed;
1163 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1164 &android_hardware_camera_parameters.SCENE_MODE_PORTRAIT))
1165 goto failed;
1166
1167 Parameters_SCENE_MODE_PORTRAIT =
1168 (*env)->GetStringUTFChars (env,
1169 android_hardware_camera_parameters.SCENE_MODE_PORTRAIT, NULL);
1170 {
1171 jobject local = android_hardware_camera_parameters.SCENE_MODE_PORTRAIT;
1172
1173 android_hardware_camera_parameters.SCENE_MODE_PORTRAIT =
1174 gst_amc_jni_object_make_global (env, local);
1175 }
1176
1177 fieldID =
1178 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_LANDSCAPE",
1179 "Ljava/lang/String;");
1180 if (!fieldID)
1181 goto failed;
1182 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1183 &android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE))
1184 goto failed;
1185 Parameters_SCENE_MODE_LANDSCAPE =
1186 (*env)->GetStringUTFChars (env,
1187 android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE, NULL);
1188 {
1189 jobject local = android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE;
1190
1191 android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE =
1192 gst_amc_jni_object_make_global (env, local);
1193 }
1194
1195 fieldID =
1196 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_NIGHT",
1197 "Ljava/lang/String;");
1198 if (!fieldID)
1199 goto failed;
1200 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1201 &android_hardware_camera_parameters.SCENE_MODE_NIGHT))
1202 goto failed;
1203
1204 Parameters_SCENE_MODE_NIGHT =
1205 (*env)->GetStringUTFChars (env,
1206 android_hardware_camera_parameters.SCENE_MODE_NIGHT, NULL);
1207 {
1208 jobject local = android_hardware_camera_parameters.SCENE_MODE_NIGHT;
1209
1210 android_hardware_camera_parameters.SCENE_MODE_NIGHT =
1211 gst_amc_jni_object_make_global (env, local);
1212 }
1213
1214 fieldID =
1215 gst_amc_jni_get_static_field_id (env, &err, klass,
1216 "SCENE_MODE_NIGHT_PORTRAIT", "Ljava/lang/String;");
1217 if (!fieldID)
1218 goto failed;
1219 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1220 &android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT))
1221 goto failed;
1222 Parameters_SCENE_MODE_NIGHT_PORTRAIT =
1223 (*env)->GetStringUTFChars (env,
1224 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT, NULL);
1225 {
1226 jobject local =
1227 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT;
1228
1229 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT =
1230 gst_amc_jni_object_make_global (env, local);
1231 }
1232 fieldID =
1233 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_THEATRE",
1234 "Ljava/lang/String;");
1235 if (!fieldID)
1236 goto failed;
1237 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1238 &android_hardware_camera_parameters.SCENE_MODE_THEATRE))
1239 goto failed;
1240
1241 Parameters_SCENE_MODE_THEATRE =
1242 (*env)->GetStringUTFChars (env,
1243 android_hardware_camera_parameters.SCENE_MODE_THEATRE, NULL);
1244 {
1245 jobject local = android_hardware_camera_parameters.SCENE_MODE_THEATRE;
1246
1247 android_hardware_camera_parameters.SCENE_MODE_THEATRE =
1248 gst_amc_jni_object_make_global (env, local);
1249 }
1250
1251 fieldID =
1252 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_BEACH",
1253 "Ljava/lang/String;");
1254 if (!fieldID)
1255 goto failed;
1256 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1257 &android_hardware_camera_parameters.SCENE_MODE_BEACH))
1258 goto failed;
1259
1260 Parameters_SCENE_MODE_BEACH =
1261 (*env)->GetStringUTFChars (env,
1262 android_hardware_camera_parameters.SCENE_MODE_BEACH, NULL);
1263 {
1264 jobject local = android_hardware_camera_parameters.SCENE_MODE_BEACH;
1265
1266 android_hardware_camera_parameters.SCENE_MODE_BEACH =
1267 gst_amc_jni_object_make_global (env, local);
1268 }
1269
1270 fieldID =
1271 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_SNOW",
1272 "Ljava/lang/String;");
1273 if (!fieldID)
1274 goto failed;
1275 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1276 &android_hardware_camera_parameters.SCENE_MODE_SNOW))
1277 goto failed;
1278
1279 Parameters_SCENE_MODE_SNOW =
1280 (*env)->GetStringUTFChars (env,
1281 android_hardware_camera_parameters.SCENE_MODE_SNOW, NULL);
1282 {
1283 jobject local = android_hardware_camera_parameters.SCENE_MODE_SNOW;
1284
1285 android_hardware_camera_parameters.SCENE_MODE_SNOW =
1286 gst_amc_jni_object_make_global (env, local);
1287 }
1288
1289 fieldID =
1290 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_SUNSET",
1291 "Ljava/lang/String;");
1292 if (!fieldID)
1293 goto failed;
1294 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1295 &android_hardware_camera_parameters.SCENE_MODE_SUNSET))
1296 goto failed;
1297
1298
1299 Parameters_SCENE_MODE_SUNSET =
1300 (*env)->GetStringUTFChars (env,
1301 android_hardware_camera_parameters.SCENE_MODE_SUNSET, NULL);
1302 {
1303 jobject local = android_hardware_camera_parameters.SCENE_MODE_SUNSET;
1304
1305 android_hardware_camera_parameters.SCENE_MODE_SUNSET =
1306 gst_amc_jni_object_make_global (env, local);
1307 }
1308
1309 fieldID =
1310 gst_amc_jni_get_static_field_id (env, &err, klass,
1311 "SCENE_MODE_STEADYPHOTO", "Ljava/lang/String;");
1312 if (!fieldID)
1313 goto failed;
1314 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1315 &android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO))
1316 goto failed;
1317
1318
1319 Parameters_SCENE_MODE_STEADYPHOTO =
1320 (*env)->GetStringUTFChars (env,
1321 android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO, NULL);
1322 {
1323 jobject local = android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO;
1324
1325 android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO =
1326 gst_amc_jni_object_make_global (env, local);
1327 }
1328
1329 fieldID =
1330 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_FIREWORKS",
1331 "Ljava/lang/String;");
1332 if (!fieldID)
1333 goto failed;
1334 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1335 &android_hardware_camera_parameters.SCENE_MODE_FIREWORKS))
1336 goto failed;
1337
1338 Parameters_SCENE_MODE_FIREWORKS =
1339 (*env)->GetStringUTFChars (env,
1340 android_hardware_camera_parameters.SCENE_MODE_FIREWORKS, NULL);
1341 {
1342 jobject local = android_hardware_camera_parameters.SCENE_MODE_FIREWORKS;
1343
1344 android_hardware_camera_parameters.SCENE_MODE_FIREWORKS =
1345 gst_amc_jni_object_make_global (env, local);
1346 }
1347
1348 fieldID =
1349 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_SPORTS",
1350 "Ljava/lang/String;");
1351 if (!fieldID)
1352 goto failed;
1353 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1354 &android_hardware_camera_parameters.SCENE_MODE_SPORTS))
1355 goto failed;
1356
1357
1358 Parameters_SCENE_MODE_SPORTS =
1359 (*env)->GetStringUTFChars (env,
1360 android_hardware_camera_parameters.SCENE_MODE_SPORTS, NULL);
1361 {
1362 jobject local = android_hardware_camera_parameters.SCENE_MODE_SPORTS;
1363
1364 android_hardware_camera_parameters.SCENE_MODE_SPORTS =
1365 gst_amc_jni_object_make_global (env, local);
1366 }
1367
1368 fieldID =
1369 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_PARTY",
1370 "Ljava/lang/String;");
1371 if (!fieldID)
1372 goto failed;
1373 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1374 &android_hardware_camera_parameters.SCENE_MODE_PARTY))
1375 goto failed;
1376
1377 Parameters_SCENE_MODE_PARTY =
1378 (*env)->GetStringUTFChars (env,
1379 android_hardware_camera_parameters.SCENE_MODE_PARTY, NULL);
1380 {
1381 jobject local = android_hardware_camera_parameters.SCENE_MODE_PARTY;
1382
1383 android_hardware_camera_parameters.SCENE_MODE_PARTY =
1384 gst_amc_jni_object_make_global (env, local);
1385 }
1386
1387 fieldID =
1388 gst_amc_jni_get_static_field_id (env, &err, klass,
1389 "SCENE_MODE_CANDLELIGHT", "Ljava/lang/String;");
1390 if (!fieldID)
1391 goto failed;
1392 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1393 &android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT))
1394 goto failed;
1395
1396 Parameters_SCENE_MODE_CANDLELIGHT =
1397 (*env)->GetStringUTFChars (env,
1398 android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT, NULL);
1399 {
1400 jobject local = android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT;
1401
1402 android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT =
1403 gst_amc_jni_object_make_global (env, local);
1404 }
1405
1406
1407 fieldID =
1408 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_BARCODE",
1409 "Ljava/lang/String;");
1410 if (!fieldID)
1411 goto failed;
1412 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1413 &android_hardware_camera_parameters.SCENE_MODE_BARCODE))
1414 goto failed;
1415
1416 Parameters_SCENE_MODE_BARCODE =
1417 (*env)->GetStringUTFChars (env,
1418 android_hardware_camera_parameters.SCENE_MODE_BARCODE, NULL);
1419 {
1420 jobject local = android_hardware_camera_parameters.SCENE_MODE_BARCODE;
1421
1422 android_hardware_camera_parameters.SCENE_MODE_BARCODE =
1423 gst_amc_jni_object_make_global (env, local);
1424 }
1425
1426 fieldID =
1427 gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_AUTO",
1428 "Ljava/lang/String;");
1429 if (!fieldID)
1430 goto failed;
1431 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1432 &android_hardware_camera_parameters.FOCUS_MODE_AUTO))
1433 goto failed;
1434
1435 Parameters_FOCUS_MODE_AUTO =
1436 (*env)->GetStringUTFChars (env,
1437 android_hardware_camera_parameters.FOCUS_MODE_AUTO, NULL);
1438 {
1439 jobject local = android_hardware_camera_parameters.FOCUS_MODE_AUTO;
1440
1441 android_hardware_camera_parameters.FOCUS_MODE_AUTO =
1442 gst_amc_jni_object_make_global (env, local);
1443 }
1444
1445 fieldID =
1446 gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_INFINITY",
1447 "Ljava/lang/String;");
1448 if (!fieldID)
1449 goto failed;
1450 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1451 &android_hardware_camera_parameters.FOCUS_MODE_INFINITY))
1452 goto failed;
1453
1454 Parameters_FOCUS_MODE_INFINITY =
1455 (*env)->GetStringUTFChars (env,
1456 android_hardware_camera_parameters.FOCUS_MODE_INFINITY, NULL);
1457 {
1458 jobject local = android_hardware_camera_parameters.FOCUS_MODE_INFINITY;
1459
1460 android_hardware_camera_parameters.FOCUS_MODE_INFINITY =
1461 gst_amc_jni_object_make_global (env, local);
1462 }
1463
1464 fieldID =
1465 gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_MACRO",
1466 "Ljava/lang/String;");
1467 if (!fieldID)
1468 goto failed;
1469 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1470 &android_hardware_camera_parameters.FOCUS_MODE_MACRO))
1471 goto failed;
1472
1473 Parameters_FOCUS_MODE_MACRO =
1474 (*env)->GetStringUTFChars (env,
1475 android_hardware_camera_parameters.FOCUS_MODE_MACRO, NULL);
1476 {
1477 jobject local = android_hardware_camera_parameters.FOCUS_MODE_MACRO;
1478
1479 android_hardware_camera_parameters.FOCUS_MODE_MACRO =
1480 gst_amc_jni_object_make_global (env, local);
1481 }
1482
1483 fieldID =
1484 gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_FIXED",
1485 "Ljava/lang/String;");
1486 if (!fieldID)
1487 goto failed;
1488 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1489 &android_hardware_camera_parameters.FOCUS_MODE_FIXED))
1490 goto failed;
1491
1492 Parameters_FOCUS_MODE_FIXED =
1493 (*env)->GetStringUTFChars (env,
1494 android_hardware_camera_parameters.FOCUS_MODE_FIXED, NULL);
1495 {
1496 jobject local = android_hardware_camera_parameters.FOCUS_MODE_FIXED;
1497
1498 android_hardware_camera_parameters.FOCUS_MODE_FIXED =
1499 gst_amc_jni_object_make_global (env, local);
1500 }
1501
1502 fieldID =
1503 gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_EDOF",
1504 "Ljava/lang/String;");
1505 if (!fieldID)
1506 goto failed;
1507 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1508 &android_hardware_camera_parameters.FOCUS_MODE_EDOF))
1509 goto failed;
1510
1511 Parameters_FOCUS_MODE_EDOF =
1512 (*env)->GetStringUTFChars (env,
1513 android_hardware_camera_parameters.FOCUS_MODE_EDOF, NULL);
1514 {
1515 jobject local = android_hardware_camera_parameters.FOCUS_MODE_EDOF;
1516
1517 android_hardware_camera_parameters.FOCUS_MODE_EDOF =
1518 gst_amc_jni_object_make_global (env, local);
1519 }
1520
1521 fieldID =
1522 gst_amc_jni_get_static_field_id (env, &err, klass,
1523 "FOCUS_MODE_CONTINUOUS_VIDEO", "Ljava/lang/String;");
1524 if (!fieldID)
1525 goto failed;
1526 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1527 &android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO))
1528 goto failed;
1529
1530 Parameters_FOCUS_MODE_CONTINUOUS_VIDEO =
1531 (*env)->GetStringUTFChars (env,
1532 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO, NULL);
1533 {
1534 jobject local =
1535 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO;
1536
1537 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO =
1538 gst_amc_jni_object_make_global (env, local);
1539 }
1540
1541 fieldID =
1542 gst_amc_jni_get_static_field_id (env, &err, klass,
1543 "FOCUS_MODE_CONTINUOUS_PICTURE", "Ljava/lang/String;");
1544 if (!fieldID)
1545 goto failed;
1546 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1547 &android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE))
1548 goto failed;
1549
1550
1551 Parameters_FOCUS_MODE_CONTINUOUS_PICTURE =
1552 (*env)->GetStringUTFChars (env,
1553 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE, NULL);
1554 {
1555 jobject local =
1556 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE;
1557
1558 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE =
1559 gst_amc_jni_object_make_global (env, local);
1560 }
1561
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");
1568
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;");
1575
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;");
1584
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");
1590
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);
1595 }
1596 if (!org_freedesktop_gstreamer_androidmedia_gstahccallback.klass)
1597 goto failed;
1598
1599 org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor =
1600 gst_amc_jni_get_method_id (env, &err,
1601 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass, "<init>",
1602 "(JJ)V");
1603
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");
1608 return FALSE;
1609 }
1610
1611 return TRUE;
1612
1613 failed:
1614 if (err) {
1615 GST_ERROR ("Failed to initialize android.hardware.Camera classes: %s",
1616 err->message);
1617 g_clear_error (&err);
1618 }
1619
1620 return FALSE;
1621
1622 }
1623
1624
1625 gboolean
gst_android_hardware_camera_init(void)1626 gst_android_hardware_camera_init (void)
1627 {
1628 GST_DEBUG_CATEGORY_INIT (ahc_debug, "ahc", 0,
1629 "Android Gstreamer Hardware Camera");
1630 if (!_init_classes ()) {
1631 gst_android_hardware_camera_deinit ();
1632 return FALSE;
1633 }
1634
1635 return TRUE;
1636 }
1637
1638 void
gst_android_hardware_camera_deinit(void)1639 gst_android_hardware_camera_deinit (void)
1640 {
1641 JNIEnv *env = gst_amc_jni_get_env ();
1642
1643 if (android_hardware_camera.klass)
1644 gst_amc_jni_object_unref (env, android_hardware_camera.klass);
1645 android_hardware_camera.klass = NULL;
1646
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;
1650
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;
1654
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;
2096
2097 if (java_lang_string.klass)
2098 gst_amc_jni_object_unref (env, java_lang_string.klass);
2099 java_lang_string.klass = NULL;
2100
2101 if (java_util_list.klass)
2102 gst_amc_jni_object_unref (env, java_util_list.klass);
2103 java_util_list.klass = NULL;
2104
2105 if (java_util_iterator.klass)
2106 gst_amc_jni_object_unref (env, java_util_iterator.klass);
2107 java_util_iterator.klass = NULL;
2108
2109 if (java_lang_integer.klass)
2110 gst_amc_jni_object_unref (env, java_lang_integer.klass);
2111 java_lang_integer.klass = NULL;
2112
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);
2118 }
2119 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass = NULL;
2120 }
2121
2122 /* android.hardware.Camera */
2123 void
gst_ah_camera_add_callback_buffer(GstAHCamera * self,jbyteArray buffer)2124 gst_ah_camera_add_callback_buffer (GstAHCamera * self, jbyteArray buffer)
2125 {
2126 JNIEnv *env = gst_amc_jni_get_env ();
2127 GError *err = NULL;
2128
2129 GST_DEBUG ("add callback_buffer %p", buffer);
2130
2131 gst_amc_jni_call_void_method (env, &err, self->object,
2132 android_hardware_camera.addCallbackBuffer, buffer);
2133 if (err) {
2134 GST_ERROR ("Failed to call android.hardware.Camera.addCallbackBuffer: %s",
2135 err->message);
2136 g_clear_error (&err);
2137 }
2138 }
2139
2140 gboolean
gst_ah_camera_auto_focus(GstAHCamera * self,GstAHCAutoFocusCallback cb,gpointer user_data)2141 gst_ah_camera_auto_focus (GstAHCamera * self,
2142 GstAHCAutoFocusCallback cb, gpointer user_data)
2143 {
2144 JNIEnv *env = gst_amc_jni_get_env ();
2145 GError *err = NULL;
2146 jobject object = NULL;
2147 gboolean ret = FALSE;
2148
2149 if (cb) {
2150 object = gst_amc_jni_new_object (env,
2151 &err,
2152 FALSE,
2153 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
2154 org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
2155 *((jlong *) & cb), *((jlong *) & user_data));
2156 if (err) {
2157 GST_ERROR
2158 ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object");
2159 g_clear_error (&err);
2160 goto done;
2161 }
2162 }
2163
2164 gst_amc_jni_call_void_method (env, &err, self->object,
2165 android_hardware_camera.autoFocus, object);
2166 if (err) {
2167 GST_ERROR ("Failed to call android.hardware.Camera.autoFocus: %s",
2168 err->message);
2169 goto done;
2170 }
2171
2172 ret = TRUE;
2173 done:
2174 if (err)
2175 g_clear_error (&err);
2176 if (object)
2177 gst_amc_jni_object_local_unref (env, object);
2178
2179 return ret;
2180 }
2181
2182 gboolean
gst_ah_camera_cancel_auto_focus(GstAHCamera * self)2183 gst_ah_camera_cancel_auto_focus (GstAHCamera * self)
2184 {
2185 JNIEnv *env = gst_amc_jni_get_env ();
2186 GError *err = NULL;
2187
2188 gst_amc_jni_call_void_method (env, &err, self->object,
2189 android_hardware_camera.cancelAutoFocus);
2190 if (err) {
2191 GST_ERROR ("Failed to call android.hardware.Camera.cancelAutoFocus: %s",
2192 err->message);
2193 g_clear_error (&err);
2194 return FALSE;
2195 }
2196
2197 return TRUE;
2198 }
2199
2200 gboolean
gst_ah_camera_get_camera_info(gint camera_id,GstAHCCameraInfo * camera_info)2201 gst_ah_camera_get_camera_info (gint camera_id, GstAHCCameraInfo * camera_info)
2202 {
2203 JNIEnv *env = gst_amc_jni_get_env ();
2204 GError *err = NULL;
2205 jobject jcamera_info = NULL;
2206 gboolean ret = FALSE;
2207
2208 jcamera_info = gst_amc_jni_new_object (env,
2209 &err,
2210 FALSE,
2211 android_hardware_camera_camerainfo.klass,
2212 android_hardware_camera_camerainfo.constructor);
2213 if (err) {
2214 GST_ERROR ("Failed to create android.hardware.camera.CameraInfo object");
2215 g_clear_error (&err);
2216 goto done;
2217 }
2218
2219 gst_amc_jni_call_static_void_method (env, &err, android_hardware_camera.klass,
2220 android_hardware_camera.getCameraInfo, camera_id, jcamera_info);
2221 if (err) {
2222 GST_ERROR ("Failed to call android.hardware.Camera.getCameraInfo: %s",
2223 err->message);
2224 goto done;
2225 }
2226
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);
2232 goto done;
2233 }
2234
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);
2240 goto done;
2241 }
2242
2243 ret = TRUE;
2244 done:
2245 if (err)
2246 g_clear_error (&err);
2247 if (jcamera_info)
2248 gst_amc_jni_object_local_unref (env, jcamera_info);
2249
2250 return ret;
2251 }
2252
2253 gint
gst_ah_camera_get_number_of_cameras(void)2254 gst_ah_camera_get_number_of_cameras (void)
2255 {
2256 JNIEnv *env = gst_amc_jni_get_env ();
2257 GError *err = NULL;
2258 gint num_cameras;
2259
2260 gst_amc_jni_call_static_int_method (env, &err, android_hardware_camera.klass,
2261 android_hardware_camera.getNumberOfCameras, &num_cameras);
2262 if (err) {
2263 GST_ERROR ("Failed to call android.hardware.Camera.getNumberOfCameras: %s",
2264 err->message);
2265 g_clear_error (&err);
2266 return -1;
2267 }
2268
2269 return num_cameras;
2270 }
2271
2272 GstAHCParameters *
gst_ah_camera_get_parameters(GstAHCamera * self)2273 gst_ah_camera_get_parameters (GstAHCamera * self)
2274 {
2275 JNIEnv *env = gst_amc_jni_get_env ();
2276 GError *err = NULL;
2277 jobject object = NULL;
2278 GstAHCParameters *params = NULL;
2279
2280 gst_amc_jni_call_object_method (env, &err, self->object,
2281 android_hardware_camera.getParameters, &object);
2282 if (err) {
2283 GST_ERROR ("Failed to call android.hardware.Camera.getParameters: %s",
2284 err->message);
2285 g_clear_error (&err);
2286 return NULL;
2287 }
2288 if (!object) {
2289 GST_WARNING ("android.hardware.Camera.getParameter is NULL");
2290 return NULL;
2291 }
2292
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);
2300 return NULL;
2301 }
2302
2303 GST_DEBUG ("return parameters %p", params->object);
2304
2305 return params;
2306 }
2307
2308 gboolean
gst_ah_camera_lock(GstAHCamera * self)2309 gst_ah_camera_lock (GstAHCamera * self)
2310 {
2311 JNIEnv *env = gst_amc_jni_get_env ();
2312 GError *err = NULL;
2313
2314 gst_amc_jni_call_void_method (env, &err, self->object,
2315 android_hardware_camera.lock);
2316 if (err) {
2317 GST_ERROR ("Failed to call android.hardware.Camera.lock: %s", err->message);
2318 g_clear_error (&err);
2319 return FALSE;
2320 }
2321
2322 return TRUE;
2323 }
2324
2325 GstAHCamera *
gst_ah_camera_open(gint camera_id)2326 gst_ah_camera_open (gint camera_id)
2327 {
2328 JNIEnv *env = gst_amc_jni_get_env ();
2329 GError *err = NULL;
2330 jobject object = NULL;
2331 GstAHCamera *camera = NULL;
2332
2333 gst_amc_jni_call_static_object_method (env, &err,
2334 android_hardware_camera.klass, android_hardware_camera.open, &object,
2335 camera_id);
2336 if (err) {
2337 GST_ERROR ("Failed to call android.hardware.Camera.open: %s", err->message);
2338 g_clear_error (&err);
2339 goto done;
2340 }
2341
2342 if (object) {
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);
2350 camera = NULL;
2351 }
2352 }
2353
2354 done:
2355 return camera;
2356 }
2357
2358 gboolean
gst_ah_camera_reconnect(GstAHCamera * self)2359 gst_ah_camera_reconnect (GstAHCamera * self)
2360 {
2361 JNIEnv *env = gst_amc_jni_get_env ();
2362 GError *err = NULL;
2363
2364 gst_amc_jni_call_void_method (env, &err, self->object,
2365 android_hardware_camera.reconnect);
2366 if (err) {
2367 GST_ERROR ("Failed to call android.hardware.Camera.reconnect: %s",
2368 err->message);
2369 g_clear_error (&err);
2370 return FALSE;
2371 }
2372
2373 return TRUE;
2374 }
2375
2376 void
gst_ah_camera_release(GstAHCamera * self)2377 gst_ah_camera_release (GstAHCamera * self)
2378 {
2379 JNIEnv *env = gst_amc_jni_get_env ();
2380 GError *err = NULL;
2381
2382 gst_amc_jni_call_void_method (env, &err, self->object,
2383 android_hardware_camera.release);
2384 if (err) {
2385 GST_ERROR ("Failed to call android.hardware.Camera.release: %s",
2386 err->message);
2387 g_clear_error (&err);
2388 }
2389 }
2390
2391 void
gst_ah_camera_free(GstAHCamera * self)2392 gst_ah_camera_free (GstAHCamera * self)
2393 {
2394 JNIEnv *env = gst_amc_jni_get_env ();
2395
2396 gst_amc_jni_object_unref (env, self->object);
2397 g_slice_free (GstAHCamera, self);
2398 }
2399
2400
2401 gboolean
gst_ah_camera_set_parameters(GstAHCamera * self,GstAHCParameters * params)2402 gst_ah_camera_set_parameters (GstAHCamera * self, GstAHCParameters * params)
2403 {
2404 JNIEnv *env = gst_amc_jni_get_env ();
2405 GError *err = NULL;
2406
2407 gst_amc_jni_call_void_method (env, &err, self->object,
2408 android_hardware_camera.setParameters, params->object);
2409 if (err) {
2410 GST_ERROR ("Failed to call android.hardware.Camera.setParameters: %s",
2411 err->message);
2412 g_clear_error (&err);
2413 return FALSE;
2414 }
2415
2416 return TRUE;
2417 }
2418
2419 gboolean
gst_ah_camera_set_error_callback(GstAHCamera * self,GstAHCErrorCallback cb,gpointer user_data)2420 gst_ah_camera_set_error_callback (GstAHCamera * self, GstAHCErrorCallback cb,
2421 gpointer user_data)
2422 {
2423 JNIEnv *env = gst_amc_jni_get_env ();
2424 GError *err = NULL;
2425 jobject object = NULL;
2426 gboolean ret = FALSE;
2427
2428 if (cb) {
2429 object = gst_amc_jni_new_object (env,
2430 &err,
2431 FALSE,
2432 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
2433 org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
2434 *((jlong *) & cb), *((jlong *) & user_data));
2435 if (err) {
2436 GST_ERROR
2437 ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object");
2438 g_clear_error (&err);
2439 goto done;
2440 }
2441 }
2442
2443 gst_amc_jni_call_void_method (env, &err, self->object,
2444 android_hardware_camera.setErrorCallback, object);
2445 if (err) {
2446 GST_ERROR ("Failed to call android.hardware.Camera.setErrorCallback: %s",
2447 err->message);
2448 goto done;
2449 }
2450
2451 ret = TRUE;
2452 done:
2453 if (err)
2454 g_clear_error (&err);
2455 if (object)
2456 gst_amc_jni_object_local_unref (env, object);
2457
2458 return ret;
2459 }
2460
2461 gboolean
gst_ah_camera_set_preview_callback_with_buffer(GstAHCamera * self,GstAHCPreviewCallback cb,gpointer user_data)2462 gst_ah_camera_set_preview_callback_with_buffer (GstAHCamera * self,
2463 GstAHCPreviewCallback cb, gpointer user_data)
2464 {
2465 JNIEnv *env = gst_amc_jni_get_env ();
2466 GError *err = NULL;
2467 jobject object = NULL;
2468 gboolean ret = FALSE;
2469
2470 if (cb) {
2471 object = gst_amc_jni_new_object (env,
2472 &err,
2473 FALSE,
2474 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
2475 org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
2476 *((jlong *) & cb), *((jlong *) & user_data));
2477 if (err) {
2478 GST_ERROR
2479 ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object");
2480 g_clear_error (&err);
2481 goto done;
2482 }
2483 }
2484
2485 gst_amc_jni_call_void_method (env, &err, self->object,
2486 android_hardware_camera.setPreviewCallbackWithBuffer, object);
2487 if (err) {
2488 GST_ERROR
2489 ("Failed to call android.hardware.Camera.setPreviewCallbackWithBuffer: %s",
2490 err->message);
2491 goto done;
2492 }
2493
2494 ret = TRUE;
2495 done:
2496 if (err)
2497 g_clear_error (&err);
2498 if (object)
2499 gst_amc_jni_object_local_unref (env, object);
2500
2501 return ret;
2502 }
2503
2504 void
gst_ah_camera_set_preview_texture(GstAHCamera * self,GstAmcSurfaceTexture * surfaceTexture)2505 gst_ah_camera_set_preview_texture (GstAHCamera * self,
2506 GstAmcSurfaceTexture * surfaceTexture)
2507 {
2508 JNIEnv *env = gst_amc_jni_get_env ();
2509 GError *err = NULL;
2510
2511 gst_amc_jni_call_void_method (env, &err, self->object,
2512 android_hardware_camera.setPreviewTexture, surfaceTexture->jobject);
2513 if (err) {
2514 GST_ERROR ("Failed to call android.hardware.Camera.setPreviewTexture: %s",
2515 err->message);
2516 g_clear_error (&err);
2517 }
2518 }
2519
2520 gboolean
gst_ah_camera_start_preview(GstAHCamera * self)2521 gst_ah_camera_start_preview (GstAHCamera * self)
2522 {
2523 JNIEnv *env = gst_amc_jni_get_env ();
2524 GError *err = NULL;
2525
2526 gst_amc_jni_call_void_method (env, &err, self->object,
2527 android_hardware_camera.startPreview);
2528 if (err) {
2529 GST_ERROR ("Failed to call android.hardware.Camera.startPreview: %s",
2530 err->message);
2531 g_clear_error (&err);
2532 return FALSE;
2533 }
2534
2535 return TRUE;
2536 }
2537
2538 gboolean
gst_ah_camera_start_smooth_zoom(GstAHCamera * self,gint value)2539 gst_ah_camera_start_smooth_zoom (GstAHCamera * self, gint value)
2540 {
2541 JNIEnv *env = gst_amc_jni_get_env ();
2542 GError *err = NULL;
2543
2544 gst_amc_jni_call_void_method (env, &err, self->object,
2545 android_hardware_camera.startSmoothZoom, value);
2546 if (err) {
2547 GST_ERROR ("Failed to call android.hardware.Camera.startSmoothZoom: %s",
2548 err->message);
2549 g_clear_error (&err);
2550 return FALSE;
2551 }
2552
2553 return TRUE;
2554 }
2555
2556 gboolean
gst_ah_camera_stop_preview(GstAHCamera * self)2557 gst_ah_camera_stop_preview (GstAHCamera * self)
2558 {
2559 JNIEnv *env = gst_amc_jni_get_env ();
2560 GError *err = NULL;
2561
2562 gst_amc_jni_call_void_method (env, &err, self->object,
2563 android_hardware_camera.stopPreview);
2564 if (err) {
2565 GST_ERROR ("Failed to call android.hardware.Camera.stopPreview: %s",
2566 err->message);
2567 g_clear_error (&err);
2568 return FALSE;
2569 }
2570
2571 return TRUE;
2572 }
2573
2574 gboolean
gst_ah_camera_stop_smooth_zoom(GstAHCamera * self)2575 gst_ah_camera_stop_smooth_zoom (GstAHCamera * self)
2576 {
2577 JNIEnv *env = gst_amc_jni_get_env ();
2578 GError *err = NULL;
2579
2580 gst_amc_jni_call_void_method (env, &err, self->object,
2581 android_hardware_camera.stopSmoothZoom);
2582 if (err) {
2583 GST_ERROR ("Failed to call android.hardware.Camera.stopSmoothZoom: %s",
2584 err->message);
2585 g_clear_error (&err);
2586 return FALSE;
2587 }
2588
2589 return TRUE;
2590 }
2591
2592 gboolean
gst_ah_camera_unlock(GstAHCamera * self)2593 gst_ah_camera_unlock (GstAHCamera * self)
2594 {
2595 JNIEnv *env = gst_amc_jni_get_env ();
2596 GError *err = NULL;
2597
2598 gst_amc_jni_call_void_method (env, &err, self->object,
2599 android_hardware_camera.unlock);
2600 if (err) {
2601 GST_ERROR ("Failed to call android.hardware.Camera.unlock: %s",
2602 err->message);
2603 g_clear_error (&err);
2604 return FALSE;
2605 }
2606
2607 return TRUE;
2608 }
2609
2610 /* android.hardware.Camera.Size */
2611 GstAHCSize *
gst_ahc_size_new(gint width,gint height)2612 gst_ahc_size_new (gint width, gint height)
2613 {
2614 GstAHCSize *self = g_slice_new (GstAHCSize);
2615
2616 self->width = width;
2617 self->height = height;
2618
2619 return self;
2620 }
2621
2622 void
gst_ahc_size_free(GstAHCSize * self)2623 gst_ahc_size_free (GstAHCSize * self)
2624 {
2625 g_slice_free (GstAHCSize, self);
2626 }
2627
2628 /* java.lang.String */
2629 static jboolean
java_lang_string_equals(JNIEnv * env,jstring str,jstring obj)2630 java_lang_string_equals (JNIEnv * env, jstring str, jstring obj)
2631 {
2632 return (*env)->CallBooleanMethod (env, str, java_lang_string.equals, obj);
2633 }
2634
2635 /* java.util.List */
2636 static jobject
java_util_list_iterator(JNIEnv * env,jobject obj)2637 java_util_list_iterator (JNIEnv * env, jobject obj)
2638 {
2639 return (*env)->CallObjectMethod (env, obj, java_util_list.iterator);
2640 }
2641
2642 /* java.util.Iterator */
2643 static jobject
java_util_iterator_next(JNIEnv * env,jobject obj)2644 java_util_iterator_next (JNIEnv * env, jobject obj)
2645 {
2646 return (*env)->CallObjectMethod (env, obj, java_util_iterator.next);
2647 }
2648
2649 static jboolean
java_util_iterator_has_next(JNIEnv * env,jobject obj)2650 java_util_iterator_has_next (JNIEnv * env, jobject obj)
2651 {
2652 return (*env)->CallBooleanMethod (env, obj, java_util_iterator.hasNext);
2653 }
2654
2655 /* java.lang.Integer */
2656 static jint
java_lang_integer_int_value(JNIEnv * env,jobject obj)2657 java_lang_integer_int_value (JNIEnv * env, jobject obj)
2658 {
2659 return (*env)->CallIntMethod (env, obj, java_lang_integer.intValue);
2660 }
2661
2662
2663 /* android.hardware.Camera.Parameters */
2664 static const gchar *
_white_balance_to_gchar(JNIEnv * env,jstring white_balance)2665 _white_balance_to_gchar (JNIEnv * env, jstring white_balance)
2666 {
2667 if (!white_balance)
2668 return NULL;
2669
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;
2694
2695 return NULL;
2696 }
2697
2698 static jstring
_white_balance_to_jstring(const gchar * white_balance)2699 _white_balance_to_jstring (const gchar * white_balance)
2700 {
2701 if (!white_balance)
2702 return NULL;
2703
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;
2721
2722 return NULL;
2723 }
2724
2725 static const gchar *
_color_effect_to_gchar(JNIEnv * env,jstring color_effect)2726 _color_effect_to_gchar (JNIEnv * env, jstring color_effect)
2727 {
2728 if (!color_effect)
2729 return NULL;
2730
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;
2758
2759 return NULL;
2760 }
2761
2762 static jstring
_color_effect_to_jstring(const gchar * color_effect)2763 _color_effect_to_jstring (const gchar * color_effect)
2764 {
2765 if (!color_effect)
2766 return NULL;
2767
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;
2786
2787 return NULL;
2788 }
2789
2790 static const gchar *
_antibanding_to_gchar(JNIEnv * env,jstring antibanding)2791 _antibanding_to_gchar (JNIEnv * env, jstring antibanding)
2792 {
2793 if (!antibanding)
2794 return NULL;
2795
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;
2808
2809 return NULL;
2810 }
2811
2812 static jstring
_antibanding_to_jstring(const gchar * antibanding)2813 _antibanding_to_jstring (const gchar * antibanding)
2814 {
2815 if (!antibanding)
2816 return NULL;
2817
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;
2826
2827 return NULL;
2828 }
2829
2830 static const gchar *
_flash_mode_to_gchar(JNIEnv * env,jstring flash_mode)2831 _flash_mode_to_gchar (JNIEnv * env, jstring flash_mode)
2832 {
2833 if (!flash_mode)
2834 return NULL;
2835
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;
2851
2852 return NULL;
2853 }
2854
2855 static jstring
_flash_mode_to_jstring(const gchar * flash_mode)2856 _flash_mode_to_jstring (const gchar * flash_mode)
2857 {
2858 if (!flash_mode)
2859 return NULL;
2860
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;
2871
2872 return NULL;
2873 }
2874
2875 static const gchar *
_scene_mode_to_gchar(JNIEnv * env,jstring scene_mode)2876 _scene_mode_to_gchar (JNIEnv * env, jstring scene_mode)
2877 {
2878 if (!scene_mode)
2879 return NULL;
2880
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;
2929
2930 return NULL;
2931 }
2932
2933 static const jstring
_scene_mode_to_jstring(const gchar * scene_mode)2934 _scene_mode_to_jstring (const gchar * scene_mode)
2935 {
2936 if (!scene_mode)
2937 return NULL;
2938
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;
2971
2972 return NULL;
2973 }
2974
2975 static const gchar *
_focus_mode_to_gchar(JNIEnv * env,jstring focus_mode)2976 _focus_mode_to_gchar (JNIEnv * env, jstring focus_mode)
2977 {
2978 if (!focus_mode)
2979 return NULL;
2980
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;
3002
3003 return NULL;
3004 }
3005
3006 static jstring
_focus_mode_to_jstring(const gchar * focus_mode)3007 _focus_mode_to_jstring (const gchar * focus_mode)
3008 {
3009 if (!focus_mode)
3010 return NULL;
3011
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;
3026
3027 return NULL;
3028 }
3029
3030 gchar *
gst_ahc_parameters_flatten(GstAHCParameters * self)3031 gst_ahc_parameters_flatten (GstAHCParameters * self)
3032 {
3033 JNIEnv *env = gst_amc_jni_get_env ();
3034 GError *err = NULL;
3035 jstring v_str = NULL;
3036 const gchar *v = NULL;
3037 gchar *ret = NULL;
3038
3039 gst_amc_jni_call_object_method (env, &err, self->object,
3040 android_hardware_camera_parameters.flatten, &v_str);
3041 if (err) {
3042 GST_ERROR ("Failed to call android.hardware.Camera.Parameters.flatten: %s",
3043 err->message);
3044 goto done;
3045 }
3046
3047 v = (*env)->GetStringUTFChars (env, v_str, NULL);
3048 if (!v) {
3049 GST_ERROR ("Failed to convert string to UTF8");
3050 (*env)->ExceptionClear (env);
3051 goto done;
3052 }
3053
3054 ret = g_strdup (v);
3055 done:
3056 if (err)
3057 g_clear_error (&err);
3058 if (v)
3059 (*env)->ReleaseStringUTFChars (env, v_str, v);
3060 if (v_str)
3061 gst_amc_jni_object_local_unref (env, v_str);
3062
3063 return ret;
3064 }
3065
3066 const gchar *
gst_ahc_parameters_get_antibanding(GstAHCParameters * self)3067 gst_ahc_parameters_get_antibanding (GstAHCParameters * self)
3068 {
3069 JNIEnv *env = gst_amc_jni_get_env ();
3070 GError *err = NULL;
3071 const gchar *ret = NULL;
3072 jstring antibanding;
3073
3074 gst_amc_jni_call_object_method (env, &err, self->object,
3075 android_hardware_camera_parameters.getAntibanding, &antibanding);
3076 if (err) {
3077 GST_ERROR
3078 ("Failed to call android.hardware.Camera.Parameters.getAntibanding: %s",
3079 err->message);
3080 g_clear_error (&err);
3081 return NULL;
3082 }
3083
3084 ret = _antibanding_to_gchar (env, antibanding);
3085
3086 if (antibanding)
3087 gst_amc_jni_object_local_unref (env, antibanding);
3088
3089 return ret;
3090 }
3091
3092 const gchar *
gst_ahc_parameters_get_color_effect(GstAHCParameters * self)3093 gst_ahc_parameters_get_color_effect (GstAHCParameters * self)
3094 {
3095 JNIEnv *env = gst_amc_jni_get_env ();
3096 GError *err = NULL;
3097 const gchar *ret = NULL;
3098 jstring color_effect;
3099
3100 gst_amc_jni_call_object_method (env, &err, self->object,
3101 android_hardware_camera_parameters.getColorEffect, &color_effect);
3102 if (err) {
3103 GST_ERROR
3104 ("Failed to call android.hardware.Camera.Parameters.getColorEffect: %s",
3105 err->message);
3106 g_clear_error (&err);
3107 return NULL;
3108 }
3109
3110 ret = _color_effect_to_gchar (env, color_effect);
3111
3112 if (color_effect)
3113 gst_amc_jni_object_local_unref (env, color_effect);
3114
3115 return ret;
3116 }
3117
3118 gint
gst_ahc_parameters_get_exposure_compensation(GstAHCParameters * self)3119 gst_ahc_parameters_get_exposure_compensation (GstAHCParameters * self)
3120 {
3121 JNIEnv *env = gst_amc_jni_get_env ();
3122 GError *err = NULL;
3123 gint ev;
3124
3125 gst_amc_jni_call_int_method (env, &err, self->object,
3126 android_hardware_camera_parameters.getExposureCompensation, &ev);
3127 if (err) {
3128 GST_ERROR
3129 ("Failed to call android.hardware.Camera.Parameters.getExposureCompensation: %s",
3130 err->message);
3131 g_clear_error (&err);
3132 return -1;
3133 }
3134
3135 return ev;
3136 }
3137
3138 gfloat
gst_ahc_parameters_get_exposure_compensation_step(GstAHCParameters * self)3139 gst_ahc_parameters_get_exposure_compensation_step (GstAHCParameters * self)
3140 {
3141 JNIEnv *env = gst_amc_jni_get_env ();
3142 GError *err = NULL;
3143 gfloat step;
3144
3145 gst_amc_jni_call_float_method (env, &err, self->object,
3146 android_hardware_camera_parameters.getExposureCompensationStep, &step);
3147 if (err) {
3148 GST_ERROR
3149 ("Failed to call android.hardware.Camera.Parameters.getExposureCompensationStep: %s",
3150 err->message);
3151 g_clear_error (&err);
3152 return 0.0;
3153 }
3154
3155 return step;
3156 }
3157
3158 const gchar *
gst_ahc_parameters_get_flash_mode(GstAHCParameters * self)3159 gst_ahc_parameters_get_flash_mode (GstAHCParameters * self)
3160 {
3161 JNIEnv *env = gst_amc_jni_get_env ();
3162 GError *err = NULL;
3163 const gchar *ret = NULL;
3164 jstring flash_mode;
3165
3166 gst_amc_jni_call_object_method (env, &err, self->object,
3167 android_hardware_camera_parameters.getFlashMode, &flash_mode);
3168 if (err) {
3169 GST_ERROR
3170 ("Failed to call android.hardware.Camera.Parameters.getFlashMode: %s",
3171 err->message);
3172 g_clear_error (&err);
3173 return NULL;
3174 }
3175
3176 ret = _flash_mode_to_gchar (env, flash_mode);
3177
3178 if (flash_mode)
3179 gst_amc_jni_object_local_unref (env, flash_mode);
3180
3181 return ret;
3182 }
3183
3184 gfloat
gst_ahc_parameters_get_focal_length(GstAHCParameters * self)3185 gst_ahc_parameters_get_focal_length (GstAHCParameters * self)
3186 {
3187 JNIEnv *env = gst_amc_jni_get_env ();
3188 GError *err = NULL;
3189 gfloat length;
3190
3191 gst_amc_jni_call_float_method (env, &err, self->object,
3192 android_hardware_camera_parameters.getFocalLength, &length);
3193 if (err) {
3194 GST_ERROR
3195 ("Failed to call android.hardware.Camera.Parameters.getFocalLength: %s",
3196 err->message);
3197 g_clear_error (&err);
3198 return 0.0;
3199 }
3200
3201 return length;
3202 }
3203
3204 const gchar *
gst_ahc_parameters_get_focus_mode(GstAHCParameters * self)3205 gst_ahc_parameters_get_focus_mode (GstAHCParameters * self)
3206 {
3207 JNIEnv *env = gst_amc_jni_get_env ();
3208 GError *err = NULL;
3209 const gchar *ret = NULL;
3210 jstring focus_mode;
3211
3212 gst_amc_jni_call_object_method (env, &err, self->object,
3213 android_hardware_camera_parameters.getFocusMode, &focus_mode);
3214 if (err) {
3215 GST_ERROR
3216 ("Failed to call android.hardware.Camera.Parameters.getFocusMode: %s",
3217 err->message);
3218 g_clear_error (&err);
3219 return NULL;
3220 }
3221
3222 ret = _focus_mode_to_gchar (env, focus_mode);
3223
3224 if (focus_mode)
3225 gst_amc_jni_object_local_unref (env, focus_mode);
3226
3227 return ret;
3228 }
3229
3230 gfloat
gst_ahc_parameters_get_horizontal_view_angle(GstAHCParameters * self)3231 gst_ahc_parameters_get_horizontal_view_angle (GstAHCParameters * self)
3232 {
3233 JNIEnv *env = gst_amc_jni_get_env ();
3234 GError *err = NULL;
3235 gfloat angle;
3236
3237 gst_amc_jni_call_float_method (env, &err, self->object,
3238 android_hardware_camera_parameters.getHorizontalViewAngle, &angle);
3239 if (err) {
3240 GST_ERROR
3241 ("Failed to call android.hardware.Camera.Parameters.getHorizontalViewAngle: %s",
3242 err->message);
3243 g_clear_error (&err);
3244 return 0.0;
3245 }
3246
3247 return angle;
3248 }
3249
3250 gint
gst_ahc_parameters_get_max_exposure_compensation(GstAHCParameters * self)3251 gst_ahc_parameters_get_max_exposure_compensation (GstAHCParameters * self)
3252 {
3253 JNIEnv *env = gst_amc_jni_get_env ();
3254 GError *err = NULL;
3255 gint max;
3256
3257 gst_amc_jni_call_int_method (env, &err, self->object,
3258 android_hardware_camera_parameters.getMaxExposureCompensation, &max);
3259 if (err) {
3260 GST_ERROR
3261 ("Failed to call android.hardware.Camera.Parameters.getMaxExposureCompensation: %s",
3262 err->message);
3263 g_clear_error (&err);
3264 return 0;
3265 }
3266
3267 return max;
3268 }
3269
3270 gint
gst_ahc_parameters_get_max_zoom(GstAHCParameters * self)3271 gst_ahc_parameters_get_max_zoom (GstAHCParameters * self)
3272 {
3273 JNIEnv *env = gst_amc_jni_get_env ();
3274 GError *err = NULL;
3275 gint max;
3276
3277 gst_amc_jni_call_int_method (env, &err, self->object,
3278 android_hardware_camera_parameters.getMaxZoom, &max);
3279 if (err) {
3280 GST_ERROR
3281 ("Failed to call android.hardware.Camera.Parameters.getMaxZoom: %s",
3282 err->message);
3283 g_clear_error (&err);
3284 return -1;
3285 }
3286
3287 return max;
3288 }
3289
3290 gint
gst_ahc_parameters_get_min_exposure_compensation(GstAHCParameters * self)3291 gst_ahc_parameters_get_min_exposure_compensation (GstAHCParameters * self)
3292 {
3293 JNIEnv *env = gst_amc_jni_get_env ();
3294 GError *err = NULL;
3295 gint min;
3296
3297 gst_amc_jni_call_int_method (env, &err, self->object,
3298 android_hardware_camera_parameters.getMinExposureCompensation, &min);
3299 if (err) {
3300 GST_ERROR
3301 ("Failed to call android.hardware.Camera.Parameters.getMinExposureCompensation: %s",
3302 err->message);
3303 g_clear_error (&err);
3304 return 0;
3305 }
3306
3307 return min;
3308 }
3309
3310 gint
gst_ahc_parameters_get_preview_format(GstAHCParameters * self)3311 gst_ahc_parameters_get_preview_format (GstAHCParameters * self)
3312 {
3313 JNIEnv *env = gst_amc_jni_get_env ();
3314 GError *err = NULL;
3315 gint format;
3316
3317 gst_amc_jni_call_int_method (env, &err, self->object,
3318 android_hardware_camera_parameters.getPreviewFormat, &format);
3319 if (err) {
3320 GST_ERROR
3321 ("Failed to call android.hardware.Camera.Parameters.getPreviewFormat: %s",
3322 err->message);
3323 g_clear_error (&err);
3324 return 0;
3325 }
3326
3327 return format;
3328 }
3329
3330 gboolean
gst_ahc_parameters_get_preview_fps_range(GstAHCParameters * self,gint * min,gint * max)3331 gst_ahc_parameters_get_preview_fps_range (GstAHCParameters * self,
3332 gint * min, gint * max)
3333 {
3334 JNIEnv *env = gst_amc_jni_get_env ();
3335 GError *err = NULL;
3336 gboolean ret = FALSE;
3337 jintArray range = NULL;
3338 jint *fps = NULL;
3339
3340 range = (*env)->NewIntArray (env, 2);
3341 if (!fps) {
3342 (*env)->ExceptionClear (env);
3343 GST_ERROR ("Failed to create array");
3344 goto done;
3345 }
3346
3347 gst_amc_jni_call_void_method (env, &err, self->object,
3348 android_hardware_camera_parameters.getPreviewFpsRange, range);
3349 if (err) {
3350 GST_ERROR
3351 ("Failed to call android.hardware.Camera.Parameters.getPreviewFpsRange: %s",
3352 err->message);
3353 goto done;
3354 }
3355
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");
3360 goto done;
3361 }
3362 if (min)
3363 *min = fps[0];
3364 if (max)
3365 *max = fps[1];
3366
3367 ret = TRUE;
3368 done:
3369 if (err)
3370 g_clear_error (&err);
3371 if (fps)
3372 (*env)->ReleaseIntArrayElements (env, range, fps, JNI_ABORT);
3373 if (range)
3374 gst_amc_jni_object_local_unref (env, range);
3375
3376 return ret;
3377 }
3378
3379 GstAHCSize *
gst_ahc_parameters_get_preview_size(GstAHCParameters * self)3380 gst_ahc_parameters_get_preview_size (GstAHCParameters * self)
3381 {
3382 JNIEnv *env = gst_amc_jni_get_env ();
3383 GError *err = NULL;
3384 jobject jsize = NULL;
3385 GstAHCSize *size = NULL;
3386
3387 gst_amc_jni_call_object_method (env, &err, self->object,
3388 android_hardware_camera_parameters.getPreviewSize, &jsize);
3389 if (err) {
3390 GST_ERROR
3391 ("Failed to call android.hardware.Camera.Parameters.getPreviewSize: %s",
3392 err->message);
3393 goto done;
3394 }
3395
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);
3403 size = NULL;
3404 goto done;
3405 }
3406
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);
3413 size = NULL;
3414 goto done;
3415 }
3416
3417 done:
3418 if (err)
3419 g_clear_error (&err);
3420 if (jsize)
3421 gst_amc_jni_object_local_unref (env, jsize);
3422
3423 return size;
3424 }
3425
3426 const gchar *
gst_ahc_parameters_get_scene_mode(GstAHCParameters * self)3427 gst_ahc_parameters_get_scene_mode (GstAHCParameters * self)
3428 {
3429 JNIEnv *env = gst_amc_jni_get_env ();
3430 GError *err = NULL;
3431 const gchar *ret = NULL;
3432 jstring scene_mode;
3433
3434 gst_amc_jni_call_object_method (env, &err, self->object,
3435 android_hardware_camera_parameters.getSceneMode, &scene_mode);
3436 if (err) {
3437 GST_ERROR
3438 ("Failed to call android.hardware.Camera.Parameters.getSceneMode: %s",
3439 err->message);
3440 g_clear_error (&err);
3441 return NULL;
3442 }
3443
3444 ret = _scene_mode_to_gchar (env, scene_mode);
3445
3446 if (scene_mode)
3447 gst_amc_jni_object_local_unref (env, scene_mode);
3448
3449 return ret;
3450 }
3451
3452 GList *
gst_ahc_parameters_get_supported_antibanding(GstAHCParameters * self)3453 gst_ahc_parameters_get_supported_antibanding (GstAHCParameters * self)
3454 {
3455 JNIEnv *env = gst_amc_jni_get_env ();
3456 GError *err = NULL;
3457 jobject list = NULL;
3458 GList *ret = NULL;
3459
3460 gst_amc_jni_call_object_method (env, &err, self->object,
3461 android_hardware_camera_parameters.getSupportedAntibanding, &list);
3462 if (err) {
3463 GST_ERROR
3464 ("Failed to call android.hardware.Camera.Parameters.getSupportedAntibanding: %s",
3465 err->message);
3466 g_clear_error (&err);
3467 return NULL;
3468 }
3469
3470 if (list) {
3471 jobject iterator = NULL;
3472
3473 iterator = java_util_list_iterator (env, list);
3474 if (iterator) {
3475 while (java_util_iterator_has_next (env, iterator)) {
3476 jobject str = java_util_iterator_next (env, iterator);
3477
3478 if (str) {
3479 const gchar *value = _antibanding_to_gchar (env, str);
3480
3481 ret = g_list_append (ret, (gchar *) value);
3482 gst_amc_jni_object_local_unref (env, str);
3483 }
3484 }
3485 gst_amc_jni_object_local_unref (env, iterator);
3486 }
3487 gst_amc_jni_object_local_unref (env, list);
3488 }
3489
3490 return ret;
3491 }
3492
3493 void
gst_ahc_parameters_supported_antibanding_free(GList * list)3494 gst_ahc_parameters_supported_antibanding_free (GList * list)
3495 {
3496 g_list_free (list);
3497 }
3498
3499 GList *
gst_ahc_parameters_get_supported_color_effects(GstAHCParameters * self)3500 gst_ahc_parameters_get_supported_color_effects (GstAHCParameters * self)
3501 {
3502 JNIEnv *env = gst_amc_jni_get_env ();
3503 GError *err = NULL;
3504 jobject list = NULL;
3505 GList *ret = NULL;
3506
3507 gst_amc_jni_call_object_method (env, &err, self->object,
3508 android_hardware_camera_parameters.getSupportedColorEffects, &list);
3509 if (err) {
3510 GST_ERROR
3511 ("Failed to call android.hardware.Camera.Parameters.getSupportedColorEffects: %s",
3512 err->message);
3513 g_clear_error (&err);
3514 return NULL;
3515 }
3516
3517 if (list) {
3518 jobject iterator = NULL;
3519
3520 iterator = java_util_list_iterator (env, list);
3521 if (iterator) {
3522 while (java_util_iterator_has_next (env, iterator)) {
3523 jobject str = java_util_iterator_next (env, iterator);
3524
3525 if (str) {
3526 const gchar *value = _color_effect_to_gchar (env, str);
3527
3528 ret = g_list_append (ret, (gchar *) value);
3529 gst_amc_jni_object_local_unref (env, str);
3530 }
3531 }
3532 gst_amc_jni_object_local_unref (env, iterator);
3533 }
3534 gst_amc_jni_object_local_unref (env, list);
3535 }
3536
3537 return ret;
3538 }
3539
3540 void
gst_ahc_parameters_supported_color_effects_free(GList * list)3541 gst_ahc_parameters_supported_color_effects_free (GList * list)
3542 {
3543 g_list_free (list);
3544 }
3545
3546 GList *
gst_ahc_parameters_get_supported_flash_modes(GstAHCParameters * self)3547 gst_ahc_parameters_get_supported_flash_modes (GstAHCParameters * self)
3548 {
3549 JNIEnv *env = gst_amc_jni_get_env ();
3550 GError *err = NULL;
3551 jobject list = NULL;
3552 GList *ret = NULL;
3553
3554 gst_amc_jni_call_object_method (env, &err, self->object,
3555 android_hardware_camera_parameters.getSupportedFlashModes, &list);
3556 if (err) {
3557 GST_ERROR
3558 ("Failed to call android.hardware.Camera.Parameters.getSupportedFlashModes: %s",
3559 err->message);
3560 g_clear_error (&err);
3561 return NULL;
3562 }
3563
3564 if (list) {
3565 jobject iterator = NULL;
3566
3567 iterator = java_util_list_iterator (env, list);
3568 if (iterator) {
3569 while (java_util_iterator_has_next (env, iterator)) {
3570 jobject str = java_util_iterator_next (env, iterator);
3571
3572 if (str) {
3573 const gchar *value = _flash_mode_to_gchar (env, str);
3574
3575 ret = g_list_append (ret, (gchar *) value);
3576 gst_amc_jni_object_local_unref (env, str);
3577 }
3578 }
3579 gst_amc_jni_object_local_unref (env, iterator);
3580 }
3581 gst_amc_jni_object_local_unref (env, list);
3582 }
3583
3584 return ret;
3585 }
3586
3587 void
gst_ahc_parameters_supported_flash_modes_free(GList * list)3588 gst_ahc_parameters_supported_flash_modes_free (GList * list)
3589 {
3590 g_list_free (list);
3591 }
3592
3593 GList *
gst_ahc_parameters_get_supported_focus_modes(GstAHCParameters * self)3594 gst_ahc_parameters_get_supported_focus_modes (GstAHCParameters * self)
3595 {
3596 JNIEnv *env = gst_amc_jni_get_env ();
3597 GError *err = NULL;
3598 jobject list = NULL;
3599 GList *ret = NULL;
3600
3601 gst_amc_jni_call_object_method (env, &err, self->object,
3602 android_hardware_camera_parameters.getSupportedFocusModes, &list);
3603 if (err) {
3604 GST_ERROR
3605 ("Failed to call android.hardware.Camera.Parameters.getSupportedFocusModes: %s",
3606 err->message);
3607 g_clear_error (&err);
3608 return NULL;
3609 }
3610
3611 if (list) {
3612 jobject iterator = NULL;
3613
3614 iterator = java_util_list_iterator (env, list);
3615 if (iterator) {
3616 while (java_util_iterator_has_next (env, iterator)) {
3617 jobject str = java_util_iterator_next (env, iterator);
3618
3619 if (str) {
3620 const gchar *value = _focus_mode_to_gchar (env, str);
3621
3622 ret = g_list_append (ret, (gchar *) value);
3623 gst_amc_jni_object_local_unref (env, str);
3624 }
3625 }
3626 gst_amc_jni_object_local_unref (env, iterator);
3627 }
3628 gst_amc_jni_object_local_unref (env, list);
3629 }
3630
3631 return ret;
3632 }
3633
3634 void
gst_ahc_parameters_supported_focus_modes_free(GList * list)3635 gst_ahc_parameters_supported_focus_modes_free (GList * list)
3636 {
3637 g_list_free (list);
3638 }
3639
3640 GList *
gst_ahc_parameters_get_supported_preview_formats(GstAHCParameters * self)3641 gst_ahc_parameters_get_supported_preview_formats (GstAHCParameters * self)
3642 {
3643 JNIEnv *env = gst_amc_jni_get_env ();
3644 GError *err = NULL;
3645 jobject list = NULL;
3646 GList *ret = NULL;
3647
3648 gst_amc_jni_call_object_method (env, &err, self->object,
3649 android_hardware_camera_parameters.getSupportedPreviewFormats, &list);
3650 if (err) {
3651 GST_ERROR
3652 ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewFormats: %s",
3653 err->message);
3654 g_clear_error (&err);
3655 return NULL;
3656 }
3657
3658 if (list) {
3659 jobject iterator = NULL;
3660
3661 iterator = java_util_list_iterator (env, list);
3662 if (iterator) {
3663 while (java_util_iterator_has_next (env, iterator)) {
3664 jobject integer = java_util_iterator_next (env, iterator);
3665
3666 if (integer) {
3667 jint value = java_lang_integer_int_value (env, integer);
3668
3669 ret = g_list_append (ret, GINT_TO_POINTER (value));
3670 gst_amc_jni_object_local_unref (env, integer);
3671 }
3672 }
3673 gst_amc_jni_object_local_unref (env, iterator);
3674 }
3675 gst_amc_jni_object_local_unref (env, list);
3676 }
3677
3678 return ret;
3679 }
3680
3681 void
gst_ahc_parameters_supported_preview_formats_free(GList * list)3682 gst_ahc_parameters_supported_preview_formats_free (GList * list)
3683 {
3684 g_list_free (list);
3685 }
3686
3687 GList *
gst_ahc_parameters_get_supported_preview_fps_range(GstAHCParameters * self)3688 gst_ahc_parameters_get_supported_preview_fps_range (GstAHCParameters * self)
3689 {
3690 JNIEnv *env = gst_amc_jni_get_env ();
3691 GError *err = NULL;
3692 jobject list = NULL;
3693 GList *ret = NULL;
3694
3695 gst_amc_jni_call_object_method (env, &err, self->object,
3696 android_hardware_camera_parameters.getSupportedPreviewFpsRange, &list);
3697 if (err) {
3698 GST_ERROR
3699 ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewFpsRange: %s",
3700 err->message);
3701 g_clear_error (&err);
3702 return NULL;
3703 }
3704
3705 if (list) {
3706 jobject iterator = NULL;
3707
3708 iterator = java_util_list_iterator (env, list);
3709 if (iterator) {
3710 while (java_util_iterator_has_next (env, iterator)) {
3711 jintArray range = java_util_iterator_next (env, iterator);
3712
3713 if (range) {
3714 jint *fps = g_new (jint, 2);
3715
3716 (*env)->GetIntArrayRegion (env, range, 0, 2, fps);
3717 ret = g_list_append (ret, fps);
3718 gst_amc_jni_object_local_unref (env, range);
3719 }
3720 }
3721 gst_amc_jni_object_local_unref (env, iterator);
3722 }
3723 gst_amc_jni_object_local_unref (env, list);
3724 }
3725
3726 return ret;
3727 }
3728
3729 void
gst_ahc_parameters_supported_preview_fps_range_free(GList * list)3730 gst_ahc_parameters_supported_preview_fps_range_free (GList * list)
3731 {
3732 g_list_foreach (list, (GFunc) g_free, NULL);
3733 g_list_free (list);
3734 }
3735
3736 GList *
gst_ahc_parameters_get_supported_preview_sizes(GstAHCParameters * self)3737 gst_ahc_parameters_get_supported_preview_sizes (GstAHCParameters * self)
3738 {
3739 JNIEnv *env = gst_amc_jni_get_env ();
3740 GError *err = NULL;
3741 jobject list = NULL;
3742 GList *ret = NULL;
3743
3744 gst_amc_jni_call_object_method (env, &err, self->object,
3745 android_hardware_camera_parameters.getSupportedPreviewSizes, &list);
3746 if (err) {
3747 GST_ERROR
3748 ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewSizes: %s",
3749 err->message);
3750 g_clear_error (&err);
3751 return NULL;
3752 }
3753
3754 if (list) {
3755 jobject iterator = NULL;
3756
3757 iterator = java_util_list_iterator (env, list);
3758 if (iterator) {
3759 while (java_util_iterator_has_next (env, iterator)) {
3760 jobject jsize = java_util_iterator_next (env, iterator);
3761
3762 if (jsize) {
3763 jint width, height;
3764
3765 width = (*env)->GetIntField (env, jsize,
3766 android_hardware_camera_size.width);
3767 height = (*env)->GetIntField (env, jsize,
3768 android_hardware_camera_size.height);
3769
3770 ret = g_list_append (ret, gst_ahc_size_new (width, height));
3771 gst_amc_jni_object_local_unref (env, jsize);
3772 }
3773 }
3774 gst_amc_jni_object_local_unref (env, iterator);
3775 }
3776 gst_amc_jni_object_local_unref (env, list);
3777 }
3778
3779 return ret;
3780 }
3781
3782 void
gst_ahc_parameters_supported_preview_sizes_free(GList * list)3783 gst_ahc_parameters_supported_preview_sizes_free (GList * list)
3784 {
3785 g_list_foreach (list, (GFunc) gst_ahc_size_free, NULL);
3786 g_list_free (list);
3787 }
3788
3789 GList *
gst_ahc_parameters_get_supported_scene_modes(GstAHCParameters * self)3790 gst_ahc_parameters_get_supported_scene_modes (GstAHCParameters * self)
3791 {
3792 JNIEnv *env = gst_amc_jni_get_env ();
3793 GError *err = NULL;
3794 jobject list = NULL;
3795 GList *ret = NULL;
3796
3797 gst_amc_jni_call_object_method (env, &err, self->object,
3798 android_hardware_camera_parameters.getSupportedSceneModes, &list);
3799 if (err) {
3800 GST_ERROR
3801 ("Failed to call android.hardware.Camera.Parameters.getSupportedSceneModes: %s",
3802 err->message);
3803 g_clear_error (&err);
3804 return NULL;
3805 }
3806
3807 if (list) {
3808 jobject iterator = NULL;
3809
3810 iterator = java_util_list_iterator (env, list);
3811 if (iterator) {
3812 while (java_util_iterator_has_next (env, iterator)) {
3813 jobject str = java_util_iterator_next (env, iterator);
3814
3815 if (str) {
3816 const gchar *value = _scene_mode_to_gchar (env, str);
3817
3818 ret = g_list_append (ret, (gchar *) value);
3819 gst_amc_jni_object_local_unref (env, str);
3820 }
3821 }
3822 gst_amc_jni_object_local_unref (env, iterator);
3823 }
3824 gst_amc_jni_object_local_unref (env, list);
3825 }
3826
3827 return ret;
3828 }
3829
3830 void
gst_ahc_parameters_supported_scene_modes_free(GList * list)3831 gst_ahc_parameters_supported_scene_modes_free (GList * list)
3832 {
3833 g_list_free (list);
3834 }
3835
3836 GList *
gst_ahc_parameters_get_supported_white_balance(GstAHCParameters * self)3837 gst_ahc_parameters_get_supported_white_balance (GstAHCParameters * self)
3838 {
3839 JNIEnv *env = gst_amc_jni_get_env ();
3840 GError *err = NULL;
3841 jobject list = NULL;
3842 GList *ret = NULL;
3843
3844 gst_amc_jni_call_object_method (env, &err, self->object,
3845 android_hardware_camera_parameters.getSupportedWhiteBalance, &list);
3846 if (err) {
3847 GST_ERROR
3848 ("Failed to call android.hardware.Camera.Parameters.getSupportedWhiteBalance: %s",
3849 err->message);
3850 g_clear_error (&err);
3851 return NULL;
3852 }
3853
3854 if (list) {
3855 jobject iterator = NULL;
3856
3857 iterator = java_util_list_iterator (env, list);
3858 if (iterator) {
3859 while (java_util_iterator_has_next (env, iterator)) {
3860 jobject str = java_util_iterator_next (env, iterator);
3861
3862 if (str) {
3863 const gchar *value = _white_balance_to_gchar (env, str);
3864
3865 ret = g_list_append (ret, (gchar *) value);
3866 gst_amc_jni_object_local_unref (env, str);
3867 }
3868 }
3869 gst_amc_jni_object_local_unref (env, iterator);
3870 }
3871 gst_amc_jni_object_local_unref (env, list);
3872 }
3873
3874 return ret;
3875 }
3876
3877 void
gst_ahc_parameters_supported_white_balance_free(GList * list)3878 gst_ahc_parameters_supported_white_balance_free (GList * list)
3879 {
3880 g_list_free (list);
3881 }
3882
3883 gfloat
gst_ahc_parameters_get_vertical_view_angle(GstAHCParameters * self)3884 gst_ahc_parameters_get_vertical_view_angle (GstAHCParameters * self)
3885 {
3886 JNIEnv *env = gst_amc_jni_get_env ();
3887 GError *err = NULL;
3888 gfloat angle;
3889
3890 gst_amc_jni_call_float_method (env, &err, self->object,
3891 android_hardware_camera_parameters.getVerticalViewAngle, &angle);
3892 if (err) {
3893 GST_ERROR
3894 ("Failed to call android.hardware.Camera.Parameters.getVerticalViewAngle: %s",
3895 err->message);
3896 g_clear_error (&err);
3897 return 0.0;
3898 }
3899
3900 return angle;
3901 }
3902
3903 gboolean
gst_ahc_parameters_get_video_stabilization(GstAHCParameters * self)3904 gst_ahc_parameters_get_video_stabilization (GstAHCParameters * self)
3905 {
3906 JNIEnv *env = gst_amc_jni_get_env ();
3907 GError *err = NULL;
3908 gboolean ret;
3909
3910 gst_amc_jni_call_boolean_method (env, &err, self->object,
3911 android_hardware_camera_parameters.getVideoStabilization, &ret);
3912 if (err) {
3913 GST_ERROR
3914 ("Failed to call android.hardware.Camera.Parameters.getVideoStabilization: %s",
3915 err->message);
3916 g_clear_error (&err);
3917 return FALSE;
3918 }
3919
3920 return ret;
3921 }
3922
3923 const gchar *
gst_ahc_parameters_get_white_balance(GstAHCParameters * self)3924 gst_ahc_parameters_get_white_balance (GstAHCParameters * self)
3925 {
3926 JNIEnv *env = gst_amc_jni_get_env ();
3927 GError *err = NULL;
3928 const gchar *ret = NULL;
3929 jstring white_balance;
3930
3931 gst_amc_jni_call_object_method (env, &err, self->object,
3932 android_hardware_camera_parameters.getWhiteBalance, &white_balance);
3933 if (err) {
3934 GST_ERROR
3935 ("Failed to call android.hardware.Camera.Parameters.getWhiteBalance: %s",
3936 err->message);
3937 g_clear_error (&err);
3938 return NULL;
3939 }
3940
3941 ret = _white_balance_to_gchar (env, white_balance);
3942
3943 if (white_balance)
3944 gst_amc_jni_object_local_unref (env, white_balance);
3945
3946 return ret;
3947 }
3948
3949 gint
gst_ahc_parameters_get_zoom(GstAHCParameters * self)3950 gst_ahc_parameters_get_zoom (GstAHCParameters * self)
3951 {
3952 JNIEnv *env = gst_amc_jni_get_env ();
3953 GError *err = NULL;
3954 gint zoom;
3955
3956 gst_amc_jni_call_int_method (env, &err, self->object,
3957 android_hardware_camera_parameters.getZoom, &zoom);
3958 if (err) {
3959 GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getZoom: %s",
3960 err->message);
3961 g_clear_error (&err);
3962 return -1;
3963 }
3964
3965 return zoom;
3966 }
3967
3968 GList *
gst_ahc_parameters_get_zoom_ratios(GstAHCParameters * self)3969 gst_ahc_parameters_get_zoom_ratios (GstAHCParameters * self)
3970 {
3971 JNIEnv *env = gst_amc_jni_get_env ();
3972 GError *err = NULL;
3973 jobject list = NULL;
3974 GList *ret = NULL;
3975
3976 gst_amc_jni_call_object_method (env, &err, self->object,
3977 android_hardware_camera_parameters.getZoomRatios, &list);
3978 if (err) {
3979 GST_ERROR
3980 ("Failed to call android.hardware.Camera.Parameters.getZoomRatios: %s",
3981 err->message);
3982 g_clear_error (&err);
3983 return NULL;
3984 }
3985
3986 if (list) {
3987 jobject iterator = NULL;
3988
3989 iterator = java_util_list_iterator (env, list);
3990 if (iterator) {
3991 while (java_util_iterator_has_next (env, iterator)) {
3992 jobject integer = java_util_iterator_next (env, iterator);
3993
3994 if (integer) {
3995 jint value = java_lang_integer_int_value (env, integer);
3996
3997 ret = g_list_append (ret, GINT_TO_POINTER (value));
3998 gst_amc_jni_object_local_unref (env, integer);
3999 }
4000 }
4001 gst_amc_jni_object_local_unref (env, iterator);
4002 }
4003 gst_amc_jni_object_local_unref (env, list);
4004 }
4005
4006 return ret;
4007 }
4008
4009 void
gst_ahc_parameters_zoom_ratios_free(GList * list)4010 gst_ahc_parameters_zoom_ratios_free (GList * list)
4011 {
4012 g_list_free (list);
4013 }
4014
4015 gboolean
gst_ahc_parameters_is_smooth_zoom_supported(GstAHCParameters * self)4016 gst_ahc_parameters_is_smooth_zoom_supported (GstAHCParameters * self)
4017 {
4018 JNIEnv *env = gst_amc_jni_get_env ();
4019 GError *err = NULL;
4020 gboolean supported;
4021
4022 gst_amc_jni_call_boolean_method (env, &err, self->object,
4023 android_hardware_camera_parameters.isSmoothZoomSupported, &supported);
4024 if (err) {
4025 GST_ERROR
4026 ("Failed to call android.hardware.Camera.Parameters.isSmoothZoomSupported: %s",
4027 err->message);
4028 g_clear_error (&err);
4029 return FALSE;
4030 }
4031
4032 return supported;
4033 }
4034
4035 gboolean
gst_ahc_parameters_is_video_stabilization_supported(GstAHCParameters * self)4036 gst_ahc_parameters_is_video_stabilization_supported (GstAHCParameters * self)
4037 {
4038 JNIEnv *env = gst_amc_jni_get_env ();
4039 GError *err = NULL;
4040 gboolean supported;
4041
4042 gst_amc_jni_call_boolean_method (env, &err, self->object,
4043 android_hardware_camera_parameters.isVideoStabilizationSupported,
4044 &supported);
4045 if (err) {
4046 GST_ERROR
4047 ("Failed to call android.hardware.Camera.Parameters.isVideoStabilizationSupported: %s",
4048 err->message);
4049 g_clear_error (&err);
4050 return FALSE;
4051 }
4052
4053 return supported;
4054 }
4055
4056 gboolean
gst_ahc_parameters_is_zoom_supported(GstAHCParameters * self)4057 gst_ahc_parameters_is_zoom_supported (GstAHCParameters * self)
4058 {
4059 JNIEnv *env = gst_amc_jni_get_env ();
4060 GError *err = NULL;
4061 gboolean supported;
4062
4063 gst_amc_jni_call_boolean_method (env, &err, self->object,
4064 android_hardware_camera_parameters.isZoomSupported, &supported);
4065 if (err) {
4066 GST_ERROR
4067 ("Failed to call android.hardware.Camera.Parameters.isZoomSupported: %s",
4068 err->message);
4069 g_clear_error (&err);
4070 return FALSE;
4071 }
4072
4073 return supported;
4074 }
4075
4076 gboolean
gst_ahc_parameters_set_antibanding(GstAHCParameters * self,const gchar * value)4077 gst_ahc_parameters_set_antibanding (GstAHCParameters * self,
4078 const gchar * value)
4079 {
4080 JNIEnv *env = gst_amc_jni_get_env ();
4081 GError *err = NULL;
4082 jstring antibanding;
4083
4084 antibanding = _antibanding_to_jstring (value);
4085 if (!antibanding)
4086 return FALSE;
4087
4088 gst_amc_jni_call_void_method (env, &err, self->object,
4089 android_hardware_camera_parameters.setAntibanding, antibanding);
4090 if (err) {
4091 GST_ERROR
4092 ("Failed to call android.hardware.Camera.Parameters.setAntibanding: %s",
4093 err->message);
4094 g_clear_error (&err);
4095 return FALSE;
4096 }
4097
4098 return TRUE;
4099 }
4100
4101 gboolean
gst_ahc_parameters_set_color_effect(GstAHCParameters * self,const gchar * value)4102 gst_ahc_parameters_set_color_effect (GstAHCParameters * self,
4103 const gchar * value)
4104 {
4105 JNIEnv *env = gst_amc_jni_get_env ();
4106 GError *err = NULL;
4107 jstring color_effect;
4108
4109 color_effect = _color_effect_to_jstring (value);
4110 if (!color_effect)
4111 return FALSE;
4112
4113 gst_amc_jni_call_void_method (env, &err, self->object,
4114 android_hardware_camera_parameters.setColorEffect, color_effect);
4115 if (err) {
4116 GST_ERROR
4117 ("Failed to call android.hardware.Camera.Parameters.setColorEffect: %s",
4118 err->message);
4119 g_clear_error (&err);
4120 return FALSE;
4121 }
4122
4123 return TRUE;
4124 }
4125
4126 gboolean
gst_ahc_parameters_set_exposure_compensation(GstAHCParameters * self,gint value)4127 gst_ahc_parameters_set_exposure_compensation (GstAHCParameters * self,
4128 gint value)
4129 {
4130 JNIEnv *env = gst_amc_jni_get_env ();
4131 GError *err = NULL;
4132
4133 gst_amc_jni_call_void_method (env, &err, self->object,
4134 android_hardware_camera_parameters.setExposureCompensation, value);
4135 if (err) {
4136 GST_ERROR
4137 ("Failed to call android.hardware.Camera.Parameters.setExposureCompensation: %s",
4138 err->message);
4139 g_clear_error (&err);
4140 return FALSE;
4141 }
4142
4143 return TRUE;
4144 }
4145
4146 gboolean
gst_ahc_parameters_set_flash_mode(GstAHCParameters * self,const gchar * value)4147 gst_ahc_parameters_set_flash_mode (GstAHCParameters * self, const gchar * value)
4148 {
4149 JNIEnv *env = gst_amc_jni_get_env ();
4150 GError *err = NULL;
4151 jstring flash_mode;
4152
4153 flash_mode = _flash_mode_to_jstring (value);
4154 if (!flash_mode)
4155 return FALSE;
4156
4157 gst_amc_jni_call_void_method (env, &err, self->object,
4158 android_hardware_camera_parameters.setFlashMode, flash_mode);
4159 if (err) {
4160 GST_ERROR
4161 ("Failed to call android.hardware.Camera.Parameters.setFlashMode: %s",
4162 err->message);
4163 g_clear_error (&err);
4164 return FALSE;
4165 }
4166
4167 return TRUE;
4168 }
4169
4170 gboolean
gst_ahc_parameters_set_focus_mode(GstAHCParameters * self,const gchar * value)4171 gst_ahc_parameters_set_focus_mode (GstAHCParameters * self, const gchar * value)
4172 {
4173 JNIEnv *env = gst_amc_jni_get_env ();
4174 GError *err = NULL;
4175 jstring focus_mode;
4176
4177 focus_mode = _focus_mode_to_jstring (value);
4178 if (!focus_mode)
4179 return FALSE;
4180
4181 gst_amc_jni_call_void_method (env, &err, self->object,
4182 android_hardware_camera_parameters.setFocusMode, focus_mode);
4183 if (err) {
4184 GST_ERROR
4185 ("Failed to call android.hardware.Camera.Parameters.setFocusMode: %s",
4186 err->message);
4187 g_clear_error (&err);
4188 return FALSE;
4189 }
4190
4191 return TRUE;
4192 }
4193
4194 gboolean
gst_ahc_parameters_set_preview_format(GstAHCParameters * self,gint format)4195 gst_ahc_parameters_set_preview_format (GstAHCParameters * self, gint format)
4196 {
4197 JNIEnv *env = gst_amc_jni_get_env ();
4198 GError *err = NULL;
4199
4200 gst_amc_jni_call_void_method (env, &err, self->object,
4201 android_hardware_camera_parameters.setPreviewFormat, format);
4202 if (err) {
4203 GST_ERROR
4204 ("Failed to call android.hardware.Camera.Parameters.setPreviewFormat: %s",
4205 err->message);
4206 g_clear_error (&err);
4207 return FALSE;
4208 }
4209
4210 return TRUE;
4211 }
4212
4213 gboolean
gst_ahc_parameters_set_preview_fps_range(GstAHCParameters * self,gint min,gint max)4214 gst_ahc_parameters_set_preview_fps_range (GstAHCParameters * self,
4215 gint min, gint max)
4216 {
4217 JNIEnv *env = gst_amc_jni_get_env ();
4218 GError *err = NULL;
4219
4220 gst_amc_jni_call_void_method (env, &err, self->object,
4221 android_hardware_camera_parameters.setPreviewFpsRange, min, max);
4222 if (err) {
4223 GST_ERROR
4224 ("Failed to call android.hardware.Camera.Parameters.setPreviewFpsRange: %s",
4225 err->message);
4226 g_clear_error (&err);
4227 return FALSE;
4228 }
4229
4230 return TRUE;
4231 }
4232
4233 gboolean
gst_ahc_parameters_set_preview_size(GstAHCParameters * self,gint width,gint height)4234 gst_ahc_parameters_set_preview_size (GstAHCParameters * self,
4235 gint width, gint height)
4236 {
4237 JNIEnv *env = gst_amc_jni_get_env ();
4238 GError *err = NULL;
4239
4240 gst_amc_jni_call_void_method (env, &err, self->object,
4241 android_hardware_camera_parameters.setPreviewSize, width, height);
4242 if (err) {
4243 GST_ERROR
4244 ("Failed to call android.hardware.Camera.Parameters.setPreviewSize: %s",
4245 err->message);
4246 g_clear_error (&err);
4247 return FALSE;
4248 }
4249
4250 return TRUE;
4251 }
4252
4253 gboolean
gst_ahc_parameters_set_scene_mode(GstAHCParameters * self,const gchar * value)4254 gst_ahc_parameters_set_scene_mode (GstAHCParameters * self, const gchar * value)
4255 {
4256 JNIEnv *env = gst_amc_jni_get_env ();
4257 GError *err = NULL;
4258 jstring scene_mode;
4259
4260 scene_mode = _scene_mode_to_jstring (value);
4261 if (!scene_mode)
4262 return FALSE;
4263
4264 gst_amc_jni_call_void_method (env, &err, self->object,
4265 android_hardware_camera_parameters.setSceneMode, scene_mode);
4266 if (err) {
4267 GST_ERROR
4268 ("Failed to call android.hardware.Camera.Parameters.setSceneMode: %s",
4269 err->message);
4270 g_clear_error (&err);
4271 return FALSE;
4272 }
4273
4274 return TRUE;
4275 }
4276
4277
4278 gboolean
gst_ahc_parameters_set_video_stabilization(GstAHCParameters * self,gboolean toggle)4279 gst_ahc_parameters_set_video_stabilization (GstAHCParameters * self,
4280 gboolean toggle)
4281 {
4282 JNIEnv *env = gst_amc_jni_get_env ();
4283 GError *err = NULL;
4284
4285 gst_amc_jni_call_void_method (env, &err, self->object,
4286 android_hardware_camera_parameters.setVideoStabilization, toggle);
4287 if (err) {
4288 GST_ERROR
4289 ("Failed to call android.hardware.Camera.Parameters.setVideoStabilization: %s",
4290 err->message);
4291 g_clear_error (&err);
4292 return FALSE;
4293 }
4294
4295 return TRUE;
4296 }
4297
4298 gboolean
gst_ahc_parameters_set_white_balance(GstAHCParameters * self,const gchar * value)4299 gst_ahc_parameters_set_white_balance (GstAHCParameters * self,
4300 const gchar * value)
4301 {
4302 JNIEnv *env = gst_amc_jni_get_env ();
4303 GError *err = NULL;
4304 jstring white_balance;
4305
4306 white_balance = _white_balance_to_jstring (value);
4307 if (!white_balance)
4308 return FALSE;
4309
4310 gst_amc_jni_call_void_method (env, &err, self->object,
4311 android_hardware_camera_parameters.setWhiteBalance, white_balance);
4312 if (err) {
4313 GST_ERROR
4314 ("Failed to call android.hardware.Camera.Parameters.setWhiteBalance: %s",
4315 err->message);
4316 g_clear_error (&err);
4317 return FALSE;
4318 }
4319
4320 return TRUE;
4321 }
4322
4323 gboolean
gst_ahc_parameters_set_zoom(GstAHCParameters * self,gint value)4324 gst_ahc_parameters_set_zoom (GstAHCParameters * self, gint value)
4325 {
4326 JNIEnv *env = gst_amc_jni_get_env ();
4327 GError *err = NULL;
4328
4329 gst_amc_jni_call_void_method (env, &err, self->object,
4330 android_hardware_camera_parameters.setZoom, value);
4331 if (err) {
4332 GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setZoom: %s",
4333 err->message);
4334 g_clear_error (&err);
4335 return FALSE;
4336 }
4337
4338 return TRUE;
4339 }
4340
4341 gboolean
gst_ahc_parameters_unflatten(GstAHCParameters * self,const gchar * flattened)4342 gst_ahc_parameters_unflatten (GstAHCParameters * self, const gchar * flattened)
4343 {
4344 JNIEnv *env = gst_amc_jni_get_env ();
4345 GError *err = NULL;
4346 jstring v_str = NULL;
4347 gboolean ret = TRUE;
4348
4349 v_str = (*env)->NewStringUTF (env, flattened);
4350 if (v_str == NULL)
4351 return FALSE;
4352
4353 gst_amc_jni_call_void_method (env, &err, self->object,
4354 android_hardware_camera_parameters.unflatten, v_str);
4355 if (err) {
4356 GST_ERROR
4357 ("Failed to call android.hardware.Camera.Parameters.unflatten: %s",
4358 err->message);
4359 g_clear_error (&err);
4360 ret = FALSE;
4361 }
4362
4363 gst_amc_jni_object_local_unref (env, self->object);
4364
4365 return ret;
4366 }
4367
4368 void
gst_ahc_parameters_free(GstAHCParameters * self)4369 gst_ahc_parameters_free (GstAHCParameters * self)
4370 {
4371 JNIEnv *env = gst_amc_jni_get_env ();
4372
4373 g_return_if_fail (self != NULL);
4374 g_return_if_fail (self->object != NULL);
4375
4376 GST_DEBUG ("freeing parameters %p", self->object);
4377
4378 gst_amc_jni_object_unref (env, self->object);
4379 g_slice_free (GstAHCParameters, self);
4380 }
4381