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 EFFECT_EMBOSS;
150 jstring EFFECT_SKETCH;
151 jstring EFFECT_NEON;
152 jstring ANTIBANDING_AUTO;
153 jstring ANTIBANDING_50HZ;
154 jstring ANTIBANDING_60HZ;
155 jstring ANTIBANDING_OFF;
156 jstring FLASH_MODE_OFF;
157 jstring FLASH_MODE_AUTO;
158 jstring FLASH_MODE_ON;
159 jstring FLASH_MODE_RED_EYE;
160 jstring FLASH_MODE_TORCH;
161 jstring SCENE_MODE_AUTO;
162 jstring SCENE_MODE_ACTION;
163 jstring SCENE_MODE_PORTRAIT;
164 jstring SCENE_MODE_LANDSCAPE;
165 jstring SCENE_MODE_NIGHT;
166 jstring SCENE_MODE_NIGHT_PORTRAIT;
167 jstring SCENE_MODE_THEATRE;
168 jstring SCENE_MODE_BEACH;
169 jstring SCENE_MODE_SNOW;
170 jstring SCENE_MODE_SUNSET;
171 jstring SCENE_MODE_STEADYPHOTO;
172 jstring SCENE_MODE_FIREWORKS;
173 jstring SCENE_MODE_SPORTS;
174 jstring SCENE_MODE_PARTY;
175 jstring SCENE_MODE_CANDLELIGHT;
176 jstring SCENE_MODE_BARCODE;
177 jstring SCENE_MODE_BACKLIGHT;
178 jstring SCENE_MODE_FLOWERS;
179 jstring SCENE_MODE_AR;
180 jstring SCENE_MODE_HDR;
181 jstring FOCUS_MODE_AUTO;
182 jstring FOCUS_MODE_INFINITY;
183 jstring FOCUS_MODE_MACRO;
184 jstring FOCUS_MODE_FIXED;
185 jstring FOCUS_MODE_EDOF;
186 jstring FOCUS_MODE_CONTINUOUS_VIDEO;
187 jstring FOCUS_MODE_CONTINUOUS_PICTURE;
188 } android_hardware_camera_parameters = {
189 0};
190
191 const gchar *Parameters_WHITE_BALANCE_AUTO;
192 const gchar *Parameters_WHITE_BALANCE_INCANDESCENT;
193 const gchar *Parameters_WHITE_BALANCE_FLUORESCENT;
194 const gchar *Parameters_WHITE_BALANCE_WARM_FLUORESCENT;
195 const gchar *Parameters_WHITE_BALANCE_DAYLIGHT;
196 const gchar *Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT;
197 const gchar *Parameters_WHITE_BALANCE_TWILIGHT;
198 const gchar *Parameters_WHITE_BALANCE_SHADE;
199 const gchar *Parameters_EFFECT_NONE;
200 const gchar *Parameters_EFFECT_MONO;
201 const gchar *Parameters_EFFECT_NEGATIVE;
202 const gchar *Parameters_EFFECT_SOLARIZE;
203 const gchar *Parameters_EFFECT_SEPIA;
204 const gchar *Parameters_EFFECT_POSTERIZE;
205 const gchar *Parameters_EFFECT_WHITEBOARD;
206 const gchar *Parameters_EFFECT_BLACKBOARD;
207 const gchar *Parameters_EFFECT_AQUA;
208 const gchar *Parameters_EFFECT_EMBOSS;
209 const gchar *Parameters_EFFECT_SKETCH;
210 const gchar *Parameters_EFFECT_NEON;
211 const gchar *Parameters_ANTIBANDING_AUTO;
212 const gchar *Parameters_ANTIBANDING_50HZ;
213 const gchar *Parameters_ANTIBANDING_60HZ;
214 const gchar *Parameters_ANTIBANDING_OFF;
215 const gchar *Parameters_FLASH_MODE_OFF;
216 const gchar *Parameters_FLASH_MODE_AUTO;
217 const gchar *Parameters_FLASH_MODE_ON;
218 const gchar *Parameters_FLASH_MODE_RED_EYE;
219 const gchar *Parameters_FLASH_MODE_TORCH;
220 const gchar *Parameters_SCENE_MODE_AUTO;
221 const gchar *Parameters_SCENE_MODE_ACTION;
222 const gchar *Parameters_SCENE_MODE_PORTRAIT;
223 const gchar *Parameters_SCENE_MODE_LANDSCAPE;
224 const gchar *Parameters_SCENE_MODE_NIGHT;
225 const gchar *Parameters_SCENE_MODE_NIGHT_PORTRAIT;
226 const gchar *Parameters_SCENE_MODE_THEATRE;
227 const gchar *Parameters_SCENE_MODE_BEACH;
228 const gchar *Parameters_SCENE_MODE_SNOW;
229 const gchar *Parameters_SCENE_MODE_SUNSET;
230 const gchar *Parameters_SCENE_MODE_STEADYPHOTO;
231 const gchar *Parameters_SCENE_MODE_FIREWORKS;
232 const gchar *Parameters_SCENE_MODE_SPORTS;
233 const gchar *Parameters_SCENE_MODE_PARTY;
234 const gchar *Parameters_SCENE_MODE_CANDLELIGHT;
235 const gchar *Parameters_SCENE_MODE_BARCODE;
236 const gchar *Parameters_SCENE_MODE_BACKLIGHT;
237 const gchar *Parameters_SCENE_MODE_FLOWERS;
238 const gchar *Parameters_SCENE_MODE_AR;
239 const gchar *Parameters_SCENE_MODE_HDR;
240 const gchar *Parameters_FOCUS_MODE_AUTO;
241 const gchar *Parameters_FOCUS_MODE_INFINITY;
242 const gchar *Parameters_FOCUS_MODE_MACRO;
243 const gchar *Parameters_FOCUS_MODE_FIXED;
244 const gchar *Parameters_FOCUS_MODE_EDOF;
245 const gchar *Parameters_FOCUS_MODE_CONTINUOUS_VIDEO;
246 const gchar *Parameters_FOCUS_MODE_CONTINUOUS_PICTURE;
247
248 static struct
249 {
250 jclass klass;
251 jmethodID iterator;
252 } java_util_list = {
253 0};
254
255 static struct
256 {
257 jclass klass;
258 jmethodID hasNext;
259 jmethodID next;
260 } java_util_iterator = {
261 0};
262
263 static struct
264 {
265 jclass klass;
266 jmethodID intValue;
267 } java_lang_integer = {
268 0};
269
270 static struct
271 {
272 jclass klass;
273 jmethodID equals;
274 } java_lang_string = {
275 0};
276
277 static struct
278 {
279 jclass klass;
280 jmethodID constructor;
281 } org_freedesktop_gstreamer_androidmedia_gstahccallback = {
282 0};
283
284 static void
gst_ah_camera_on_preview_frame(JNIEnv * env,jclass klass,jbyteArray data,jobject camera,jlong callback,jlong user_data)285 gst_ah_camera_on_preview_frame (JNIEnv * env, jclass klass, jbyteArray data,
286 jobject camera, jlong callback, jlong user_data)
287 {
288 GstAHCPreviewCallback cb = (GstAHCPreviewCallback) (gsize) callback;
289
290 if (cb)
291 cb (data, (gpointer) (gsize) user_data);
292 }
293
294 static void
gst_ah_camera_on_error(JNIEnv * env,jclass klass,jint error,jobject camera,jlong callback,jlong user_data)295 gst_ah_camera_on_error (JNIEnv * env, jclass klass, jint error,
296 jobject camera, jlong callback, jlong user_data)
297 {
298 GstAHCErrorCallback cb = (GstAHCErrorCallback) (gsize) callback;
299
300 if (cb)
301 cb (error, (gpointer) (gsize) user_data);
302 }
303
304 static void
gst_ah_camera_on_auto_focus(JNIEnv * env,jclass klass,jboolean success,jobject camera,jlong callback,jlong user_data)305 gst_ah_camera_on_auto_focus (JNIEnv * env, jclass klass, jboolean success,
306 jobject camera, jlong callback, jlong user_data)
307 {
308 GstAHCAutoFocusCallback cb = (GstAHCAutoFocusCallback) (gsize) callback;
309
310 if (cb)
311 cb (success, (gpointer) (gsize) user_data);
312 }
313
314 static JNINativeMethod native_methods[] = {
315 {(gchar *) "gst_ah_camera_on_preview_frame",
316 (gchar *) "([BLandroid/hardware/Camera;JJ)V",
317 (void *) gst_ah_camera_on_preview_frame},
318 {(gchar *) "gst_ah_camera_on_error",
319 (gchar *) "(ILandroid/hardware/Camera;JJ)V",
320 (void *) gst_ah_camera_on_error},
321 {(gchar *) "gst_ah_camera_on_auto_focus",
322 (gchar *) "(ZLandroid/hardware/Camera;JJ)V",
323 (void *) gst_ah_camera_on_auto_focus}
324 };
325
326 static gboolean
_init_classes(void)327 _init_classes (void)
328 {
329 JNIEnv *env;
330 GError *err = NULL;
331
332 jclass klass;
333 jfieldID fieldID;
334
335 env = gst_amc_jni_get_env ();
336
337 /* android.hardware.Camera */
338 klass = android_hardware_camera.klass =
339 gst_amc_jni_get_class (env, &err, "android/hardware/Camera");
340 if (!klass)
341 goto failed;
342
343 android_hardware_camera.addCallbackBuffer =
344 gst_amc_jni_get_method_id (env, &err, klass,
345 "addCallbackBuffer", "([B)V");
346
347 android_hardware_camera.autoFocus =
348 gst_amc_jni_get_method_id (env, &err, klass,
349 "autoFocus", "(Landroid/hardware/Camera$AutoFocusCallback;)V");
350
351 android_hardware_camera.cancelAutoFocus =
352 gst_amc_jni_get_method_id (env, &err, klass, "cancelAutoFocus", "()V");
353
354 android_hardware_camera.getCameraInfo =
355 gst_amc_jni_get_static_method_id (env, &err, klass,
356 "getCameraInfo", "(ILandroid/hardware/Camera$CameraInfo;)V");
357
358 android_hardware_camera.getNumberOfCameras =
359 gst_amc_jni_get_static_method_id (env, &err, klass,
360 "getNumberOfCameras", "()I");
361
362 android_hardware_camera.getParameters =
363 gst_amc_jni_get_method_id (env, &err, klass,
364 "getParameters", "()Landroid/hardware/Camera$Parameters;");
365
366 android_hardware_camera.lock =
367 gst_amc_jni_get_method_id (env, &err, klass, "lock", "()V");
368
369 android_hardware_camera.open =
370 gst_amc_jni_get_static_method_id (env, &err, klass,
371 "open", "(I)Landroid/hardware/Camera;");
372
373 android_hardware_camera.reconnect =
374 gst_amc_jni_get_method_id (env, &err, klass, "reconnect", "()V");
375
376 android_hardware_camera.release =
377 gst_amc_jni_get_method_id (env, &err, klass, "release", "()V");
378
379 android_hardware_camera.setErrorCallback =
380 gst_amc_jni_get_method_id (env, &err, klass, "setErrorCallback",
381 "(Landroid/hardware/Camera$ErrorCallback;)V");
382
383 android_hardware_camera.setParameters =
384 gst_amc_jni_get_method_id (env, &err, klass, "setParameters",
385 "(Landroid/hardware/Camera$Parameters;)V");
386
387 android_hardware_camera.setPreviewCallbackWithBuffer =
388 gst_amc_jni_get_method_id (env, &err, klass,
389 "setPreviewCallbackWithBuffer",
390 "(Landroid/hardware/Camera$PreviewCallback;)V");
391
392 android_hardware_camera.setPreviewTexture =
393 gst_amc_jni_get_method_id (env, &err, klass,
394 "setPreviewTexture", "(Landroid/graphics/SurfaceTexture;)V");
395
396 android_hardware_camera.startPreview =
397 gst_amc_jni_get_method_id (env, &err, klass, "startPreview", "()V");
398
399 android_hardware_camera.startSmoothZoom =
400 gst_amc_jni_get_method_id (env, &err, klass, "startSmoothZoom", "(I)V");
401
402 android_hardware_camera.stopPreview =
403 gst_amc_jni_get_method_id (env, &err, klass, "stopPreview", "()V");
404
405 android_hardware_camera.stopPreview =
406 gst_amc_jni_get_method_id (env, &err, klass, "stopPreview", "()V");
407
408 android_hardware_camera.unlock =
409 gst_amc_jni_get_method_id (env, &err, klass, "unlock", "()V");
410
411 /* android.hardware.Camera.CameraInfo */
412 klass = android_hardware_camera_camerainfo.klass =
413 gst_amc_jni_get_class (env, &err, "android/hardware/Camera$CameraInfo");
414 if (!klass)
415 goto failed;
416
417 android_hardware_camera_camerainfo.constructor =
418 gst_amc_jni_get_method_id (env, &err, klass, "<init>", "()V");
419
420 android_hardware_camera_camerainfo.facing =
421 gst_amc_jni_get_field_id (env, &err, klass, "facing", "I");
422
423 android_hardware_camera_camerainfo.orientation =
424 gst_amc_jni_get_field_id (env, &err, klass, "orientation", "I");
425
426
427 fieldID =
428 gst_amc_jni_get_static_field_id (env, &err, klass, "CAMERA_FACING_BACK",
429 "I");
430 if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
431 &android_hardware_camera_camerainfo.CAMERA_FACING_BACK))
432 goto failed;
433 CameraInfo_CAMERA_FACING_BACK =
434 android_hardware_camera_camerainfo.CAMERA_FACING_BACK;
435
436 fieldID =
437 gst_amc_jni_get_static_field_id (env, &err, klass, "CAMERA_FACING_FRONT",
438 "I");
439 if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
440 &android_hardware_camera_camerainfo.CAMERA_FACING_FRONT))
441 goto failed;
442 CameraInfo_CAMERA_FACING_FRONT =
443 android_hardware_camera_camerainfo.CAMERA_FACING_FRONT;
444
445 /* android.hardware.Camera.Size */
446 klass = android_hardware_camera_size.klass =
447 gst_amc_jni_get_class (env, &err, "android/hardware/Camera$Size");
448 if (!klass)
449 goto failed;
450
451 android_hardware_camera_size.width =
452 gst_amc_jni_get_field_id (env, &err, klass, "width", "I");
453 android_hardware_camera_size.height =
454 gst_amc_jni_get_field_id (env, &err, klass, "height", "I");
455
456 /* android.hardware.Camera.Parameters */
457 klass = android_hardware_camera_parameters.klass =
458 gst_amc_jni_get_class (env, &err, "android/hardware/Camera$Parameters");
459 if (!klass)
460 goto failed;
461
462 android_hardware_camera_parameters.flatten =
463 gst_amc_jni_get_method_id (env, &err, klass, "flatten",
464 "()Ljava/lang/String;");
465
466 android_hardware_camera_parameters.getAntibanding =
467 gst_amc_jni_get_method_id (env, &err, klass, "getAntibanding",
468 "()Ljava/lang/String;");
469
470 android_hardware_camera_parameters.getColorEffect =
471 gst_amc_jni_get_method_id (env, &err, klass, "getColorEffect",
472 "()Ljava/lang/String;");
473
474 android_hardware_camera_parameters.getExposureCompensation =
475 gst_amc_jni_get_method_id (env, &err, klass, "getExposureCompensation",
476 "()I");
477
478 android_hardware_camera_parameters.getExposureCompensationStep =
479 gst_amc_jni_get_method_id (env, &err, klass,
480 "getExposureCompensationStep", "()F");
481
482 android_hardware_camera_parameters.getFlashMode =
483 gst_amc_jni_get_method_id (env, &err, klass, "getFlashMode",
484 "()Ljava/lang/String;");
485
486 android_hardware_camera_parameters.getFocalLength =
487 gst_amc_jni_get_method_id (env, &err, klass, "getFocalLength", "()F");
488
489 android_hardware_camera_parameters.getFocusMode =
490 gst_amc_jni_get_method_id (env, &err, klass, "getFocusMode",
491 "()Ljava/lang/String;");
492
493 android_hardware_camera_parameters.getHorizontalViewAngle =
494 gst_amc_jni_get_method_id (env, &err, klass, "getHorizontalViewAngle",
495 "()F");
496
497 android_hardware_camera_parameters.getMaxExposureCompensation =
498 gst_amc_jni_get_method_id (env, &err, klass, "getMaxExposureCompensation",
499 "()I");
500
501 android_hardware_camera_parameters.getMaxZoom =
502 gst_amc_jni_get_method_id (env, &err, klass, "getMaxZoom", "()I");
503
504 android_hardware_camera_parameters.getMinExposureCompensation =
505 gst_amc_jni_get_method_id (env, &err, klass, "getMinExposureCompensation",
506 "()I");
507
508 android_hardware_camera_parameters.getPreviewFormat =
509 gst_amc_jni_get_method_id (env, &err, klass, "getPreviewFormat", "()I");
510
511 android_hardware_camera_parameters.getPreviewFpsRange =
512 gst_amc_jni_get_method_id (env, &err, klass, "getPreviewFpsRange",
513 "([I)V");
514
515 android_hardware_camera_parameters.getPreviewSize =
516 gst_amc_jni_get_method_id (env, &err, klass, "getPreviewSize",
517 "()Landroid/hardware/Camera$Size;");
518
519 android_hardware_camera_parameters.getSceneMode =
520 gst_amc_jni_get_method_id (env, &err, klass, "getSceneMode",
521 "()Ljava/lang/String;");
522
523 android_hardware_camera_parameters.getSupportedAntibanding =
524 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedAntibanding",
525 "()Ljava/util/List;");
526
527 android_hardware_camera_parameters.getSupportedColorEffects =
528 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedColorEffects",
529 "()Ljava/util/List;");
530
531 android_hardware_camera_parameters.getSupportedFlashModes =
532 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedFlashModes",
533 "()Ljava/util/List;");
534
535 android_hardware_camera_parameters.getSupportedFocusModes =
536 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedFocusModes",
537 "()Ljava/util/List;");
538
539 android_hardware_camera_parameters.getSupportedPreviewFormats =
540 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedPreviewFormats",
541 "()Ljava/util/List;");
542
543 android_hardware_camera_parameters.getSupportedPreviewFpsRange =
544 gst_amc_jni_get_method_id (env, &err, klass,
545 "getSupportedPreviewFpsRange", "()Ljava/util/List;");
546
547 android_hardware_camera_parameters.getSupportedPreviewSizes =
548 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedPreviewSizes",
549 "()Ljava/util/List;");
550
551 android_hardware_camera_parameters.getSupportedSceneModes =
552 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedSceneModes",
553 "()Ljava/util/List;");
554
555 android_hardware_camera_parameters.getSupportedWhiteBalance =
556 gst_amc_jni_get_method_id (env, &err, klass, "getSupportedWhiteBalance",
557 "()Ljava/util/List;");
558
559 android_hardware_camera_parameters.getVerticalViewAngle =
560 gst_amc_jni_get_method_id (env, &err, klass, "getVerticalViewAngle",
561 "()F");
562
563 android_hardware_camera_parameters.getVideoStabilization =
564 gst_amc_jni_get_method_id (env, &err, klass, "getVideoStabilization",
565 "()Z");
566
567 android_hardware_camera_parameters.getWhiteBalance =
568 gst_amc_jni_get_method_id (env, &err, klass, "getWhiteBalance",
569 "()Ljava/lang/String;");
570
571 android_hardware_camera_parameters.getZoom =
572 gst_amc_jni_get_method_id (env, &err, klass, "getZoom", "()I");
573
574 android_hardware_camera_parameters.getZoomRatios =
575 gst_amc_jni_get_method_id (env, &err, klass, "getZoomRatios",
576 "()Ljava/util/List;");
577
578 android_hardware_camera_parameters.isSmoothZoomSupported =
579 gst_amc_jni_get_method_id (env, &err, klass, "isSmoothZoomSupported",
580 "()Z");
581
582 android_hardware_camera_parameters.isVideoStabilizationSupported =
583 gst_amc_jni_get_method_id (env, &err, klass,
584 "isVideoStabilizationSupported", "()Z");
585
586 android_hardware_camera_parameters.isZoomSupported =
587 gst_amc_jni_get_method_id (env, &err, klass, "isZoomSupported", "()Z");
588
589 android_hardware_camera_parameters.setAntibanding =
590 gst_amc_jni_get_method_id (env, &err, klass, "setAntibanding",
591 "(Ljava/lang/String;)V");
592
593 android_hardware_camera_parameters.setColorEffect =
594 gst_amc_jni_get_method_id (env, &err, klass, "setColorEffect",
595 "(Ljava/lang/String;)V");
596
597 android_hardware_camera_parameters.setExposureCompensation =
598 gst_amc_jni_get_method_id (env, &err, klass, "setExposureCompensation",
599 "(I)V");
600
601 android_hardware_camera_parameters.setFlashMode =
602 gst_amc_jni_get_method_id (env, &err, klass, "setFlashMode",
603 "(Ljava/lang/String;)V");
604
605 android_hardware_camera_parameters.setFocusMode =
606 gst_amc_jni_get_method_id (env, &err, klass, "setFocusMode",
607 "(Ljava/lang/String;)V");
608
609 android_hardware_camera_parameters.setPreviewFormat =
610 gst_amc_jni_get_method_id (env, &err, klass, "setPreviewFormat", "(I)V");
611
612 android_hardware_camera_parameters.setPreviewFpsRange =
613 gst_amc_jni_get_method_id (env, &err, klass, "setPreviewFpsRange",
614 "(II)V");
615
616 android_hardware_camera_parameters.setPreviewSize =
617 gst_amc_jni_get_method_id (env, &err, klass, "setPreviewSize", "(II)V");
618
619 android_hardware_camera_parameters.setSceneMode =
620 gst_amc_jni_get_method_id (env, &err, klass, "setSceneMode",
621 "(Ljava/lang/String;)V");
622
623 android_hardware_camera_parameters.setWhiteBalance =
624 gst_amc_jni_get_method_id (env, &err, klass, "setWhiteBalance",
625 "(Ljava/lang/String;)V");
626
627 android_hardware_camera_parameters.setVideoStabilization =
628 gst_amc_jni_get_method_id (env, &err, klass, "setVideoStabilization",
629 "(Z)V");
630
631 android_hardware_camera_parameters.setZoom =
632 gst_amc_jni_get_method_id (env, &err, klass, "setZoom", "(I)V");
633
634 android_hardware_camera_parameters.unflatten =
635 gst_amc_jni_get_method_id (env, &err, klass, "unflatten",
636 "(Ljava/lang/String;)V");
637
638 fieldID =
639 gst_amc_jni_get_static_field_id (env, &err, klass, "WHITE_BALANCE_AUTO",
640 "Ljava/lang/String;");
641 if (!fieldID)
642 goto failed;
643 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
644 &android_hardware_camera_parameters.WHITE_BALANCE_AUTO))
645 goto failed;
646
647 Parameters_WHITE_BALANCE_AUTO =
648 (*env)->GetStringUTFChars (env,
649 android_hardware_camera_parameters.WHITE_BALANCE_AUTO, NULL);
650 {
651 jobject local = android_hardware_camera_parameters.WHITE_BALANCE_AUTO;
652
653 android_hardware_camera_parameters.WHITE_BALANCE_AUTO =
654 gst_amc_jni_object_make_global (env, local);
655 }
656
657 fieldID =
658 gst_amc_jni_get_static_field_id (env, &err, klass,
659 "WHITE_BALANCE_INCANDESCENT", "Ljava/lang/String;");
660 if (!fieldID)
661 goto failed;
662 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
663 &android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT))
664 goto failed;
665
666 Parameters_WHITE_BALANCE_INCANDESCENT =
667 (*env)->GetStringUTFChars (env,
668 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT, NULL);
669 {
670 jobject local =
671 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT;
672
673 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT =
674 gst_amc_jni_object_make_global (env, local);
675 }
676
677 fieldID =
678 gst_amc_jni_get_static_field_id (env, &err, klass,
679 "WHITE_BALANCE_FLUORESCENT", "Ljava/lang/String;");
680 if (!fieldID)
681 goto failed;
682 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
683 &android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT))
684 goto failed;
685
686 Parameters_WHITE_BALANCE_FLUORESCENT =
687 (*env)->GetStringUTFChars (env,
688 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT, NULL);
689 {
690 jobject local =
691 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT;
692
693 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT =
694 gst_amc_jni_object_make_global (env, local);
695 }
696
697 fieldID =
698 gst_amc_jni_get_static_field_id (env, &err, klass,
699 "WHITE_BALANCE_WARM_FLUORESCENT", "Ljava/lang/String;");
700 if (!fieldID)
701 goto failed;
702 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
703 &android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT))
704 goto failed;
705
706 Parameters_WHITE_BALANCE_WARM_FLUORESCENT =
707 (*env)->GetStringUTFChars (env,
708 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT, NULL);
709 {
710 jobject local =
711 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT;
712
713 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT =
714 gst_amc_jni_object_make_global (env, local);
715 }
716
717 fieldID =
718 gst_amc_jni_get_static_field_id (env, &err, klass,
719 "WHITE_BALANCE_DAYLIGHT", "Ljava/lang/String;");
720 if (!fieldID)
721 goto failed;
722 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
723 &android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT))
724 goto failed;
725
726 Parameters_WHITE_BALANCE_DAYLIGHT =
727 (*env)->GetStringUTFChars (env,
728 android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT, NULL);
729 {
730 jobject local = android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT;
731
732 android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT =
733 gst_amc_jni_object_make_global (env, local);
734 }
735
736 fieldID =
737 gst_amc_jni_get_static_field_id (env, &err, klass,
738 "WHITE_BALANCE_CLOUDY_DAYLIGHT", "Ljava/lang/String;");
739 if (!fieldID)
740 goto failed;
741 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
742 &android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT))
743 goto failed;
744 Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT =
745 (*env)->GetStringUTFChars (env,
746 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT, NULL);
747 {
748 jobject local =
749 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT;
750
751 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT =
752 gst_amc_jni_object_make_global (env, local);
753 }
754
755 fieldID =
756 gst_amc_jni_get_static_field_id (env, &err, klass,
757 "WHITE_BALANCE_TWILIGHT", "Ljava/lang/String;");
758 if (!fieldID)
759 goto failed;
760 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
761 &android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT))
762 goto failed;
763 Parameters_WHITE_BALANCE_TWILIGHT =
764 (*env)->GetStringUTFChars (env,
765 android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT, NULL);
766 {
767 jobject local = android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT;
768
769 android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT =
770 gst_amc_jni_object_make_global (env, local);
771 }
772
773 fieldID =
774 gst_amc_jni_get_static_field_id (env, &err, klass, "WHITE_BALANCE_SHADE",
775 "Ljava/lang/String;");
776 if (!fieldID)
777 goto failed;
778 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
779 &android_hardware_camera_parameters.WHITE_BALANCE_SHADE))
780 goto failed;
781
782 Parameters_WHITE_BALANCE_SHADE =
783 (*env)->GetStringUTFChars (env,
784 android_hardware_camera_parameters.WHITE_BALANCE_SHADE, NULL);
785 {
786 jobject local = android_hardware_camera_parameters.WHITE_BALANCE_SHADE;
787
788 android_hardware_camera_parameters.WHITE_BALANCE_SHADE =
789 gst_amc_jni_object_make_global (env, local);
790 }
791
792 fieldID =
793 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_NONE",
794 "Ljava/lang/String;");
795 if (!fieldID)
796 goto failed;
797 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
798 &android_hardware_camera_parameters.EFFECT_NONE))
799 goto failed;
800
801 Parameters_EFFECT_NONE =
802 (*env)->GetStringUTFChars (env,
803 android_hardware_camera_parameters.EFFECT_NONE, NULL);
804 {
805 jobject local = android_hardware_camera_parameters.EFFECT_NONE;
806
807 android_hardware_camera_parameters.EFFECT_NONE =
808 gst_amc_jni_object_make_global (env, local);
809 }
810
811 fieldID =
812 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_MONO",
813 "Ljava/lang/String;");
814 if (!fieldID)
815 goto failed;
816 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
817 &android_hardware_camera_parameters.EFFECT_MONO))
818 goto failed;
819
820 Parameters_EFFECT_MONO =
821 (*env)->GetStringUTFChars (env,
822 android_hardware_camera_parameters.EFFECT_MONO, NULL);
823 {
824 jobject local = android_hardware_camera_parameters.EFFECT_MONO;
825
826 android_hardware_camera_parameters.EFFECT_MONO =
827 gst_amc_jni_object_make_global (env, local);
828 }
829
830 fieldID =
831 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_NEGATIVE",
832 "Ljava/lang/String;");
833 if (!fieldID)
834 goto failed;
835 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
836 &android_hardware_camera_parameters.EFFECT_NEGATIVE))
837 goto failed;
838
839 Parameters_EFFECT_NEGATIVE =
840 (*env)->GetStringUTFChars (env,
841 android_hardware_camera_parameters.EFFECT_NEGATIVE, NULL);
842 {
843 jobject local = android_hardware_camera_parameters.EFFECT_NEGATIVE;
844
845 android_hardware_camera_parameters.EFFECT_NEGATIVE =
846 gst_amc_jni_object_make_global (env, local);
847 }
848
849 fieldID =
850 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_SOLARIZE",
851 "Ljava/lang/String;");
852 if (!fieldID)
853 goto failed;
854 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
855 &android_hardware_camera_parameters.EFFECT_SOLARIZE))
856 goto failed;
857
858 Parameters_EFFECT_SOLARIZE =
859 (*env)->GetStringUTFChars (env,
860 android_hardware_camera_parameters.EFFECT_SOLARIZE, NULL);
861 {
862 jobject local = android_hardware_camera_parameters.EFFECT_SOLARIZE;
863
864 android_hardware_camera_parameters.EFFECT_SOLARIZE =
865 gst_amc_jni_object_make_global (env, local);
866 }
867
868 fieldID =
869 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_SEPIA",
870 "Ljava/lang/String;");
871 if (!fieldID)
872 goto failed;
873 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
874 &android_hardware_camera_parameters.EFFECT_SEPIA))
875 goto failed;
876
877 Parameters_EFFECT_SEPIA =
878 (*env)->GetStringUTFChars (env,
879 android_hardware_camera_parameters.EFFECT_SEPIA, NULL);
880 {
881 jobject local = android_hardware_camera_parameters.EFFECT_SEPIA;
882
883 android_hardware_camera_parameters.EFFECT_SEPIA =
884 gst_amc_jni_object_make_global (env, local);
885 }
886
887 fieldID =
888 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_POSTERIZE",
889 "Ljava/lang/String;");
890 if (!fieldID)
891 goto failed;
892 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
893 &android_hardware_camera_parameters.EFFECT_POSTERIZE))
894 goto failed;
895
896 Parameters_EFFECT_POSTERIZE =
897 (*env)->GetStringUTFChars (env,
898 android_hardware_camera_parameters.EFFECT_POSTERIZE, NULL);
899 {
900 jobject local = android_hardware_camera_parameters.EFFECT_POSTERIZE;
901
902 android_hardware_camera_parameters.EFFECT_POSTERIZE =
903 gst_amc_jni_object_make_global (env, local);
904 }
905
906 fieldID =
907 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_WHITEBOARD",
908 "Ljava/lang/String;");
909 if (!fieldID)
910 goto failed;
911 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
912 &android_hardware_camera_parameters.EFFECT_WHITEBOARD))
913 goto failed;
914
915 Parameters_EFFECT_WHITEBOARD =
916 (*env)->GetStringUTFChars (env,
917 android_hardware_camera_parameters.EFFECT_WHITEBOARD, NULL);
918 {
919 jobject local = android_hardware_camera_parameters.EFFECT_WHITEBOARD;
920
921 android_hardware_camera_parameters.EFFECT_WHITEBOARD =
922 gst_amc_jni_object_make_global (env, local);
923 }
924
925 fieldID =
926 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_BLACKBOARD",
927 "Ljava/lang/String;");
928 if (!fieldID)
929 goto failed;
930 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
931 &android_hardware_camera_parameters.EFFECT_BLACKBOARD))
932 goto failed;
933
934 Parameters_EFFECT_BLACKBOARD =
935 (*env)->GetStringUTFChars (env,
936 android_hardware_camera_parameters.EFFECT_BLACKBOARD, NULL);
937 {
938 jobject local = android_hardware_camera_parameters.EFFECT_BLACKBOARD;
939
940 android_hardware_camera_parameters.EFFECT_BLACKBOARD =
941 gst_amc_jni_object_make_global (env, local);
942 }
943
944 fieldID =
945 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_AQUA",
946 "Ljava/lang/String;");
947 if (!fieldID)
948 goto failed;
949 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
950 &android_hardware_camera_parameters.EFFECT_AQUA))
951 goto failed;
952
953 Parameters_EFFECT_AQUA =
954 (*env)->GetStringUTFChars (env,
955 android_hardware_camera_parameters.EFFECT_AQUA, NULL);
956 {
957 jobject local = android_hardware_camera_parameters.EFFECT_AQUA;
958
959 android_hardware_camera_parameters.EFFECT_AQUA =
960 gst_amc_jni_object_make_global (env, local);
961 }
962
963 fieldID =
964 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_EMBOSS",
965 "Ljava/lang/String;");
966 if (fieldID) {
967 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
968 &android_hardware_camera_parameters.EFFECT_EMBOSS))
969 goto failed;
970
971 Parameters_EFFECT_EMBOSS =
972 (*env)->GetStringUTFChars (env,
973 android_hardware_camera_parameters.EFFECT_EMBOSS, NULL);
974 {
975 jobject local = android_hardware_camera_parameters.EFFECT_EMBOSS;
976
977 android_hardware_camera_parameters.EFFECT_EMBOSS =
978 gst_amc_jni_object_make_global (env, local);
979 }
980 } else {
981 android_hardware_camera_parameters.EFFECT_EMBOSS = NULL;
982 }
983
984 fieldID =
985 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_SKETCH",
986 "Ljava/lang/String;");
987 if (fieldID) {
988 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
989 &android_hardware_camera_parameters.EFFECT_SKETCH))
990 goto failed;
991
992 Parameters_EFFECT_SKETCH =
993 (*env)->GetStringUTFChars (env,
994 android_hardware_camera_parameters.EFFECT_SKETCH, NULL);
995 {
996 jobject local = android_hardware_camera_parameters.EFFECT_SKETCH;
997
998 android_hardware_camera_parameters.EFFECT_SKETCH =
999 gst_amc_jni_object_make_global (env, local);
1000 }
1001 } else {
1002 android_hardware_camera_parameters.EFFECT_SKETCH = NULL;
1003 }
1004
1005 fieldID =
1006 gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_NEON",
1007 "Ljava/lang/String;");
1008 if (fieldID) {
1009 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1010 &android_hardware_camera_parameters.EFFECT_NEON))
1011 goto failed;
1012
1013 Parameters_EFFECT_NEON =
1014 (*env)->GetStringUTFChars (env,
1015 android_hardware_camera_parameters.EFFECT_NEON, NULL);
1016 {
1017 jobject local = android_hardware_camera_parameters.EFFECT_NEON;
1018
1019 android_hardware_camera_parameters.EFFECT_NEON =
1020 gst_amc_jni_object_make_global (env, local);
1021 }
1022 } else {
1023 android_hardware_camera_parameters.EFFECT_NEON = NULL;
1024 }
1025
1026 fieldID =
1027 gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_AUTO",
1028 "Ljava/lang/String;");
1029 if (!fieldID)
1030 goto failed;
1031 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1032 &android_hardware_camera_parameters.ANTIBANDING_AUTO))
1033 goto failed;
1034
1035 Parameters_ANTIBANDING_AUTO =
1036 (*env)->GetStringUTFChars (env,
1037 android_hardware_camera_parameters.ANTIBANDING_AUTO, NULL);
1038 {
1039 jobject local = android_hardware_camera_parameters.ANTIBANDING_AUTO;
1040
1041 android_hardware_camera_parameters.ANTIBANDING_AUTO =
1042 gst_amc_jni_object_make_global (env, local);
1043 }
1044
1045 fieldID =
1046 gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_50HZ",
1047 "Ljava/lang/String;");
1048 if (!fieldID)
1049 goto failed;
1050 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1051 &android_hardware_camera_parameters.ANTIBANDING_50HZ))
1052 goto failed;
1053
1054 Parameters_ANTIBANDING_50HZ =
1055 (*env)->GetStringUTFChars (env,
1056 android_hardware_camera_parameters.ANTIBANDING_50HZ, NULL);
1057 {
1058 jobject local = android_hardware_camera_parameters.ANTIBANDING_50HZ;
1059
1060 android_hardware_camera_parameters.ANTIBANDING_50HZ =
1061 gst_amc_jni_object_make_global (env, local);
1062 }
1063
1064 fieldID =
1065 gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_60HZ",
1066 "Ljava/lang/String;");
1067 if (!fieldID)
1068 goto failed;
1069 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1070 &android_hardware_camera_parameters.ANTIBANDING_60HZ))
1071 goto failed;
1072
1073 Parameters_ANTIBANDING_60HZ =
1074 (*env)->GetStringUTFChars (env,
1075 android_hardware_camera_parameters.ANTIBANDING_60HZ, NULL);
1076 {
1077 jobject local = android_hardware_camera_parameters.ANTIBANDING_60HZ;
1078
1079 android_hardware_camera_parameters.ANTIBANDING_60HZ =
1080 gst_amc_jni_object_make_global (env, local);
1081 }
1082
1083 fieldID =
1084 gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_OFF",
1085 "Ljava/lang/String;");
1086 if (!fieldID)
1087 goto failed;
1088 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1089 &android_hardware_camera_parameters.ANTIBANDING_OFF))
1090 goto failed;
1091
1092 Parameters_ANTIBANDING_OFF =
1093 (*env)->GetStringUTFChars (env,
1094 android_hardware_camera_parameters.ANTIBANDING_OFF, NULL);
1095 {
1096 jobject local = android_hardware_camera_parameters.ANTIBANDING_OFF;
1097
1098 android_hardware_camera_parameters.ANTIBANDING_OFF =
1099 gst_amc_jni_object_make_global (env, local);
1100 }
1101
1102 fieldID =
1103 gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_OFF",
1104 "Ljava/lang/String;");
1105 if (!fieldID)
1106 goto failed;
1107 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1108 &android_hardware_camera_parameters.FLASH_MODE_OFF))
1109 goto failed;
1110
1111 Parameters_FLASH_MODE_OFF =
1112 (*env)->GetStringUTFChars (env,
1113 android_hardware_camera_parameters.FLASH_MODE_OFF, NULL);
1114 {
1115 jobject local = android_hardware_camera_parameters.FLASH_MODE_OFF;
1116
1117 android_hardware_camera_parameters.FLASH_MODE_OFF =
1118 gst_amc_jni_object_make_global (env, local);
1119 }
1120
1121 fieldID =
1122 gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_AUTO",
1123 "Ljava/lang/String;");
1124 if (!fieldID)
1125 goto failed;
1126 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1127 &android_hardware_camera_parameters.FLASH_MODE_AUTO))
1128 goto failed;
1129
1130 Parameters_FLASH_MODE_AUTO =
1131 (*env)->GetStringUTFChars (env,
1132 android_hardware_camera_parameters.FLASH_MODE_AUTO, NULL);
1133 {
1134 jobject local = android_hardware_camera_parameters.FLASH_MODE_AUTO;
1135
1136 android_hardware_camera_parameters.FLASH_MODE_AUTO =
1137 gst_amc_jni_object_make_global (env, local);
1138 }
1139
1140 fieldID =
1141 gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_ON",
1142 "Ljava/lang/String;");
1143 if (!fieldID)
1144 goto failed;
1145 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1146 &android_hardware_camera_parameters.FLASH_MODE_ON))
1147 goto failed;
1148
1149 Parameters_FLASH_MODE_ON =
1150 (*env)->GetStringUTFChars (env,
1151 android_hardware_camera_parameters.FLASH_MODE_ON, NULL);
1152 {
1153 jobject local = android_hardware_camera_parameters.FLASH_MODE_ON;
1154
1155 android_hardware_camera_parameters.FLASH_MODE_ON =
1156 gst_amc_jni_object_make_global (env, local);
1157 }
1158
1159 fieldID =
1160 gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_RED_EYE",
1161 "Ljava/lang/String;");
1162 if (!fieldID)
1163 goto failed;
1164 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1165 &android_hardware_camera_parameters.FLASH_MODE_RED_EYE))
1166 goto failed;
1167
1168 Parameters_FLASH_MODE_RED_EYE =
1169 (*env)->GetStringUTFChars (env,
1170 android_hardware_camera_parameters.FLASH_MODE_RED_EYE, NULL);
1171 {
1172 jobject local = android_hardware_camera_parameters.FLASH_MODE_RED_EYE;
1173
1174 android_hardware_camera_parameters.FLASH_MODE_RED_EYE =
1175 gst_amc_jni_object_make_global (env, local);
1176 }
1177
1178 fieldID =
1179 gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_TORCH",
1180 "Ljava/lang/String;");
1181 if (!fieldID)
1182 goto failed;
1183 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1184 &android_hardware_camera_parameters.FLASH_MODE_TORCH))
1185 goto failed;
1186
1187 Parameters_FLASH_MODE_TORCH =
1188 (*env)->GetStringUTFChars (env,
1189 android_hardware_camera_parameters.FLASH_MODE_TORCH, NULL);
1190 {
1191 jobject local = android_hardware_camera_parameters.FLASH_MODE_TORCH;
1192
1193 android_hardware_camera_parameters.FLASH_MODE_TORCH =
1194 gst_amc_jni_object_make_global (env, local);
1195 }
1196
1197 fieldID =
1198 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_AUTO",
1199 "Ljava/lang/String;");
1200 if (!fieldID)
1201 goto failed;
1202 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1203 &android_hardware_camera_parameters.SCENE_MODE_AUTO))
1204 goto failed;
1205
1206 Parameters_SCENE_MODE_AUTO =
1207 (*env)->GetStringUTFChars (env,
1208 android_hardware_camera_parameters.SCENE_MODE_AUTO, NULL);
1209 {
1210 jobject local = android_hardware_camera_parameters.SCENE_MODE_AUTO;
1211
1212 android_hardware_camera_parameters.SCENE_MODE_AUTO =
1213 gst_amc_jni_object_make_global (env, local);
1214 }
1215
1216 fieldID =
1217 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_ACTION",
1218 "Ljava/lang/String;");
1219 if (!fieldID)
1220 goto failed;
1221 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1222 &android_hardware_camera_parameters.SCENE_MODE_ACTION))
1223 goto failed;
1224
1225 Parameters_SCENE_MODE_ACTION =
1226 (*env)->GetStringUTFChars (env,
1227 android_hardware_camera_parameters.SCENE_MODE_ACTION, NULL);
1228 {
1229 jobject local = android_hardware_camera_parameters.SCENE_MODE_ACTION;
1230
1231 android_hardware_camera_parameters.SCENE_MODE_ACTION =
1232 gst_amc_jni_object_make_global (env, local);
1233 }
1234
1235 fieldID =
1236 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_PORTRAIT",
1237 "Ljava/lang/String;");
1238 if (!fieldID)
1239 goto failed;
1240 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1241 &android_hardware_camera_parameters.SCENE_MODE_PORTRAIT))
1242 goto failed;
1243
1244 Parameters_SCENE_MODE_PORTRAIT =
1245 (*env)->GetStringUTFChars (env,
1246 android_hardware_camera_parameters.SCENE_MODE_PORTRAIT, NULL);
1247 {
1248 jobject local = android_hardware_camera_parameters.SCENE_MODE_PORTRAIT;
1249
1250 android_hardware_camera_parameters.SCENE_MODE_PORTRAIT =
1251 gst_amc_jni_object_make_global (env, local);
1252 }
1253
1254 fieldID =
1255 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_LANDSCAPE",
1256 "Ljava/lang/String;");
1257 if (!fieldID)
1258 goto failed;
1259 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1260 &android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE))
1261 goto failed;
1262 Parameters_SCENE_MODE_LANDSCAPE =
1263 (*env)->GetStringUTFChars (env,
1264 android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE, NULL);
1265 {
1266 jobject local = android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE;
1267
1268 android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE =
1269 gst_amc_jni_object_make_global (env, local);
1270 }
1271
1272 fieldID =
1273 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_NIGHT",
1274 "Ljava/lang/String;");
1275 if (!fieldID)
1276 goto failed;
1277 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1278 &android_hardware_camera_parameters.SCENE_MODE_NIGHT))
1279 goto failed;
1280
1281 Parameters_SCENE_MODE_NIGHT =
1282 (*env)->GetStringUTFChars (env,
1283 android_hardware_camera_parameters.SCENE_MODE_NIGHT, NULL);
1284 {
1285 jobject local = android_hardware_camera_parameters.SCENE_MODE_NIGHT;
1286
1287 android_hardware_camera_parameters.SCENE_MODE_NIGHT =
1288 gst_amc_jni_object_make_global (env, local);
1289 }
1290
1291 fieldID =
1292 gst_amc_jni_get_static_field_id (env, &err, klass,
1293 "SCENE_MODE_NIGHT_PORTRAIT", "Ljava/lang/String;");
1294 if (!fieldID)
1295 goto failed;
1296 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1297 &android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT))
1298 goto failed;
1299 Parameters_SCENE_MODE_NIGHT_PORTRAIT =
1300 (*env)->GetStringUTFChars (env,
1301 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT, NULL);
1302 {
1303 jobject local =
1304 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT;
1305
1306 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT =
1307 gst_amc_jni_object_make_global (env, local);
1308 }
1309 fieldID =
1310 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_THEATRE",
1311 "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_THEATRE))
1316 goto failed;
1317
1318 Parameters_SCENE_MODE_THEATRE =
1319 (*env)->GetStringUTFChars (env,
1320 android_hardware_camera_parameters.SCENE_MODE_THEATRE, NULL);
1321 {
1322 jobject local = android_hardware_camera_parameters.SCENE_MODE_THEATRE;
1323
1324 android_hardware_camera_parameters.SCENE_MODE_THEATRE =
1325 gst_amc_jni_object_make_global (env, local);
1326 }
1327
1328 fieldID =
1329 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_BEACH",
1330 "Ljava/lang/String;");
1331 if (!fieldID)
1332 goto failed;
1333 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1334 &android_hardware_camera_parameters.SCENE_MODE_BEACH))
1335 goto failed;
1336
1337 Parameters_SCENE_MODE_BEACH =
1338 (*env)->GetStringUTFChars (env,
1339 android_hardware_camera_parameters.SCENE_MODE_BEACH, NULL);
1340 {
1341 jobject local = android_hardware_camera_parameters.SCENE_MODE_BEACH;
1342
1343 android_hardware_camera_parameters.SCENE_MODE_BEACH =
1344 gst_amc_jni_object_make_global (env, local);
1345 }
1346
1347 fieldID =
1348 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_SNOW",
1349 "Ljava/lang/String;");
1350 if (!fieldID)
1351 goto failed;
1352 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1353 &android_hardware_camera_parameters.SCENE_MODE_SNOW))
1354 goto failed;
1355
1356 Parameters_SCENE_MODE_SNOW =
1357 (*env)->GetStringUTFChars (env,
1358 android_hardware_camera_parameters.SCENE_MODE_SNOW, NULL);
1359 {
1360 jobject local = android_hardware_camera_parameters.SCENE_MODE_SNOW;
1361
1362 android_hardware_camera_parameters.SCENE_MODE_SNOW =
1363 gst_amc_jni_object_make_global (env, local);
1364 }
1365
1366 fieldID =
1367 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_SUNSET",
1368 "Ljava/lang/String;");
1369 if (!fieldID)
1370 goto failed;
1371 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1372 &android_hardware_camera_parameters.SCENE_MODE_SUNSET))
1373 goto failed;
1374
1375
1376 Parameters_SCENE_MODE_SUNSET =
1377 (*env)->GetStringUTFChars (env,
1378 android_hardware_camera_parameters.SCENE_MODE_SUNSET, NULL);
1379 {
1380 jobject local = android_hardware_camera_parameters.SCENE_MODE_SUNSET;
1381
1382 android_hardware_camera_parameters.SCENE_MODE_SUNSET =
1383 gst_amc_jni_object_make_global (env, local);
1384 }
1385
1386 fieldID =
1387 gst_amc_jni_get_static_field_id (env, &err, klass,
1388 "SCENE_MODE_STEADYPHOTO", "Ljava/lang/String;");
1389 if (!fieldID)
1390 goto failed;
1391 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1392 &android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO))
1393 goto failed;
1394
1395
1396 Parameters_SCENE_MODE_STEADYPHOTO =
1397 (*env)->GetStringUTFChars (env,
1398 android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO, NULL);
1399 {
1400 jobject local = android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO;
1401
1402 android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO =
1403 gst_amc_jni_object_make_global (env, local);
1404 }
1405
1406 fieldID =
1407 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_FIREWORKS",
1408 "Ljava/lang/String;");
1409 if (!fieldID)
1410 goto failed;
1411 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1412 &android_hardware_camera_parameters.SCENE_MODE_FIREWORKS))
1413 goto failed;
1414
1415 Parameters_SCENE_MODE_FIREWORKS =
1416 (*env)->GetStringUTFChars (env,
1417 android_hardware_camera_parameters.SCENE_MODE_FIREWORKS, NULL);
1418 {
1419 jobject local = android_hardware_camera_parameters.SCENE_MODE_FIREWORKS;
1420
1421 android_hardware_camera_parameters.SCENE_MODE_FIREWORKS =
1422 gst_amc_jni_object_make_global (env, local);
1423 }
1424
1425 fieldID =
1426 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_SPORTS",
1427 "Ljava/lang/String;");
1428 if (!fieldID)
1429 goto failed;
1430 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1431 &android_hardware_camera_parameters.SCENE_MODE_SPORTS))
1432 goto failed;
1433
1434
1435 Parameters_SCENE_MODE_SPORTS =
1436 (*env)->GetStringUTFChars (env,
1437 android_hardware_camera_parameters.SCENE_MODE_SPORTS, NULL);
1438 {
1439 jobject local = android_hardware_camera_parameters.SCENE_MODE_SPORTS;
1440
1441 android_hardware_camera_parameters.SCENE_MODE_SPORTS =
1442 gst_amc_jni_object_make_global (env, local);
1443 }
1444
1445 fieldID =
1446 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_PARTY",
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.SCENE_MODE_PARTY))
1452 goto failed;
1453
1454 Parameters_SCENE_MODE_PARTY =
1455 (*env)->GetStringUTFChars (env,
1456 android_hardware_camera_parameters.SCENE_MODE_PARTY, NULL);
1457 {
1458 jobject local = android_hardware_camera_parameters.SCENE_MODE_PARTY;
1459
1460 android_hardware_camera_parameters.SCENE_MODE_PARTY =
1461 gst_amc_jni_object_make_global (env, local);
1462 }
1463
1464 fieldID =
1465 gst_amc_jni_get_static_field_id (env, &err, klass,
1466 "SCENE_MODE_CANDLELIGHT", "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.SCENE_MODE_CANDLELIGHT))
1471 goto failed;
1472
1473 Parameters_SCENE_MODE_CANDLELIGHT =
1474 (*env)->GetStringUTFChars (env,
1475 android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT, NULL);
1476 {
1477 jobject local = android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT;
1478
1479 android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT =
1480 gst_amc_jni_object_make_global (env, local);
1481 }
1482
1483
1484 fieldID =
1485 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_BARCODE",
1486 "Ljava/lang/String;");
1487 if (!fieldID)
1488 goto failed;
1489 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1490 &android_hardware_camera_parameters.SCENE_MODE_BARCODE))
1491 goto failed;
1492
1493 Parameters_SCENE_MODE_BARCODE =
1494 (*env)->GetStringUTFChars (env,
1495 android_hardware_camera_parameters.SCENE_MODE_BARCODE, NULL);
1496 {
1497 jobject local = android_hardware_camera_parameters.SCENE_MODE_BARCODE;
1498
1499 android_hardware_camera_parameters.SCENE_MODE_BARCODE =
1500 gst_amc_jni_object_make_global (env, local);
1501 }
1502
1503 fieldID =
1504 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_BACKLIGHT",
1505 "Ljava/lang/String;");
1506 if (fieldID) {
1507 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1508 &android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT))
1509 goto failed;
1510
1511 Parameters_SCENE_MODE_BACKLIGHT =
1512 (*env)->GetStringUTFChars (env,
1513 android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT, NULL);
1514 {
1515 jobject local = android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT;
1516
1517 android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT =
1518 gst_amc_jni_object_make_global (env, local);
1519 }
1520 } else {
1521 android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT = NULL;
1522 }
1523
1524 fieldID =
1525 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_FLOWERS",
1526 "Ljava/lang/String;");
1527 if (fieldID) {
1528 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1529 &android_hardware_camera_parameters.SCENE_MODE_FLOWERS))
1530 goto failed;
1531
1532 Parameters_SCENE_MODE_FLOWERS =
1533 (*env)->GetStringUTFChars (env,
1534 android_hardware_camera_parameters.SCENE_MODE_FLOWERS, NULL);
1535 {
1536 jobject local = android_hardware_camera_parameters.SCENE_MODE_FLOWERS;
1537
1538 android_hardware_camera_parameters.SCENE_MODE_FLOWERS =
1539 gst_amc_jni_object_make_global (env, local);
1540 }
1541 } else {
1542 android_hardware_camera_parameters.SCENE_MODE_FLOWERS = NULL;
1543 }
1544
1545 fieldID =
1546 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_AR",
1547 "Ljava/lang/String;");
1548 if (fieldID) {
1549 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1550 &android_hardware_camera_parameters.SCENE_MODE_AR))
1551 goto failed;
1552
1553 Parameters_SCENE_MODE_AR =
1554 (*env)->GetStringUTFChars (env,
1555 android_hardware_camera_parameters.SCENE_MODE_AR, NULL);
1556 {
1557 jobject local = android_hardware_camera_parameters.SCENE_MODE_AR;
1558
1559 android_hardware_camera_parameters.SCENE_MODE_AR =
1560 gst_amc_jni_object_make_global (env, local);
1561 }
1562 } else {
1563 android_hardware_camera_parameters.SCENE_MODE_AR = NULL;
1564 }
1565
1566 fieldID =
1567 gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_HDR",
1568 "Ljava/lang/String;");
1569 if (fieldID) {
1570 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1571 &android_hardware_camera_parameters.SCENE_MODE_HDR))
1572 goto failed;
1573
1574 Parameters_SCENE_MODE_HDR =
1575 (*env)->GetStringUTFChars (env,
1576 android_hardware_camera_parameters.SCENE_MODE_HDR, NULL);
1577 {
1578 jobject local = android_hardware_camera_parameters.SCENE_MODE_HDR;
1579
1580 android_hardware_camera_parameters.SCENE_MODE_HDR =
1581 gst_amc_jni_object_make_global (env, local);
1582 }
1583 } else {
1584 android_hardware_camera_parameters.SCENE_MODE_HDR = NULL;
1585 }
1586
1587 fieldID =
1588 gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_AUTO",
1589 "Ljava/lang/String;");
1590 if (!fieldID)
1591 goto failed;
1592 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1593 &android_hardware_camera_parameters.FOCUS_MODE_AUTO))
1594 goto failed;
1595
1596 Parameters_FOCUS_MODE_AUTO =
1597 (*env)->GetStringUTFChars (env,
1598 android_hardware_camera_parameters.FOCUS_MODE_AUTO, NULL);
1599 {
1600 jobject local = android_hardware_camera_parameters.FOCUS_MODE_AUTO;
1601
1602 android_hardware_camera_parameters.FOCUS_MODE_AUTO =
1603 gst_amc_jni_object_make_global (env, local);
1604 }
1605
1606 fieldID =
1607 gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_INFINITY",
1608 "Ljava/lang/String;");
1609 if (!fieldID)
1610 goto failed;
1611 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1612 &android_hardware_camera_parameters.FOCUS_MODE_INFINITY))
1613 goto failed;
1614
1615 Parameters_FOCUS_MODE_INFINITY =
1616 (*env)->GetStringUTFChars (env,
1617 android_hardware_camera_parameters.FOCUS_MODE_INFINITY, NULL);
1618 {
1619 jobject local = android_hardware_camera_parameters.FOCUS_MODE_INFINITY;
1620
1621 android_hardware_camera_parameters.FOCUS_MODE_INFINITY =
1622 gst_amc_jni_object_make_global (env, local);
1623 }
1624
1625 fieldID =
1626 gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_MACRO",
1627 "Ljava/lang/String;");
1628 if (!fieldID)
1629 goto failed;
1630 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1631 &android_hardware_camera_parameters.FOCUS_MODE_MACRO))
1632 goto failed;
1633
1634 Parameters_FOCUS_MODE_MACRO =
1635 (*env)->GetStringUTFChars (env,
1636 android_hardware_camera_parameters.FOCUS_MODE_MACRO, NULL);
1637 {
1638 jobject local = android_hardware_camera_parameters.FOCUS_MODE_MACRO;
1639
1640 android_hardware_camera_parameters.FOCUS_MODE_MACRO =
1641 gst_amc_jni_object_make_global (env, local);
1642 }
1643
1644 fieldID =
1645 gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_FIXED",
1646 "Ljava/lang/String;");
1647 if (!fieldID)
1648 goto failed;
1649 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1650 &android_hardware_camera_parameters.FOCUS_MODE_FIXED))
1651 goto failed;
1652
1653 Parameters_FOCUS_MODE_FIXED =
1654 (*env)->GetStringUTFChars (env,
1655 android_hardware_camera_parameters.FOCUS_MODE_FIXED, NULL);
1656 {
1657 jobject local = android_hardware_camera_parameters.FOCUS_MODE_FIXED;
1658
1659 android_hardware_camera_parameters.FOCUS_MODE_FIXED =
1660 gst_amc_jni_object_make_global (env, local);
1661 }
1662
1663 fieldID =
1664 gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_EDOF",
1665 "Ljava/lang/String;");
1666 if (!fieldID)
1667 goto failed;
1668 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1669 &android_hardware_camera_parameters.FOCUS_MODE_EDOF))
1670 goto failed;
1671
1672 Parameters_FOCUS_MODE_EDOF =
1673 (*env)->GetStringUTFChars (env,
1674 android_hardware_camera_parameters.FOCUS_MODE_EDOF, NULL);
1675 {
1676 jobject local = android_hardware_camera_parameters.FOCUS_MODE_EDOF;
1677
1678 android_hardware_camera_parameters.FOCUS_MODE_EDOF =
1679 gst_amc_jni_object_make_global (env, local);
1680 }
1681
1682 fieldID =
1683 gst_amc_jni_get_static_field_id (env, &err, klass,
1684 "FOCUS_MODE_CONTINUOUS_VIDEO", "Ljava/lang/String;");
1685 if (!fieldID)
1686 goto failed;
1687 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1688 &android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO))
1689 goto failed;
1690
1691 Parameters_FOCUS_MODE_CONTINUOUS_VIDEO =
1692 (*env)->GetStringUTFChars (env,
1693 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO, NULL);
1694 {
1695 jobject local =
1696 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO;
1697
1698 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO =
1699 gst_amc_jni_object_make_global (env, local);
1700 }
1701
1702 fieldID =
1703 gst_amc_jni_get_static_field_id (env, &err, klass,
1704 "FOCUS_MODE_CONTINUOUS_PICTURE", "Ljava/lang/String;");
1705 if (!fieldID)
1706 goto failed;
1707 if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
1708 &android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE))
1709 goto failed;
1710
1711
1712 Parameters_FOCUS_MODE_CONTINUOUS_PICTURE =
1713 (*env)->GetStringUTFChars (env,
1714 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE, NULL);
1715 {
1716 jobject local =
1717 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE;
1718
1719 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE =
1720 gst_amc_jni_object_make_global (env, local);
1721 }
1722
1723 /* java.lang.String */
1724 klass = java_lang_string.klass =
1725 gst_amc_jni_get_class (env, &err, "java/lang/String");
1726 java_lang_string.equals =
1727 gst_amc_jni_get_method_id (env, &err, klass, "equals",
1728 "(Ljava/lang/Object;)Z");
1729
1730 /* java.util.List */
1731 klass = java_util_list.klass =
1732 gst_amc_jni_get_class (env, &err, "java/util/List");
1733 java_util_list.iterator =
1734 gst_amc_jni_get_method_id (env, &err, klass, "iterator",
1735 "()Ljava/util/Iterator;");
1736
1737 /* java.util.Iterator */
1738 klass = java_util_iterator.klass =
1739 gst_amc_jni_get_class (env, &err, "java/util/Iterator");
1740 java_util_iterator.hasNext =
1741 gst_amc_jni_get_method_id (env, &err, klass, "hasNext", "()Z");
1742 java_util_iterator.next =
1743 gst_amc_jni_get_method_id (env, &err, klass, "next",
1744 "()Ljava/lang/Object;");
1745
1746 /* java.lang.Integer */
1747 klass = java_lang_integer.klass =
1748 gst_amc_jni_get_class (env, &err, "java/lang/Integer");
1749 java_lang_integer.intValue =
1750 gst_amc_jni_get_method_id (env, &err, klass, "intValue", "()I");
1751
1752 if (!org_freedesktop_gstreamer_androidmedia_gstahccallback.klass) {
1753 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass =
1754 gst_amc_jni_get_application_class (env,
1755 "org/freedesktop/gstreamer/androidmedia/GstAhcCallback", &err);
1756 }
1757 if (!org_freedesktop_gstreamer_androidmedia_gstahccallback.klass)
1758 goto failed;
1759
1760 org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor =
1761 gst_amc_jni_get_method_id (env, &err,
1762 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass, "<init>",
1763 "(JJ)V");
1764
1765 if ((*env)->RegisterNatives (env,
1766 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
1767 native_methods, G_N_ELEMENTS (native_methods))) {
1768 GST_ERROR ("Failed to register native methods for GstAhcCallback");
1769 return FALSE;
1770 }
1771
1772 return TRUE;
1773
1774 failed:
1775 if (err) {
1776 GST_ERROR ("Failed to initialize android.hardware.Camera classes: %s",
1777 err->message);
1778 g_clear_error (&err);
1779 }
1780
1781 return FALSE;
1782
1783 }
1784
1785
1786 gboolean
gst_android_hardware_camera_init(void)1787 gst_android_hardware_camera_init (void)
1788 {
1789 GST_DEBUG_CATEGORY_INIT (ahc_debug, "ahc", 0,
1790 "Android Gstreamer Hardware Camera");
1791 if (!_init_classes ()) {
1792 gst_android_hardware_camera_deinit ();
1793 return FALSE;
1794 }
1795
1796 return TRUE;
1797 }
1798
1799 void
gst_android_hardware_camera_deinit(void)1800 gst_android_hardware_camera_deinit (void)
1801 {
1802 JNIEnv *env = gst_amc_jni_get_env ();
1803
1804 if (android_hardware_camera.klass)
1805 gst_amc_jni_object_unref (env, android_hardware_camera.klass);
1806 android_hardware_camera.klass = NULL;
1807
1808 if (android_hardware_camera_camerainfo.klass)
1809 gst_amc_jni_object_unref (env, android_hardware_camera_camerainfo.klass);
1810 android_hardware_camera_camerainfo.klass = NULL;
1811
1812 if (android_hardware_camera_size.klass)
1813 gst_amc_jni_object_unref (env, android_hardware_camera_size.klass);
1814 android_hardware_camera_size.klass = NULL;
1815
1816 if (android_hardware_camera_parameters.klass)
1817 gst_amc_jni_object_unref (env, android_hardware_camera_parameters.klass);
1818 android_hardware_camera_parameters.klass = NULL;
1819 if (Parameters_WHITE_BALANCE_AUTO)
1820 (*env)->ReleaseStringUTFChars (env,
1821 android_hardware_camera_parameters.WHITE_BALANCE_AUTO,
1822 Parameters_WHITE_BALANCE_AUTO);
1823 Parameters_WHITE_BALANCE_AUTO = NULL;
1824 if (android_hardware_camera_parameters.WHITE_BALANCE_AUTO)
1825 gst_amc_jni_object_unref (env,
1826 android_hardware_camera_parameters.WHITE_BALANCE_AUTO);
1827 android_hardware_camera_parameters.WHITE_BALANCE_AUTO = NULL;
1828 if (Parameters_WHITE_BALANCE_INCANDESCENT)
1829 (*env)->ReleaseStringUTFChars (env,
1830 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT,
1831 Parameters_WHITE_BALANCE_INCANDESCENT);
1832 Parameters_WHITE_BALANCE_INCANDESCENT = NULL;
1833 if (android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT)
1834 gst_amc_jni_object_unref (env,
1835 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT);
1836 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT = NULL;
1837 if (Parameters_WHITE_BALANCE_FLUORESCENT)
1838 (*env)->ReleaseStringUTFChars (env,
1839 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT,
1840 Parameters_WHITE_BALANCE_FLUORESCENT);
1841 Parameters_WHITE_BALANCE_FLUORESCENT = NULL;
1842 if (android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT)
1843 gst_amc_jni_object_unref (env,
1844 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT);
1845 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT = NULL;
1846 if (Parameters_WHITE_BALANCE_WARM_FLUORESCENT)
1847 (*env)->ReleaseStringUTFChars (env,
1848 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT,
1849 Parameters_WHITE_BALANCE_WARM_FLUORESCENT);
1850 Parameters_WHITE_BALANCE_WARM_FLUORESCENT = NULL;
1851 if (android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT)
1852 gst_amc_jni_object_unref (env,
1853 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT);
1854 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT = NULL;
1855 if (Parameters_WHITE_BALANCE_DAYLIGHT)
1856 (*env)->ReleaseStringUTFChars (env,
1857 android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT,
1858 Parameters_WHITE_BALANCE_DAYLIGHT);
1859 Parameters_WHITE_BALANCE_DAYLIGHT = NULL;
1860 if (android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT)
1861 gst_amc_jni_object_unref (env,
1862 android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT);
1863 android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT = NULL;
1864 if (Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT)
1865 (*env)->ReleaseStringUTFChars (env,
1866 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT,
1867 Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT);
1868 Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT = NULL;
1869 if (android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT)
1870 gst_amc_jni_object_unref (env,
1871 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT);
1872 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT = NULL;
1873 if (Parameters_WHITE_BALANCE_TWILIGHT)
1874 (*env)->ReleaseStringUTFChars (env,
1875 android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT,
1876 Parameters_WHITE_BALANCE_TWILIGHT);
1877 Parameters_WHITE_BALANCE_TWILIGHT = NULL;
1878 if (android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT)
1879 gst_amc_jni_object_unref (env,
1880 android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT);
1881 android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT = NULL;
1882 if (Parameters_WHITE_BALANCE_SHADE)
1883 (*env)->ReleaseStringUTFChars (env,
1884 android_hardware_camera_parameters.WHITE_BALANCE_SHADE,
1885 Parameters_WHITE_BALANCE_SHADE);
1886 Parameters_WHITE_BALANCE_SHADE = NULL;
1887 if (android_hardware_camera_parameters.WHITE_BALANCE_SHADE)
1888 gst_amc_jni_object_unref (env,
1889 android_hardware_camera_parameters.WHITE_BALANCE_SHADE);
1890 android_hardware_camera_parameters.WHITE_BALANCE_SHADE = NULL;
1891 if (Parameters_EFFECT_NONE)
1892 (*env)->ReleaseStringUTFChars (env,
1893 android_hardware_camera_parameters.EFFECT_NONE, Parameters_EFFECT_NONE);
1894 Parameters_EFFECT_NONE = NULL;
1895 if (android_hardware_camera_parameters.EFFECT_NONE)
1896 gst_amc_jni_object_unref (env,
1897 android_hardware_camera_parameters.EFFECT_NONE);
1898 android_hardware_camera_parameters.EFFECT_NONE = NULL;
1899 if (Parameters_EFFECT_MONO)
1900 (*env)->ReleaseStringUTFChars (env,
1901 android_hardware_camera_parameters.EFFECT_MONO, Parameters_EFFECT_MONO);
1902 Parameters_EFFECT_MONO = NULL;
1903 if (android_hardware_camera_parameters.EFFECT_MONO)
1904 gst_amc_jni_object_unref (env,
1905 android_hardware_camera_parameters.EFFECT_MONO);
1906 android_hardware_camera_parameters.EFFECT_MONO = NULL;
1907 if (Parameters_EFFECT_NEGATIVE)
1908 (*env)->ReleaseStringUTFChars (env,
1909 android_hardware_camera_parameters.EFFECT_NEGATIVE,
1910 Parameters_EFFECT_NEGATIVE);
1911 Parameters_EFFECT_NEGATIVE = NULL;
1912 if (android_hardware_camera_parameters.EFFECT_NEGATIVE)
1913 gst_amc_jni_object_unref (env,
1914 android_hardware_camera_parameters.EFFECT_NEGATIVE);
1915 android_hardware_camera_parameters.EFFECT_NEGATIVE = NULL;
1916 if (Parameters_EFFECT_SOLARIZE)
1917 (*env)->ReleaseStringUTFChars (env,
1918 android_hardware_camera_parameters.EFFECT_SOLARIZE,
1919 Parameters_EFFECT_SOLARIZE);
1920 Parameters_EFFECT_SOLARIZE = NULL;
1921 if (android_hardware_camera_parameters.EFFECT_SOLARIZE)
1922 gst_amc_jni_object_unref (env,
1923 android_hardware_camera_parameters.EFFECT_SOLARIZE);
1924 android_hardware_camera_parameters.EFFECT_SOLARIZE = NULL;
1925 if (Parameters_EFFECT_SEPIA)
1926 (*env)->ReleaseStringUTFChars (env,
1927 android_hardware_camera_parameters.EFFECT_SEPIA,
1928 Parameters_EFFECT_SEPIA);
1929 Parameters_EFFECT_SEPIA = NULL;
1930 if (android_hardware_camera_parameters.EFFECT_SEPIA)
1931 gst_amc_jni_object_unref (env,
1932 android_hardware_camera_parameters.EFFECT_SEPIA);
1933 android_hardware_camera_parameters.EFFECT_SEPIA = NULL;
1934 if (Parameters_EFFECT_POSTERIZE)
1935 (*env)->ReleaseStringUTFChars (env,
1936 android_hardware_camera_parameters.EFFECT_POSTERIZE,
1937 Parameters_EFFECT_POSTERIZE);
1938 Parameters_EFFECT_POSTERIZE = NULL;
1939 if (android_hardware_camera_parameters.EFFECT_POSTERIZE)
1940 gst_amc_jni_object_unref (env,
1941 android_hardware_camera_parameters.EFFECT_POSTERIZE);
1942 android_hardware_camera_parameters.EFFECT_POSTERIZE = NULL;
1943 if (Parameters_EFFECT_WHITEBOARD)
1944 (*env)->ReleaseStringUTFChars (env,
1945 android_hardware_camera_parameters.EFFECT_WHITEBOARD,
1946 Parameters_EFFECT_WHITEBOARD);
1947 Parameters_EFFECT_WHITEBOARD = NULL;
1948 if (android_hardware_camera_parameters.EFFECT_WHITEBOARD)
1949 gst_amc_jni_object_unref (env,
1950 android_hardware_camera_parameters.EFFECT_WHITEBOARD);
1951 android_hardware_camera_parameters.EFFECT_WHITEBOARD = NULL;
1952 if (Parameters_EFFECT_BLACKBOARD)
1953 (*env)->ReleaseStringUTFChars (env,
1954 android_hardware_camera_parameters.EFFECT_BLACKBOARD,
1955 Parameters_EFFECT_BLACKBOARD);
1956 Parameters_EFFECT_BLACKBOARD = NULL;
1957 if (android_hardware_camera_parameters.EFFECT_BLACKBOARD)
1958 gst_amc_jni_object_unref (env,
1959 android_hardware_camera_parameters.EFFECT_BLACKBOARD);
1960 android_hardware_camera_parameters.EFFECT_BLACKBOARD = NULL;
1961 if (Parameters_EFFECT_AQUA)
1962 (*env)->ReleaseStringUTFChars (env,
1963 android_hardware_camera_parameters.EFFECT_AQUA, Parameters_EFFECT_AQUA);
1964 Parameters_EFFECT_AQUA = NULL;
1965 if (android_hardware_camera_parameters.EFFECT_AQUA)
1966 gst_amc_jni_object_unref (env,
1967 android_hardware_camera_parameters.EFFECT_AQUA);
1968 android_hardware_camera_parameters.EFFECT_AQUA = NULL;
1969 if (Parameters_EFFECT_EMBOSS)
1970 (*env)->ReleaseStringUTFChars (env,
1971 android_hardware_camera_parameters.EFFECT_EMBOSS,
1972 Parameters_EFFECT_EMBOSS);
1973 Parameters_EFFECT_EMBOSS = NULL;
1974 if (android_hardware_camera_parameters.EFFECT_EMBOSS)
1975 gst_amc_jni_object_unref (env,
1976 android_hardware_camera_parameters.EFFECT_EMBOSS);
1977 android_hardware_camera_parameters.EFFECT_EMBOSS = NULL;
1978 if (Parameters_EFFECT_SKETCH)
1979 (*env)->ReleaseStringUTFChars (env,
1980 android_hardware_camera_parameters.EFFECT_SKETCH,
1981 Parameters_EFFECT_SKETCH);
1982 Parameters_EFFECT_SKETCH = NULL;
1983 if (android_hardware_camera_parameters.EFFECT_SKETCH)
1984 gst_amc_jni_object_unref (env,
1985 android_hardware_camera_parameters.EFFECT_SKETCH);
1986 android_hardware_camera_parameters.EFFECT_SKETCH = NULL;
1987 if (Parameters_EFFECT_NEON)
1988 (*env)->ReleaseStringUTFChars (env,
1989 android_hardware_camera_parameters.EFFECT_NEON, Parameters_EFFECT_NEON);
1990 Parameters_EFFECT_NEON = NULL;
1991 if (android_hardware_camera_parameters.EFFECT_NEON)
1992 gst_amc_jni_object_unref (env,
1993 android_hardware_camera_parameters.EFFECT_NEON);
1994 android_hardware_camera_parameters.EFFECT_NEON = NULL;
1995 if (Parameters_ANTIBANDING_AUTO)
1996 (*env)->ReleaseStringUTFChars (env,
1997 android_hardware_camera_parameters.ANTIBANDING_AUTO,
1998 Parameters_ANTIBANDING_AUTO);
1999 Parameters_ANTIBANDING_AUTO = NULL;
2000 if (android_hardware_camera_parameters.ANTIBANDING_AUTO)
2001 gst_amc_jni_object_unref (env,
2002 android_hardware_camera_parameters.ANTIBANDING_AUTO);
2003 android_hardware_camera_parameters.ANTIBANDING_AUTO = NULL;
2004 if (Parameters_ANTIBANDING_50HZ)
2005 (*env)->ReleaseStringUTFChars (env,
2006 android_hardware_camera_parameters.ANTIBANDING_50HZ,
2007 Parameters_ANTIBANDING_50HZ);
2008 Parameters_ANTIBANDING_50HZ = NULL;
2009 if (android_hardware_camera_parameters.ANTIBANDING_50HZ)
2010 gst_amc_jni_object_unref (env,
2011 android_hardware_camera_parameters.ANTIBANDING_50HZ);
2012 android_hardware_camera_parameters.ANTIBANDING_50HZ = NULL;
2013 if (Parameters_ANTIBANDING_60HZ)
2014 (*env)->ReleaseStringUTFChars (env,
2015 android_hardware_camera_parameters.ANTIBANDING_60HZ,
2016 Parameters_ANTIBANDING_60HZ);
2017 Parameters_ANTIBANDING_60HZ = NULL;
2018 if (android_hardware_camera_parameters.ANTIBANDING_60HZ)
2019 gst_amc_jni_object_unref (env,
2020 android_hardware_camera_parameters.ANTIBANDING_60HZ);
2021 android_hardware_camera_parameters.ANTIBANDING_60HZ = NULL;
2022 if (Parameters_ANTIBANDING_OFF)
2023 (*env)->ReleaseStringUTFChars (env,
2024 android_hardware_camera_parameters.ANTIBANDING_OFF,
2025 Parameters_ANTIBANDING_OFF);
2026 Parameters_ANTIBANDING_OFF = NULL;
2027 if (android_hardware_camera_parameters.ANTIBANDING_OFF)
2028 gst_amc_jni_object_unref (env,
2029 android_hardware_camera_parameters.ANTIBANDING_OFF);
2030 android_hardware_camera_parameters.ANTIBANDING_OFF = NULL;
2031 if (Parameters_FLASH_MODE_OFF)
2032 (*env)->ReleaseStringUTFChars (env,
2033 android_hardware_camera_parameters.FLASH_MODE_OFF,
2034 Parameters_FLASH_MODE_OFF);
2035 Parameters_FLASH_MODE_OFF = NULL;
2036 if (android_hardware_camera_parameters.FLASH_MODE_OFF)
2037 gst_amc_jni_object_unref (env,
2038 android_hardware_camera_parameters.FLASH_MODE_OFF);
2039 android_hardware_camera_parameters.FLASH_MODE_OFF = NULL;
2040 if (Parameters_FLASH_MODE_AUTO)
2041 (*env)->ReleaseStringUTFChars (env,
2042 android_hardware_camera_parameters.FLASH_MODE_AUTO,
2043 Parameters_FLASH_MODE_AUTO);
2044 Parameters_FLASH_MODE_AUTO = NULL;
2045 if (android_hardware_camera_parameters.FLASH_MODE_AUTO)
2046 gst_amc_jni_object_unref (env,
2047 android_hardware_camera_parameters.FLASH_MODE_AUTO);
2048 android_hardware_camera_parameters.FLASH_MODE_AUTO = NULL;
2049 if (Parameters_FLASH_MODE_ON)
2050 (*env)->ReleaseStringUTFChars (env,
2051 android_hardware_camera_parameters.FLASH_MODE_ON,
2052 Parameters_FLASH_MODE_ON);
2053 Parameters_FLASH_MODE_ON = NULL;
2054 if (android_hardware_camera_parameters.FLASH_MODE_ON)
2055 gst_amc_jni_object_unref (env,
2056 android_hardware_camera_parameters.FLASH_MODE_ON);
2057 android_hardware_camera_parameters.FLASH_MODE_ON = NULL;
2058 if (Parameters_FLASH_MODE_RED_EYE)
2059 (*env)->ReleaseStringUTFChars (env,
2060 android_hardware_camera_parameters.FLASH_MODE_RED_EYE,
2061 Parameters_FLASH_MODE_RED_EYE);
2062 Parameters_FLASH_MODE_RED_EYE = NULL;
2063 if (android_hardware_camera_parameters.FLASH_MODE_RED_EYE)
2064 gst_amc_jni_object_unref (env,
2065 android_hardware_camera_parameters.FLASH_MODE_RED_EYE);
2066 android_hardware_camera_parameters.FLASH_MODE_RED_EYE = NULL;
2067 if (Parameters_FLASH_MODE_TORCH)
2068 (*env)->ReleaseStringUTFChars (env,
2069 android_hardware_camera_parameters.FLASH_MODE_TORCH,
2070 Parameters_FLASH_MODE_TORCH);
2071 Parameters_FLASH_MODE_TORCH = NULL;
2072 if (android_hardware_camera_parameters.FLASH_MODE_TORCH)
2073 gst_amc_jni_object_unref (env,
2074 android_hardware_camera_parameters.FLASH_MODE_TORCH);
2075 android_hardware_camera_parameters.FLASH_MODE_TORCH = NULL;
2076 if (Parameters_SCENE_MODE_AUTO)
2077 (*env)->ReleaseStringUTFChars (env,
2078 android_hardware_camera_parameters.SCENE_MODE_AUTO,
2079 Parameters_SCENE_MODE_AUTO);
2080 Parameters_SCENE_MODE_AUTO = NULL;
2081 if (android_hardware_camera_parameters.SCENE_MODE_AUTO)
2082 gst_amc_jni_object_unref (env,
2083 android_hardware_camera_parameters.SCENE_MODE_AUTO);
2084 android_hardware_camera_parameters.SCENE_MODE_AUTO = NULL;
2085 if (Parameters_SCENE_MODE_ACTION)
2086 (*env)->ReleaseStringUTFChars (env,
2087 android_hardware_camera_parameters.SCENE_MODE_ACTION,
2088 Parameters_SCENE_MODE_ACTION);
2089 Parameters_SCENE_MODE_ACTION = NULL;
2090 if (android_hardware_camera_parameters.SCENE_MODE_ACTION)
2091 gst_amc_jni_object_unref (env,
2092 android_hardware_camera_parameters.SCENE_MODE_ACTION);
2093 android_hardware_camera_parameters.SCENE_MODE_ACTION = NULL;
2094 if (Parameters_SCENE_MODE_PORTRAIT)
2095 (*env)->ReleaseStringUTFChars (env,
2096 android_hardware_camera_parameters.SCENE_MODE_PORTRAIT,
2097 Parameters_SCENE_MODE_PORTRAIT);
2098 Parameters_SCENE_MODE_PORTRAIT = NULL;
2099 if (android_hardware_camera_parameters.SCENE_MODE_PORTRAIT)
2100 gst_amc_jni_object_unref (env,
2101 android_hardware_camera_parameters.SCENE_MODE_PORTRAIT);
2102 android_hardware_camera_parameters.SCENE_MODE_PORTRAIT = NULL;
2103 if (Parameters_SCENE_MODE_LANDSCAPE)
2104 (*env)->ReleaseStringUTFChars (env,
2105 android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE,
2106 Parameters_SCENE_MODE_LANDSCAPE);
2107 Parameters_SCENE_MODE_LANDSCAPE = NULL;
2108 if (android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE)
2109 gst_amc_jni_object_unref (env,
2110 android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE);
2111 android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE = NULL;
2112 if (Parameters_SCENE_MODE_NIGHT)
2113 (*env)->ReleaseStringUTFChars (env,
2114 android_hardware_camera_parameters.SCENE_MODE_NIGHT,
2115 Parameters_SCENE_MODE_NIGHT);
2116 Parameters_SCENE_MODE_NIGHT = NULL;
2117 if (android_hardware_camera_parameters.SCENE_MODE_NIGHT)
2118 gst_amc_jni_object_unref (env,
2119 android_hardware_camera_parameters.SCENE_MODE_NIGHT);
2120 android_hardware_camera_parameters.SCENE_MODE_NIGHT = NULL;
2121 if (Parameters_SCENE_MODE_NIGHT_PORTRAIT)
2122 (*env)->ReleaseStringUTFChars (env,
2123 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT,
2124 Parameters_SCENE_MODE_NIGHT_PORTRAIT);
2125 Parameters_SCENE_MODE_NIGHT_PORTRAIT = NULL;
2126 if (android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT)
2127 gst_amc_jni_object_unref (env,
2128 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT);
2129 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT = NULL;
2130 if (Parameters_SCENE_MODE_THEATRE)
2131 (*env)->ReleaseStringUTFChars (env,
2132 android_hardware_camera_parameters.SCENE_MODE_THEATRE,
2133 Parameters_SCENE_MODE_THEATRE);
2134 Parameters_SCENE_MODE_THEATRE = NULL;
2135 if (android_hardware_camera_parameters.SCENE_MODE_THEATRE)
2136 gst_amc_jni_object_unref (env,
2137 android_hardware_camera_parameters.SCENE_MODE_THEATRE);
2138 android_hardware_camera_parameters.SCENE_MODE_THEATRE = NULL;
2139 if (Parameters_SCENE_MODE_BEACH)
2140 (*env)->ReleaseStringUTFChars (env,
2141 android_hardware_camera_parameters.SCENE_MODE_BEACH,
2142 Parameters_SCENE_MODE_BEACH);
2143 Parameters_SCENE_MODE_BEACH = NULL;
2144 if (android_hardware_camera_parameters.SCENE_MODE_BEACH)
2145 gst_amc_jni_object_unref (env,
2146 android_hardware_camera_parameters.SCENE_MODE_BEACH);
2147 android_hardware_camera_parameters.SCENE_MODE_BEACH = NULL;
2148 if (Parameters_SCENE_MODE_SNOW)
2149 (*env)->ReleaseStringUTFChars (env,
2150 android_hardware_camera_parameters.SCENE_MODE_SNOW,
2151 Parameters_SCENE_MODE_SNOW);
2152 Parameters_SCENE_MODE_SNOW = NULL;
2153 if (android_hardware_camera_parameters.SCENE_MODE_SNOW)
2154 gst_amc_jni_object_unref (env,
2155 android_hardware_camera_parameters.SCENE_MODE_SNOW);
2156 android_hardware_camera_parameters.SCENE_MODE_SNOW = NULL;
2157 if (Parameters_SCENE_MODE_SUNSET)
2158 (*env)->ReleaseStringUTFChars (env,
2159 android_hardware_camera_parameters.SCENE_MODE_SUNSET,
2160 Parameters_SCENE_MODE_SUNSET);
2161 Parameters_SCENE_MODE_SUNSET = NULL;
2162 if (android_hardware_camera_parameters.SCENE_MODE_SUNSET)
2163 gst_amc_jni_object_unref (env,
2164 android_hardware_camera_parameters.SCENE_MODE_SUNSET);
2165 android_hardware_camera_parameters.SCENE_MODE_SUNSET = NULL;
2166 if (Parameters_SCENE_MODE_STEADYPHOTO)
2167 (*env)->ReleaseStringUTFChars (env,
2168 android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO,
2169 Parameters_SCENE_MODE_STEADYPHOTO);
2170 Parameters_SCENE_MODE_STEADYPHOTO = NULL;
2171 if (android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO)
2172 gst_amc_jni_object_unref (env,
2173 android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO);
2174 android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO = NULL;
2175 if (Parameters_SCENE_MODE_FIREWORKS)
2176 (*env)->ReleaseStringUTFChars (env,
2177 android_hardware_camera_parameters.SCENE_MODE_FIREWORKS,
2178 Parameters_SCENE_MODE_FIREWORKS);
2179 Parameters_SCENE_MODE_FIREWORKS = NULL;
2180 if (android_hardware_camera_parameters.SCENE_MODE_FIREWORKS)
2181 gst_amc_jni_object_unref (env,
2182 android_hardware_camera_parameters.SCENE_MODE_FIREWORKS);
2183 android_hardware_camera_parameters.SCENE_MODE_FIREWORKS = NULL;
2184 if (Parameters_SCENE_MODE_SPORTS)
2185 (*env)->ReleaseStringUTFChars (env,
2186 android_hardware_camera_parameters.SCENE_MODE_SPORTS,
2187 Parameters_SCENE_MODE_SPORTS);
2188 Parameters_SCENE_MODE_SPORTS = NULL;
2189 if (android_hardware_camera_parameters.SCENE_MODE_SPORTS)
2190 gst_amc_jni_object_unref (env,
2191 android_hardware_camera_parameters.SCENE_MODE_SPORTS);
2192 android_hardware_camera_parameters.SCENE_MODE_SPORTS = NULL;
2193 if (Parameters_SCENE_MODE_PARTY)
2194 (*env)->ReleaseStringUTFChars (env,
2195 android_hardware_camera_parameters.SCENE_MODE_PARTY,
2196 Parameters_SCENE_MODE_PARTY);
2197 Parameters_SCENE_MODE_PARTY = NULL;
2198 if (android_hardware_camera_parameters.SCENE_MODE_PARTY)
2199 gst_amc_jni_object_unref (env,
2200 android_hardware_camera_parameters.SCENE_MODE_PARTY);
2201 android_hardware_camera_parameters.SCENE_MODE_PARTY = NULL;
2202 if (Parameters_SCENE_MODE_CANDLELIGHT)
2203 (*env)->ReleaseStringUTFChars (env,
2204 android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT,
2205 Parameters_SCENE_MODE_CANDLELIGHT);
2206 Parameters_SCENE_MODE_CANDLELIGHT = NULL;
2207 if (android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT)
2208 gst_amc_jni_object_unref (env,
2209 android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT);
2210 android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT = NULL;
2211 if (Parameters_SCENE_MODE_BARCODE)
2212 (*env)->ReleaseStringUTFChars (env,
2213 android_hardware_camera_parameters.SCENE_MODE_BARCODE,
2214 Parameters_SCENE_MODE_BARCODE);
2215 Parameters_SCENE_MODE_BARCODE = NULL;
2216 if (android_hardware_camera_parameters.SCENE_MODE_BARCODE)
2217 gst_amc_jni_object_unref (env,
2218 android_hardware_camera_parameters.SCENE_MODE_BARCODE);
2219 android_hardware_camera_parameters.SCENE_MODE_BARCODE = NULL;
2220 if (Parameters_SCENE_MODE_BACKLIGHT)
2221 (*env)->ReleaseStringUTFChars (env,
2222 android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT,
2223 Parameters_SCENE_MODE_BACKLIGHT);
2224 Parameters_SCENE_MODE_BACKLIGHT = NULL;
2225 if (android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT)
2226 gst_amc_jni_object_unref (env,
2227 android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT);
2228 android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT = NULL;
2229 if (Parameters_SCENE_MODE_FLOWERS)
2230 (*env)->ReleaseStringUTFChars (env,
2231 android_hardware_camera_parameters.SCENE_MODE_FLOWERS,
2232 Parameters_SCENE_MODE_FLOWERS);
2233 Parameters_SCENE_MODE_FLOWERS = NULL;
2234 if (android_hardware_camera_parameters.SCENE_MODE_FLOWERS)
2235 gst_amc_jni_object_unref (env,
2236 android_hardware_camera_parameters.SCENE_MODE_FLOWERS);
2237 android_hardware_camera_parameters.SCENE_MODE_FLOWERS = NULL;
2238 if (Parameters_SCENE_MODE_AR)
2239 (*env)->ReleaseStringUTFChars (env,
2240 android_hardware_camera_parameters.SCENE_MODE_AR,
2241 Parameters_SCENE_MODE_AR);
2242 Parameters_SCENE_MODE_AR = NULL;
2243 if (android_hardware_camera_parameters.SCENE_MODE_AR)
2244 gst_amc_jni_object_unref (env,
2245 android_hardware_camera_parameters.SCENE_MODE_AR);
2246 android_hardware_camera_parameters.SCENE_MODE_AR = NULL;
2247 if (Parameters_SCENE_MODE_HDR)
2248 (*env)->ReleaseStringUTFChars (env,
2249 android_hardware_camera_parameters.SCENE_MODE_HDR,
2250 Parameters_SCENE_MODE_HDR);
2251 Parameters_SCENE_MODE_HDR = NULL;
2252 if (android_hardware_camera_parameters.SCENE_MODE_HDR)
2253 gst_amc_jni_object_unref (env,
2254 android_hardware_camera_parameters.SCENE_MODE_HDR);
2255 android_hardware_camera_parameters.SCENE_MODE_HDR = NULL;
2256 if (Parameters_FOCUS_MODE_AUTO)
2257 (*env)->ReleaseStringUTFChars (env,
2258 android_hardware_camera_parameters.FOCUS_MODE_AUTO,
2259 Parameters_FOCUS_MODE_AUTO);
2260 Parameters_FOCUS_MODE_AUTO = NULL;
2261 if (android_hardware_camera_parameters.FOCUS_MODE_AUTO)
2262 gst_amc_jni_object_unref (env,
2263 android_hardware_camera_parameters.FOCUS_MODE_AUTO);
2264 android_hardware_camera_parameters.FOCUS_MODE_AUTO = NULL;
2265 if (Parameters_FOCUS_MODE_INFINITY)
2266 (*env)->ReleaseStringUTFChars (env,
2267 android_hardware_camera_parameters.FOCUS_MODE_INFINITY,
2268 Parameters_FOCUS_MODE_INFINITY);
2269 Parameters_FOCUS_MODE_INFINITY = NULL;
2270 if (android_hardware_camera_parameters.FOCUS_MODE_INFINITY)
2271 gst_amc_jni_object_unref (env,
2272 android_hardware_camera_parameters.FOCUS_MODE_INFINITY);
2273 android_hardware_camera_parameters.FOCUS_MODE_INFINITY = NULL;
2274 if (Parameters_FOCUS_MODE_MACRO)
2275 (*env)->ReleaseStringUTFChars (env,
2276 android_hardware_camera_parameters.FOCUS_MODE_MACRO,
2277 Parameters_FOCUS_MODE_MACRO);
2278 Parameters_FOCUS_MODE_MACRO = NULL;
2279 if (android_hardware_camera_parameters.FOCUS_MODE_MACRO)
2280 gst_amc_jni_object_unref (env,
2281 android_hardware_camera_parameters.FOCUS_MODE_MACRO);
2282 android_hardware_camera_parameters.FOCUS_MODE_MACRO = NULL;
2283 if (Parameters_FOCUS_MODE_FIXED)
2284 (*env)->ReleaseStringUTFChars (env,
2285 android_hardware_camera_parameters.FOCUS_MODE_FIXED,
2286 Parameters_FOCUS_MODE_FIXED);
2287 Parameters_FOCUS_MODE_FIXED = NULL;
2288 if (android_hardware_camera_parameters.FOCUS_MODE_FIXED)
2289 gst_amc_jni_object_unref (env,
2290 android_hardware_camera_parameters.FOCUS_MODE_FIXED);
2291 android_hardware_camera_parameters.FOCUS_MODE_FIXED = NULL;
2292 if (Parameters_FOCUS_MODE_EDOF)
2293 (*env)->ReleaseStringUTFChars (env,
2294 android_hardware_camera_parameters.FOCUS_MODE_EDOF,
2295 Parameters_FOCUS_MODE_EDOF);
2296 Parameters_FOCUS_MODE_EDOF = NULL;
2297 if (android_hardware_camera_parameters.FOCUS_MODE_EDOF)
2298 gst_amc_jni_object_unref (env,
2299 android_hardware_camera_parameters.FOCUS_MODE_EDOF);
2300 android_hardware_camera_parameters.FOCUS_MODE_EDOF = NULL;
2301 if (Parameters_FOCUS_MODE_CONTINUOUS_VIDEO)
2302 (*env)->ReleaseStringUTFChars (env,
2303 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO,
2304 Parameters_FOCUS_MODE_CONTINUOUS_VIDEO);
2305 Parameters_FOCUS_MODE_CONTINUOUS_VIDEO = NULL;
2306 if (android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO)
2307 gst_amc_jni_object_unref (env,
2308 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
2309 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO = NULL;
2310 if (Parameters_FOCUS_MODE_CONTINUOUS_PICTURE)
2311 (*env)->ReleaseStringUTFChars (env,
2312 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE,
2313 Parameters_FOCUS_MODE_CONTINUOUS_PICTURE);
2314 Parameters_FOCUS_MODE_CONTINUOUS_PICTURE = NULL;
2315 if (android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE)
2316 gst_amc_jni_object_unref (env,
2317 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
2318 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE = NULL;
2319
2320 if (java_lang_string.klass)
2321 gst_amc_jni_object_unref (env, java_lang_string.klass);
2322 java_lang_string.klass = NULL;
2323
2324 if (java_util_list.klass)
2325 gst_amc_jni_object_unref (env, java_util_list.klass);
2326 java_util_list.klass = NULL;
2327
2328 if (java_util_iterator.klass)
2329 gst_amc_jni_object_unref (env, java_util_iterator.klass);
2330 java_util_iterator.klass = NULL;
2331
2332 if (java_lang_integer.klass)
2333 gst_amc_jni_object_unref (env, java_lang_integer.klass);
2334 java_lang_integer.klass = NULL;
2335
2336 if (org_freedesktop_gstreamer_androidmedia_gstahccallback.klass) {
2337 (*env)->UnregisterNatives (env,
2338 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass);
2339 gst_amc_jni_object_unref (env,
2340 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass);
2341 }
2342 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass = NULL;
2343 }
2344
2345 /* android.hardware.Camera */
2346 void
gst_ah_camera_add_callback_buffer(GstAHCamera * self,jbyteArray buffer)2347 gst_ah_camera_add_callback_buffer (GstAHCamera * self, jbyteArray buffer)
2348 {
2349 JNIEnv *env = gst_amc_jni_get_env ();
2350 GError *err = NULL;
2351
2352 GST_DEBUG ("add callback_buffer %p", buffer);
2353
2354 gst_amc_jni_call_void_method (env, &err, self->object,
2355 android_hardware_camera.addCallbackBuffer, buffer);
2356 if (err) {
2357 GST_ERROR ("Failed to call android.hardware.Camera.addCallbackBuffer: %s",
2358 err->message);
2359 g_clear_error (&err);
2360 }
2361 }
2362
2363 gboolean
gst_ah_camera_auto_focus(GstAHCamera * self,GstAHCAutoFocusCallback cb,gpointer user_data)2364 gst_ah_camera_auto_focus (GstAHCamera * self,
2365 GstAHCAutoFocusCallback cb, gpointer user_data)
2366 {
2367 JNIEnv *env = gst_amc_jni_get_env ();
2368 GError *err = NULL;
2369 jobject object = NULL;
2370 gboolean ret = FALSE;
2371
2372 if (cb) {
2373 object = gst_amc_jni_new_object (env,
2374 &err,
2375 FALSE,
2376 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
2377 org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
2378 *((jlong *) & cb), *((jlong *) & user_data));
2379 if (err) {
2380 GST_ERROR
2381 ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object");
2382 g_clear_error (&err);
2383 goto done;
2384 }
2385 }
2386
2387 gst_amc_jni_call_void_method (env, &err, self->object,
2388 android_hardware_camera.autoFocus, object);
2389 if (err) {
2390 GST_ERROR ("Failed to call android.hardware.Camera.autoFocus: %s",
2391 err->message);
2392 goto done;
2393 }
2394
2395 ret = TRUE;
2396 done:
2397 if (err)
2398 g_clear_error (&err);
2399 if (object)
2400 gst_amc_jni_object_local_unref (env, object);
2401
2402 return ret;
2403 }
2404
2405 gboolean
gst_ah_camera_cancel_auto_focus(GstAHCamera * self)2406 gst_ah_camera_cancel_auto_focus (GstAHCamera * self)
2407 {
2408 JNIEnv *env = gst_amc_jni_get_env ();
2409 GError *err = NULL;
2410
2411 gst_amc_jni_call_void_method (env, &err, self->object,
2412 android_hardware_camera.cancelAutoFocus);
2413 if (err) {
2414 GST_ERROR ("Failed to call android.hardware.Camera.cancelAutoFocus: %s",
2415 err->message);
2416 g_clear_error (&err);
2417 return FALSE;
2418 }
2419
2420 return TRUE;
2421 }
2422
2423 gboolean
gst_ah_camera_get_camera_info(gint camera_id,GstAHCCameraInfo * camera_info)2424 gst_ah_camera_get_camera_info (gint camera_id, GstAHCCameraInfo * camera_info)
2425 {
2426 JNIEnv *env = gst_amc_jni_get_env ();
2427 GError *err = NULL;
2428 jobject jcamera_info = NULL;
2429 gboolean ret = FALSE;
2430
2431 jcamera_info = gst_amc_jni_new_object (env,
2432 &err,
2433 FALSE,
2434 android_hardware_camera_camerainfo.klass,
2435 android_hardware_camera_camerainfo.constructor);
2436 if (err) {
2437 GST_ERROR ("Failed to create android.hardware.camera.CameraInfo object");
2438 g_clear_error (&err);
2439 goto done;
2440 }
2441
2442 gst_amc_jni_call_static_void_method (env, &err, android_hardware_camera.klass,
2443 android_hardware_camera.getCameraInfo, camera_id, jcamera_info);
2444 if (err) {
2445 GST_ERROR ("Failed to call android.hardware.Camera.getCameraInfo: %s",
2446 err->message);
2447 goto done;
2448 }
2449
2450 camera_info->facing = (*env)->GetIntField (env, jcamera_info,
2451 android_hardware_camera_camerainfo.facing);
2452 if ((*env)->ExceptionCheck (env)) {
2453 GST_ERROR ("Failed to get CameraInfo.facing field");
2454 (*env)->ExceptionClear (env);
2455 goto done;
2456 }
2457
2458 camera_info->orientation = (*env)->GetIntField (env, jcamera_info,
2459 android_hardware_camera_camerainfo.orientation);
2460 if ((*env)->ExceptionCheck (env)) {
2461 GST_ERROR ("Failed to get CameraInfo.orientation field");
2462 (*env)->ExceptionClear (env);
2463 goto done;
2464 }
2465
2466 ret = TRUE;
2467 done:
2468 if (err)
2469 g_clear_error (&err);
2470 if (jcamera_info)
2471 gst_amc_jni_object_local_unref (env, jcamera_info);
2472
2473 return ret;
2474 }
2475
2476 gint
gst_ah_camera_get_number_of_cameras(void)2477 gst_ah_camera_get_number_of_cameras (void)
2478 {
2479 JNIEnv *env = gst_amc_jni_get_env ();
2480 GError *err = NULL;
2481 gint num_cameras;
2482
2483 gst_amc_jni_call_static_int_method (env, &err, android_hardware_camera.klass,
2484 android_hardware_camera.getNumberOfCameras, &num_cameras);
2485 if (err) {
2486 GST_ERROR ("Failed to call android.hardware.Camera.getNumberOfCameras: %s",
2487 err->message);
2488 g_clear_error (&err);
2489 return -1;
2490 }
2491
2492 return num_cameras;
2493 }
2494
2495 GstAHCParameters *
gst_ah_camera_get_parameters(GstAHCamera * self)2496 gst_ah_camera_get_parameters (GstAHCamera * self)
2497 {
2498 JNIEnv *env = gst_amc_jni_get_env ();
2499 GError *err = NULL;
2500 jobject object = NULL;
2501 GstAHCParameters *params = NULL;
2502
2503 gst_amc_jni_call_object_method (env, &err, self->object,
2504 android_hardware_camera.getParameters, &object);
2505 if (err) {
2506 GST_ERROR ("Failed to call android.hardware.Camera.getParameters: %s",
2507 err->message);
2508 g_clear_error (&err);
2509 return NULL;
2510 }
2511 if (!object) {
2512 GST_WARNING ("android.hardware.Camera.getParameter is NULL");
2513 return NULL;
2514 }
2515
2516 params = g_slice_new0 (GstAHCParameters);
2517 params->object = gst_amc_jni_object_ref (env, object);
2518 gst_amc_jni_object_local_unref (env, object);
2519 if (!params->object) {
2520 GST_ERROR ("Failed to create global reference");
2521 (*env)->ExceptionClear (env);
2522 g_slice_free (GstAHCParameters, params);
2523 return NULL;
2524 }
2525
2526 GST_DEBUG ("return parameters %p", params->object);
2527
2528 return params;
2529 }
2530
2531 gboolean
gst_ah_camera_lock(GstAHCamera * self)2532 gst_ah_camera_lock (GstAHCamera * self)
2533 {
2534 JNIEnv *env = gst_amc_jni_get_env ();
2535 GError *err = NULL;
2536
2537 gst_amc_jni_call_void_method (env, &err, self->object,
2538 android_hardware_camera.lock);
2539 if (err) {
2540 GST_ERROR ("Failed to call android.hardware.Camera.lock: %s", err->message);
2541 g_clear_error (&err);
2542 return FALSE;
2543 }
2544
2545 return TRUE;
2546 }
2547
2548 GstAHCamera *
gst_ah_camera_open(gint camera_id)2549 gst_ah_camera_open (gint camera_id)
2550 {
2551 JNIEnv *env = gst_amc_jni_get_env ();
2552 GError *err = NULL;
2553 jobject object = NULL;
2554 GstAHCamera *camera = NULL;
2555
2556 gst_amc_jni_call_static_object_method (env, &err,
2557 android_hardware_camera.klass, android_hardware_camera.open, &object,
2558 camera_id);
2559 if (err) {
2560 GST_ERROR ("Failed to call android.hardware.Camera.open: %s", err->message);
2561 g_clear_error (&err);
2562 goto done;
2563 }
2564
2565 if (object) {
2566 camera = g_slice_new0 (GstAHCamera);
2567 camera->object = gst_amc_jni_object_ref (env, object);
2568 gst_amc_jni_object_local_unref (env, object);
2569 if (!camera->object) {
2570 GST_ERROR ("Failed to create global reference");
2571 (*env)->ExceptionClear (env);
2572 g_slice_free (GstAHCamera, camera);
2573 camera = NULL;
2574 }
2575 }
2576
2577 done:
2578 return camera;
2579 }
2580
2581 gboolean
gst_ah_camera_reconnect(GstAHCamera * self)2582 gst_ah_camera_reconnect (GstAHCamera * self)
2583 {
2584 JNIEnv *env = gst_amc_jni_get_env ();
2585 GError *err = NULL;
2586
2587 gst_amc_jni_call_void_method (env, &err, self->object,
2588 android_hardware_camera.reconnect);
2589 if (err) {
2590 GST_ERROR ("Failed to call android.hardware.Camera.reconnect: %s",
2591 err->message);
2592 g_clear_error (&err);
2593 return FALSE;
2594 }
2595
2596 return TRUE;
2597 }
2598
2599 void
gst_ah_camera_release(GstAHCamera * self)2600 gst_ah_camera_release (GstAHCamera * self)
2601 {
2602 JNIEnv *env = gst_amc_jni_get_env ();
2603 GError *err = NULL;
2604
2605 gst_amc_jni_call_void_method (env, &err, self->object,
2606 android_hardware_camera.release);
2607 if (err) {
2608 GST_ERROR ("Failed to call android.hardware.Camera.release: %s",
2609 err->message);
2610 g_clear_error (&err);
2611 }
2612 }
2613
2614 void
gst_ah_camera_free(GstAHCamera * self)2615 gst_ah_camera_free (GstAHCamera * self)
2616 {
2617 JNIEnv *env = gst_amc_jni_get_env ();
2618
2619 gst_amc_jni_object_unref (env, self->object);
2620 g_slice_free (GstAHCamera, self);
2621 }
2622
2623
2624 gboolean
gst_ah_camera_set_parameters(GstAHCamera * self,GstAHCParameters * params)2625 gst_ah_camera_set_parameters (GstAHCamera * self, GstAHCParameters * params)
2626 {
2627 JNIEnv *env = gst_amc_jni_get_env ();
2628 GError *err = NULL;
2629
2630 gst_amc_jni_call_void_method (env, &err, self->object,
2631 android_hardware_camera.setParameters, params->object);
2632 if (err) {
2633 GST_ERROR ("Failed to call android.hardware.Camera.setParameters: %s",
2634 err->message);
2635 g_clear_error (&err);
2636 return FALSE;
2637 }
2638
2639 return TRUE;
2640 }
2641
2642 gboolean
gst_ah_camera_set_error_callback(GstAHCamera * self,GstAHCErrorCallback cb,gpointer user_data)2643 gst_ah_camera_set_error_callback (GstAHCamera * self, GstAHCErrorCallback cb,
2644 gpointer user_data)
2645 {
2646 JNIEnv *env = gst_amc_jni_get_env ();
2647 GError *err = NULL;
2648 jobject object = NULL;
2649 gboolean ret = FALSE;
2650
2651 if (cb) {
2652 object = gst_amc_jni_new_object (env,
2653 &err,
2654 FALSE,
2655 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
2656 org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
2657 *((jlong *) & cb), *((jlong *) & user_data));
2658 if (err) {
2659 GST_ERROR
2660 ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object");
2661 g_clear_error (&err);
2662 goto done;
2663 }
2664 }
2665
2666 gst_amc_jni_call_void_method (env, &err, self->object,
2667 android_hardware_camera.setErrorCallback, object);
2668 if (err) {
2669 GST_ERROR ("Failed to call android.hardware.Camera.setErrorCallback: %s",
2670 err->message);
2671 goto done;
2672 }
2673
2674 ret = TRUE;
2675 done:
2676 if (err)
2677 g_clear_error (&err);
2678 if (object)
2679 gst_amc_jni_object_local_unref (env, object);
2680
2681 return ret;
2682 }
2683
2684 gboolean
gst_ah_camera_set_preview_callback_with_buffer(GstAHCamera * self,GstAHCPreviewCallback cb,gpointer user_data)2685 gst_ah_camera_set_preview_callback_with_buffer (GstAHCamera * self,
2686 GstAHCPreviewCallback cb, gpointer user_data)
2687 {
2688 JNIEnv *env = gst_amc_jni_get_env ();
2689 GError *err = NULL;
2690 jobject object = NULL;
2691 gboolean ret = FALSE;
2692
2693 if (cb) {
2694 object = gst_amc_jni_new_object (env,
2695 &err,
2696 FALSE,
2697 org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
2698 org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
2699 *((jlong *) & cb), *((jlong *) & user_data));
2700 if (err) {
2701 GST_ERROR
2702 ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object");
2703 g_clear_error (&err);
2704 goto done;
2705 }
2706 }
2707
2708 gst_amc_jni_call_void_method (env, &err, self->object,
2709 android_hardware_camera.setPreviewCallbackWithBuffer, object);
2710 if (err) {
2711 GST_ERROR
2712 ("Failed to call android.hardware.Camera.setPreviewCallbackWithBuffer: %s",
2713 err->message);
2714 goto done;
2715 }
2716
2717 ret = TRUE;
2718 done:
2719 if (err)
2720 g_clear_error (&err);
2721 if (object)
2722 gst_amc_jni_object_local_unref (env, object);
2723
2724 return ret;
2725 }
2726
2727 void
gst_ah_camera_set_preview_texture(GstAHCamera * self,GstAmcSurfaceTextureJNI * surfaceTexture)2728 gst_ah_camera_set_preview_texture (GstAHCamera * self,
2729 GstAmcSurfaceTextureJNI * surfaceTexture)
2730 {
2731 JNIEnv *env = gst_amc_jni_get_env ();
2732 GError *err = NULL;
2733
2734 gst_amc_jni_call_void_method (env, &err, self->object,
2735 android_hardware_camera.setPreviewTexture,
2736 gst_amc_surface_texture_jni_get_jobject (surfaceTexture));
2737 if (err) {
2738 GST_ERROR ("Failed to call android.hardware.Camera.setPreviewTexture: %s",
2739 err->message);
2740 g_clear_error (&err);
2741 }
2742 }
2743
2744 gboolean
gst_ah_camera_start_preview(GstAHCamera * self)2745 gst_ah_camera_start_preview (GstAHCamera * self)
2746 {
2747 JNIEnv *env = gst_amc_jni_get_env ();
2748 GError *err = NULL;
2749
2750 gst_amc_jni_call_void_method (env, &err, self->object,
2751 android_hardware_camera.startPreview);
2752 if (err) {
2753 GST_ERROR ("Failed to call android.hardware.Camera.startPreview: %s",
2754 err->message);
2755 g_clear_error (&err);
2756 return FALSE;
2757 }
2758
2759 return TRUE;
2760 }
2761
2762 gboolean
gst_ah_camera_start_smooth_zoom(GstAHCamera * self,gint value)2763 gst_ah_camera_start_smooth_zoom (GstAHCamera * self, gint value)
2764 {
2765 JNIEnv *env = gst_amc_jni_get_env ();
2766 GError *err = NULL;
2767
2768 gst_amc_jni_call_void_method (env, &err, self->object,
2769 android_hardware_camera.startSmoothZoom, value);
2770 if (err) {
2771 GST_ERROR ("Failed to call android.hardware.Camera.startSmoothZoom: %s",
2772 err->message);
2773 g_clear_error (&err);
2774 return FALSE;
2775 }
2776
2777 return TRUE;
2778 }
2779
2780 gboolean
gst_ah_camera_stop_preview(GstAHCamera * self)2781 gst_ah_camera_stop_preview (GstAHCamera * self)
2782 {
2783 JNIEnv *env = gst_amc_jni_get_env ();
2784 GError *err = NULL;
2785
2786 gst_amc_jni_call_void_method (env, &err, self->object,
2787 android_hardware_camera.stopPreview);
2788 if (err) {
2789 GST_ERROR ("Failed to call android.hardware.Camera.stopPreview: %s",
2790 err->message);
2791 g_clear_error (&err);
2792 return FALSE;
2793 }
2794
2795 return TRUE;
2796 }
2797
2798 gboolean
gst_ah_camera_stop_smooth_zoom(GstAHCamera * self)2799 gst_ah_camera_stop_smooth_zoom (GstAHCamera * self)
2800 {
2801 JNIEnv *env = gst_amc_jni_get_env ();
2802 GError *err = NULL;
2803
2804 gst_amc_jni_call_void_method (env, &err, self->object,
2805 android_hardware_camera.stopSmoothZoom);
2806 if (err) {
2807 GST_ERROR ("Failed to call android.hardware.Camera.stopSmoothZoom: %s",
2808 err->message);
2809 g_clear_error (&err);
2810 return FALSE;
2811 }
2812
2813 return TRUE;
2814 }
2815
2816 gboolean
gst_ah_camera_unlock(GstAHCamera * self)2817 gst_ah_camera_unlock (GstAHCamera * self)
2818 {
2819 JNIEnv *env = gst_amc_jni_get_env ();
2820 GError *err = NULL;
2821
2822 gst_amc_jni_call_void_method (env, &err, self->object,
2823 android_hardware_camera.unlock);
2824 if (err) {
2825 GST_ERROR ("Failed to call android.hardware.Camera.unlock: %s",
2826 err->message);
2827 g_clear_error (&err);
2828 return FALSE;
2829 }
2830
2831 return TRUE;
2832 }
2833
2834 /* android.hardware.Camera.Size */
2835 GstAHCSize *
gst_ahc_size_new(gint width,gint height)2836 gst_ahc_size_new (gint width, gint height)
2837 {
2838 GstAHCSize *self = g_slice_new (GstAHCSize);
2839
2840 self->width = width;
2841 self->height = height;
2842
2843 return self;
2844 }
2845
2846 void
gst_ahc_size_free(GstAHCSize * self)2847 gst_ahc_size_free (GstAHCSize * self)
2848 {
2849 g_slice_free (GstAHCSize, self);
2850 }
2851
2852 /* java.lang.String */
2853 static jboolean
java_lang_string_equals(JNIEnv * env,jstring str,jstring obj)2854 java_lang_string_equals (JNIEnv * env, jstring str, jstring obj)
2855 {
2856 return (*env)->CallBooleanMethod (env, str, java_lang_string.equals, obj);
2857 }
2858
2859 /* java.util.List */
2860 static jobject
java_util_list_iterator(JNIEnv * env,jobject obj)2861 java_util_list_iterator (JNIEnv * env, jobject obj)
2862 {
2863 return (*env)->CallObjectMethod (env, obj, java_util_list.iterator);
2864 }
2865
2866 /* java.util.Iterator */
2867 static jobject
java_util_iterator_next(JNIEnv * env,jobject obj)2868 java_util_iterator_next (JNIEnv * env, jobject obj)
2869 {
2870 return (*env)->CallObjectMethod (env, obj, java_util_iterator.next);
2871 }
2872
2873 static jboolean
java_util_iterator_has_next(JNIEnv * env,jobject obj)2874 java_util_iterator_has_next (JNIEnv * env, jobject obj)
2875 {
2876 return (*env)->CallBooleanMethod (env, obj, java_util_iterator.hasNext);
2877 }
2878
2879 /* java.lang.Integer */
2880 static jint
java_lang_integer_int_value(JNIEnv * env,jobject obj)2881 java_lang_integer_int_value (JNIEnv * env, jobject obj)
2882 {
2883 return (*env)->CallIntMethod (env, obj, java_lang_integer.intValue);
2884 }
2885
2886
2887 /* android.hardware.Camera.Parameters */
2888 static const gchar *
_white_balance_to_gchar(JNIEnv * env,jstring white_balance)2889 _white_balance_to_gchar (JNIEnv * env, jstring white_balance)
2890 {
2891 if (!white_balance)
2892 return NULL;
2893
2894 if (java_lang_string_equals (env, white_balance,
2895 android_hardware_camera_parameters.WHITE_BALANCE_AUTO))
2896 return Parameters_WHITE_BALANCE_AUTO;
2897 else if (java_lang_string_equals (env, white_balance,
2898 android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT))
2899 return Parameters_WHITE_BALANCE_INCANDESCENT;
2900 else if (java_lang_string_equals (env, white_balance,
2901 android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT))
2902 return Parameters_WHITE_BALANCE_FLUORESCENT;
2903 else if (java_lang_string_equals (env, white_balance,
2904 android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT))
2905 return Parameters_WHITE_BALANCE_WARM_FLUORESCENT;
2906 else if (java_lang_string_equals (env, white_balance,
2907 android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT))
2908 return Parameters_WHITE_BALANCE_DAYLIGHT;
2909 else if (java_lang_string_equals (env, white_balance,
2910 android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT))
2911 return Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT;
2912 else if (java_lang_string_equals (env, white_balance,
2913 android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT))
2914 return Parameters_WHITE_BALANCE_TWILIGHT;
2915 else if (java_lang_string_equals (env, white_balance,
2916 android_hardware_camera_parameters.WHITE_BALANCE_SHADE))
2917 return Parameters_WHITE_BALANCE_SHADE;
2918
2919 return NULL;
2920 }
2921
2922 static jstring
_white_balance_to_jstring(const gchar * white_balance)2923 _white_balance_to_jstring (const gchar * white_balance)
2924 {
2925 if (!white_balance)
2926 return NULL;
2927
2928 if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_AUTO))
2929 return android_hardware_camera_parameters.WHITE_BALANCE_AUTO;
2930 else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_INCANDESCENT))
2931 return android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT;
2932 else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_FLUORESCENT))
2933 return android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT;
2934 else if (!g_strcmp0 (white_balance,
2935 Parameters_WHITE_BALANCE_WARM_FLUORESCENT))
2936 return android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT;
2937 else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_DAYLIGHT))
2938 return android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT;
2939 else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT))
2940 return android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT;
2941 else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_TWILIGHT))
2942 return android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT;
2943 else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_SHADE))
2944 return android_hardware_camera_parameters.WHITE_BALANCE_SHADE;
2945
2946 return NULL;
2947 }
2948
2949 static const gchar *
_color_effect_to_gchar(JNIEnv * env,jstring color_effect)2950 _color_effect_to_gchar (JNIEnv * env, jstring color_effect)
2951 {
2952 if (!color_effect)
2953 return NULL;
2954
2955 if (java_lang_string_equals (env, color_effect,
2956 android_hardware_camera_parameters.EFFECT_NONE))
2957 return Parameters_EFFECT_NONE;
2958 else if (java_lang_string_equals (env, color_effect,
2959 android_hardware_camera_parameters.EFFECT_MONO))
2960 return Parameters_EFFECT_MONO;
2961 else if (java_lang_string_equals (env, color_effect,
2962 android_hardware_camera_parameters.EFFECT_NEGATIVE))
2963 return Parameters_EFFECT_NEGATIVE;
2964 else if (java_lang_string_equals (env, color_effect,
2965 android_hardware_camera_parameters.EFFECT_SOLARIZE))
2966 return Parameters_EFFECT_SOLARIZE;
2967 else if (java_lang_string_equals (env, color_effect,
2968 android_hardware_camera_parameters.EFFECT_SEPIA))
2969 return Parameters_EFFECT_SEPIA;
2970 else if (java_lang_string_equals (env, color_effect,
2971 android_hardware_camera_parameters.EFFECT_POSTERIZE))
2972 return Parameters_EFFECT_POSTERIZE;
2973 else if (java_lang_string_equals (env, color_effect,
2974 android_hardware_camera_parameters.EFFECT_WHITEBOARD))
2975 return Parameters_EFFECT_WHITEBOARD;
2976 else if (java_lang_string_equals (env, color_effect,
2977 android_hardware_camera_parameters.EFFECT_BLACKBOARD))
2978 return Parameters_EFFECT_BLACKBOARD;
2979 else if (java_lang_string_equals (env, color_effect,
2980 android_hardware_camera_parameters.EFFECT_AQUA))
2981 return Parameters_EFFECT_AQUA;
2982 else if (android_hardware_camera_parameters.EFFECT_EMBOSS != NULL &&
2983 java_lang_string_equals (env, color_effect,
2984 android_hardware_camera_parameters.EFFECT_EMBOSS))
2985 return Parameters_EFFECT_EMBOSS;
2986 else if (android_hardware_camera_parameters.EFFECT_SKETCH != NULL &&
2987 java_lang_string_equals (env, color_effect,
2988 android_hardware_camera_parameters.EFFECT_SKETCH))
2989 return Parameters_EFFECT_SKETCH;
2990 else if (android_hardware_camera_parameters.EFFECT_NEON != NULL &&
2991 java_lang_string_equals (env, color_effect,
2992 android_hardware_camera_parameters.EFFECT_NEON))
2993 return Parameters_EFFECT_NEON;
2994
2995 return NULL;
2996 }
2997
2998 static jstring
_color_effect_to_jstring(const gchar * color_effect)2999 _color_effect_to_jstring (const gchar * color_effect)
3000 {
3001 if (!color_effect)
3002 return NULL;
3003
3004 if (!g_strcmp0 (color_effect, Parameters_EFFECT_NONE))
3005 return android_hardware_camera_parameters.EFFECT_NONE;
3006 else if (!g_strcmp0 (color_effect, Parameters_EFFECT_MONO))
3007 return android_hardware_camera_parameters.EFFECT_MONO;
3008 else if (!g_strcmp0 (color_effect, Parameters_EFFECT_NEGATIVE))
3009 return android_hardware_camera_parameters.EFFECT_NEGATIVE;
3010 else if (!g_strcmp0 (color_effect, Parameters_EFFECT_SOLARIZE))
3011 return android_hardware_camera_parameters.EFFECT_SOLARIZE;
3012 else if (!g_strcmp0 (color_effect, Parameters_EFFECT_SEPIA))
3013 return android_hardware_camera_parameters.EFFECT_SEPIA;
3014 else if (!g_strcmp0 (color_effect, Parameters_EFFECT_POSTERIZE))
3015 return android_hardware_camera_parameters.EFFECT_POSTERIZE;
3016 else if (!g_strcmp0 (color_effect, Parameters_EFFECT_WHITEBOARD))
3017 return android_hardware_camera_parameters.EFFECT_WHITEBOARD;
3018 else if (!g_strcmp0 (color_effect, Parameters_EFFECT_BLACKBOARD))
3019 return android_hardware_camera_parameters.EFFECT_BLACKBOARD;
3020 else if (!g_strcmp0 (color_effect, Parameters_EFFECT_AQUA))
3021 return android_hardware_camera_parameters.EFFECT_AQUA;
3022 else if (android_hardware_camera_parameters.EFFECT_EMBOSS != NULL
3023 && !g_strcmp0 (color_effect, Parameters_EFFECT_EMBOSS))
3024 return android_hardware_camera_parameters.EFFECT_EMBOSS;
3025 else if (android_hardware_camera_parameters.EFFECT_SKETCH != NULL
3026 && !g_strcmp0 (color_effect, Parameters_EFFECT_SKETCH))
3027 return android_hardware_camera_parameters.EFFECT_SKETCH;
3028 else if (android_hardware_camera_parameters.EFFECT_NEON != NULL
3029 && !g_strcmp0 (color_effect, Parameters_EFFECT_NEON))
3030 return android_hardware_camera_parameters.EFFECT_NEON;
3031
3032 return NULL;
3033 }
3034
3035 static const gchar *
_antibanding_to_gchar(JNIEnv * env,jstring antibanding)3036 _antibanding_to_gchar (JNIEnv * env, jstring antibanding)
3037 {
3038 if (!antibanding)
3039 return NULL;
3040
3041 if (java_lang_string_equals (env, antibanding,
3042 android_hardware_camera_parameters.ANTIBANDING_AUTO))
3043 return Parameters_ANTIBANDING_AUTO;
3044 else if (java_lang_string_equals (env, antibanding,
3045 android_hardware_camera_parameters.ANTIBANDING_50HZ))
3046 return Parameters_ANTIBANDING_50HZ;
3047 else if (java_lang_string_equals (env, antibanding,
3048 android_hardware_camera_parameters.ANTIBANDING_60HZ))
3049 return Parameters_ANTIBANDING_60HZ;
3050 else if (java_lang_string_equals (env, antibanding,
3051 android_hardware_camera_parameters.ANTIBANDING_OFF))
3052 return Parameters_ANTIBANDING_OFF;
3053
3054 return NULL;
3055 }
3056
3057 static jstring
_antibanding_to_jstring(const gchar * antibanding)3058 _antibanding_to_jstring (const gchar * antibanding)
3059 {
3060 if (!antibanding)
3061 return NULL;
3062
3063 if (!g_strcmp0 (antibanding, Parameters_ANTIBANDING_AUTO))
3064 return android_hardware_camera_parameters.ANTIBANDING_AUTO;
3065 else if (!g_strcmp0 (antibanding, Parameters_ANTIBANDING_50HZ))
3066 return android_hardware_camera_parameters.ANTIBANDING_50HZ;
3067 else if (!g_strcmp0 (antibanding, Parameters_ANTIBANDING_60HZ))
3068 return android_hardware_camera_parameters.ANTIBANDING_60HZ;
3069 else if (!g_strcmp0 (antibanding, Parameters_ANTIBANDING_OFF))
3070 return android_hardware_camera_parameters.ANTIBANDING_OFF;
3071
3072 return NULL;
3073 }
3074
3075 static const gchar *
_flash_mode_to_gchar(JNIEnv * env,jstring flash_mode)3076 _flash_mode_to_gchar (JNIEnv * env, jstring flash_mode)
3077 {
3078 if (!flash_mode)
3079 return NULL;
3080
3081 if (java_lang_string_equals (env, flash_mode,
3082 android_hardware_camera_parameters.FLASH_MODE_OFF))
3083 return Parameters_FLASH_MODE_OFF;
3084 else if (java_lang_string_equals (env, flash_mode,
3085 android_hardware_camera_parameters.FLASH_MODE_AUTO))
3086 return Parameters_FLASH_MODE_AUTO;
3087 else if (java_lang_string_equals (env, flash_mode,
3088 android_hardware_camera_parameters.FLASH_MODE_ON))
3089 return Parameters_FLASH_MODE_ON;
3090 else if (java_lang_string_equals (env, flash_mode,
3091 android_hardware_camera_parameters.FLASH_MODE_RED_EYE))
3092 return Parameters_FLASH_MODE_RED_EYE;
3093 else if (java_lang_string_equals (env, flash_mode,
3094 android_hardware_camera_parameters.FLASH_MODE_TORCH))
3095 return Parameters_FLASH_MODE_TORCH;
3096
3097 return NULL;
3098 }
3099
3100 static jstring
_flash_mode_to_jstring(const gchar * flash_mode)3101 _flash_mode_to_jstring (const gchar * flash_mode)
3102 {
3103 if (!flash_mode)
3104 return NULL;
3105
3106 if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_OFF))
3107 return android_hardware_camera_parameters.FLASH_MODE_OFF;
3108 else if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_AUTO))
3109 return android_hardware_camera_parameters.FLASH_MODE_AUTO;
3110 else if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_ON))
3111 return android_hardware_camera_parameters.FLASH_MODE_ON;
3112 else if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_RED_EYE))
3113 return android_hardware_camera_parameters.FLASH_MODE_RED_EYE;
3114 else if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_TORCH))
3115 return android_hardware_camera_parameters.FLASH_MODE_TORCH;
3116
3117 return NULL;
3118 }
3119
3120 static const gchar *
_scene_mode_to_gchar(JNIEnv * env,jstring scene_mode)3121 _scene_mode_to_gchar (JNIEnv * env, jstring scene_mode)
3122 {
3123 if (!scene_mode)
3124 return NULL;
3125
3126 if (java_lang_string_equals (env, scene_mode,
3127 android_hardware_camera_parameters.SCENE_MODE_AUTO))
3128 return Parameters_SCENE_MODE_AUTO;
3129 else if (java_lang_string_equals (env, scene_mode,
3130 android_hardware_camera_parameters.SCENE_MODE_ACTION))
3131 return Parameters_SCENE_MODE_ACTION;
3132 else if (java_lang_string_equals (env, scene_mode,
3133 android_hardware_camera_parameters.SCENE_MODE_PORTRAIT))
3134 return Parameters_SCENE_MODE_PORTRAIT;
3135 else if (java_lang_string_equals (env, scene_mode,
3136 android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE))
3137 return Parameters_SCENE_MODE_LANDSCAPE;
3138 else if (java_lang_string_equals (env, scene_mode,
3139 android_hardware_camera_parameters.SCENE_MODE_NIGHT))
3140 return Parameters_SCENE_MODE_NIGHT;
3141 else if (java_lang_string_equals (env, scene_mode,
3142 android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT))
3143 return Parameters_SCENE_MODE_NIGHT_PORTRAIT;
3144 else if (java_lang_string_equals (env, scene_mode,
3145 android_hardware_camera_parameters.SCENE_MODE_THEATRE))
3146 return Parameters_SCENE_MODE_THEATRE;
3147 else if (java_lang_string_equals (env, scene_mode,
3148 android_hardware_camera_parameters.SCENE_MODE_BEACH))
3149 return Parameters_SCENE_MODE_BEACH;
3150 else if (java_lang_string_equals (env, scene_mode,
3151 android_hardware_camera_parameters.SCENE_MODE_SNOW))
3152 return Parameters_SCENE_MODE_SNOW;
3153 else if (java_lang_string_equals (env, scene_mode,
3154 android_hardware_camera_parameters.SCENE_MODE_SUNSET))
3155 return Parameters_SCENE_MODE_SUNSET;
3156 else if (java_lang_string_equals (env, scene_mode,
3157 android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO))
3158 return Parameters_SCENE_MODE_STEADYPHOTO;
3159 else if (java_lang_string_equals (env, scene_mode,
3160 android_hardware_camera_parameters.SCENE_MODE_FIREWORKS))
3161 return Parameters_SCENE_MODE_FIREWORKS;
3162 else if (java_lang_string_equals (env, scene_mode,
3163 android_hardware_camera_parameters.SCENE_MODE_SPORTS))
3164 return Parameters_SCENE_MODE_SPORTS;
3165 else if (java_lang_string_equals (env, scene_mode,
3166 android_hardware_camera_parameters.SCENE_MODE_PARTY))
3167 return Parameters_SCENE_MODE_PARTY;
3168 else if (java_lang_string_equals (env, scene_mode,
3169 android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT))
3170 return Parameters_SCENE_MODE_CANDLELIGHT;
3171 else if (java_lang_string_equals (env, scene_mode,
3172 android_hardware_camera_parameters.SCENE_MODE_BARCODE))
3173 return Parameters_SCENE_MODE_BARCODE;
3174 else if (android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT != NULL &&
3175 java_lang_string_equals (env, scene_mode,
3176 android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT))
3177 return Parameters_SCENE_MODE_BACKLIGHT;
3178 else if (android_hardware_camera_parameters.SCENE_MODE_FLOWERS != NULL &&
3179 java_lang_string_equals (env, scene_mode,
3180 android_hardware_camera_parameters.SCENE_MODE_FLOWERS))
3181 return Parameters_SCENE_MODE_FLOWERS;
3182 else if (android_hardware_camera_parameters.SCENE_MODE_AR != NULL &&
3183 java_lang_string_equals (env, scene_mode,
3184 android_hardware_camera_parameters.SCENE_MODE_AR))
3185 return Parameters_SCENE_MODE_AR;
3186 else if (android_hardware_camera_parameters.SCENE_MODE_HDR != NULL &&
3187 java_lang_string_equals (env, scene_mode,
3188 android_hardware_camera_parameters.SCENE_MODE_HDR))
3189 return Parameters_SCENE_MODE_HDR;
3190
3191 return NULL;
3192 }
3193
3194 static const jstring
_scene_mode_to_jstring(const gchar * scene_mode)3195 _scene_mode_to_jstring (const gchar * scene_mode)
3196 {
3197 if (!scene_mode)
3198 return NULL;
3199
3200 if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_AUTO))
3201 return android_hardware_camera_parameters.SCENE_MODE_AUTO;
3202 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_ACTION))
3203 return android_hardware_camera_parameters.SCENE_MODE_ACTION;
3204 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_PORTRAIT))
3205 return android_hardware_camera_parameters.SCENE_MODE_PORTRAIT;
3206 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_LANDSCAPE))
3207 return android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE;
3208 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_NIGHT))
3209 return android_hardware_camera_parameters.SCENE_MODE_NIGHT;
3210 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_NIGHT_PORTRAIT))
3211 return android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT;
3212 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_THEATRE))
3213 return android_hardware_camera_parameters.SCENE_MODE_THEATRE;
3214 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_BEACH))
3215 return android_hardware_camera_parameters.SCENE_MODE_BEACH;
3216 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_SNOW))
3217 return android_hardware_camera_parameters.SCENE_MODE_SNOW;
3218 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_SUNSET))
3219 return android_hardware_camera_parameters.SCENE_MODE_SUNSET;
3220 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_STEADYPHOTO))
3221 return android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO;
3222 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_FIREWORKS))
3223 return android_hardware_camera_parameters.SCENE_MODE_FIREWORKS;
3224 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_SPORTS))
3225 return android_hardware_camera_parameters.SCENE_MODE_SPORTS;
3226 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_PARTY))
3227 return android_hardware_camera_parameters.SCENE_MODE_PARTY;
3228 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_CANDLELIGHT))
3229 return android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT;
3230 else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_BARCODE))
3231 return android_hardware_camera_parameters.SCENE_MODE_BARCODE;
3232 else if (android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT != NULL
3233 && !g_strcmp0 (scene_mode, Parameters_SCENE_MODE_BACKLIGHT))
3234 return android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT;
3235 else if (android_hardware_camera_parameters.SCENE_MODE_FLOWERS != NULL
3236 && !g_strcmp0 (scene_mode, Parameters_SCENE_MODE_FLOWERS))
3237 return android_hardware_camera_parameters.SCENE_MODE_FLOWERS;
3238 else if (android_hardware_camera_parameters.SCENE_MODE_AR != NULL
3239 && !g_strcmp0 (scene_mode, Parameters_SCENE_MODE_AR))
3240 return android_hardware_camera_parameters.SCENE_MODE_AR;
3241 else if (android_hardware_camera_parameters.SCENE_MODE_HDR != NULL
3242 && !g_strcmp0 (scene_mode, Parameters_SCENE_MODE_HDR))
3243 return android_hardware_camera_parameters.SCENE_MODE_HDR;
3244
3245 return NULL;
3246 }
3247
3248 static const gchar *
_focus_mode_to_gchar(JNIEnv * env,jstring focus_mode)3249 _focus_mode_to_gchar (JNIEnv * env, jstring focus_mode)
3250 {
3251 if (!focus_mode)
3252 return NULL;
3253
3254 if (java_lang_string_equals (env, focus_mode,
3255 android_hardware_camera_parameters.FOCUS_MODE_AUTO))
3256 return Parameters_FOCUS_MODE_AUTO;
3257 else if (java_lang_string_equals (env, focus_mode,
3258 android_hardware_camera_parameters.FOCUS_MODE_INFINITY))
3259 return Parameters_FOCUS_MODE_INFINITY;
3260 else if (java_lang_string_equals (env, focus_mode,
3261 android_hardware_camera_parameters.FOCUS_MODE_MACRO))
3262 return Parameters_FOCUS_MODE_MACRO;
3263 else if (java_lang_string_equals (env, focus_mode,
3264 android_hardware_camera_parameters.FOCUS_MODE_FIXED))
3265 return Parameters_FOCUS_MODE_FIXED;
3266 else if (java_lang_string_equals (env, focus_mode,
3267 android_hardware_camera_parameters.FOCUS_MODE_EDOF))
3268 return Parameters_FOCUS_MODE_EDOF;
3269 else if (java_lang_string_equals (env, focus_mode,
3270 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO))
3271 return Parameters_FOCUS_MODE_CONTINUOUS_VIDEO;
3272 else if (java_lang_string_equals (env, focus_mode,
3273 android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE))
3274 return Parameters_FOCUS_MODE_CONTINUOUS_PICTURE;
3275
3276 return NULL;
3277 }
3278
3279 static jstring
_focus_mode_to_jstring(const gchar * focus_mode)3280 _focus_mode_to_jstring (const gchar * focus_mode)
3281 {
3282 if (!focus_mode)
3283 return NULL;
3284
3285 if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_AUTO))
3286 return android_hardware_camera_parameters.FOCUS_MODE_AUTO;
3287 else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_INFINITY))
3288 return android_hardware_camera_parameters.FOCUS_MODE_INFINITY;
3289 else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_MACRO))
3290 return android_hardware_camera_parameters.FOCUS_MODE_MACRO;
3291 else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_FIXED))
3292 return android_hardware_camera_parameters.FOCUS_MODE_FIXED;
3293 else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_EDOF))
3294 return android_hardware_camera_parameters.FOCUS_MODE_EDOF;
3295 else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_CONTINUOUS_VIDEO))
3296 return android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO;
3297 else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_CONTINUOUS_PICTURE))
3298 return android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE;
3299
3300 return NULL;
3301 }
3302
3303 gchar *
gst_ahc_parameters_flatten(GstAHCParameters * self)3304 gst_ahc_parameters_flatten (GstAHCParameters * self)
3305 {
3306 JNIEnv *env = gst_amc_jni_get_env ();
3307 GError *err = NULL;
3308 jstring v_str = NULL;
3309 const gchar *v = NULL;
3310 gchar *ret = NULL;
3311
3312 gst_amc_jni_call_object_method (env, &err, self->object,
3313 android_hardware_camera_parameters.flatten, &v_str);
3314 if (err) {
3315 GST_ERROR ("Failed to call android.hardware.Camera.Parameters.flatten: %s",
3316 err->message);
3317 goto done;
3318 }
3319
3320 v = (*env)->GetStringUTFChars (env, v_str, NULL);
3321 if (!v) {
3322 GST_ERROR ("Failed to convert string to UTF8");
3323 (*env)->ExceptionClear (env);
3324 goto done;
3325 }
3326
3327 ret = g_strdup (v);
3328 done:
3329 if (err)
3330 g_clear_error (&err);
3331 if (v)
3332 (*env)->ReleaseStringUTFChars (env, v_str, v);
3333 if (v_str)
3334 gst_amc_jni_object_local_unref (env, v_str);
3335
3336 return ret;
3337 }
3338
3339 const gchar *
gst_ahc_parameters_get_antibanding(GstAHCParameters * self)3340 gst_ahc_parameters_get_antibanding (GstAHCParameters * self)
3341 {
3342 JNIEnv *env = gst_amc_jni_get_env ();
3343 GError *err = NULL;
3344 const gchar *ret = NULL;
3345 jstring antibanding;
3346
3347 gst_amc_jni_call_object_method (env, &err, self->object,
3348 android_hardware_camera_parameters.getAntibanding, &antibanding);
3349 if (err) {
3350 GST_ERROR
3351 ("Failed to call android.hardware.Camera.Parameters.getAntibanding: %s",
3352 err->message);
3353 g_clear_error (&err);
3354 return NULL;
3355 }
3356
3357 ret = _antibanding_to_gchar (env, antibanding);
3358
3359 if (antibanding)
3360 gst_amc_jni_object_local_unref (env, antibanding);
3361
3362 return ret;
3363 }
3364
3365 const gchar *
gst_ahc_parameters_get_color_effect(GstAHCParameters * self)3366 gst_ahc_parameters_get_color_effect (GstAHCParameters * self)
3367 {
3368 JNIEnv *env = gst_amc_jni_get_env ();
3369 GError *err = NULL;
3370 const gchar *ret = NULL;
3371 jstring color_effect;
3372
3373 gst_amc_jni_call_object_method (env, &err, self->object,
3374 android_hardware_camera_parameters.getColorEffect, &color_effect);
3375 if (err) {
3376 GST_ERROR
3377 ("Failed to call android.hardware.Camera.Parameters.getColorEffect: %s",
3378 err->message);
3379 g_clear_error (&err);
3380 return NULL;
3381 }
3382
3383 ret = _color_effect_to_gchar (env, color_effect);
3384
3385 if (color_effect)
3386 gst_amc_jni_object_local_unref (env, color_effect);
3387
3388 return ret;
3389 }
3390
3391 gint
gst_ahc_parameters_get_exposure_compensation(GstAHCParameters * self)3392 gst_ahc_parameters_get_exposure_compensation (GstAHCParameters * self)
3393 {
3394 JNIEnv *env = gst_amc_jni_get_env ();
3395 GError *err = NULL;
3396 gint ev;
3397
3398 gst_amc_jni_call_int_method (env, &err, self->object,
3399 android_hardware_camera_parameters.getExposureCompensation, &ev);
3400 if (err) {
3401 GST_ERROR
3402 ("Failed to call android.hardware.Camera.Parameters.getExposureCompensation: %s",
3403 err->message);
3404 g_clear_error (&err);
3405 return -1;
3406 }
3407
3408 return ev;
3409 }
3410
3411 gfloat
gst_ahc_parameters_get_exposure_compensation_step(GstAHCParameters * self)3412 gst_ahc_parameters_get_exposure_compensation_step (GstAHCParameters * self)
3413 {
3414 JNIEnv *env = gst_amc_jni_get_env ();
3415 GError *err = NULL;
3416 gfloat step;
3417
3418 gst_amc_jni_call_float_method (env, &err, self->object,
3419 android_hardware_camera_parameters.getExposureCompensationStep, &step);
3420 if (err) {
3421 GST_ERROR
3422 ("Failed to call android.hardware.Camera.Parameters.getExposureCompensationStep: %s",
3423 err->message);
3424 g_clear_error (&err);
3425 return 0.0;
3426 }
3427
3428 return step;
3429 }
3430
3431 const gchar *
gst_ahc_parameters_get_flash_mode(GstAHCParameters * self)3432 gst_ahc_parameters_get_flash_mode (GstAHCParameters * self)
3433 {
3434 JNIEnv *env = gst_amc_jni_get_env ();
3435 GError *err = NULL;
3436 const gchar *ret = NULL;
3437 jstring flash_mode;
3438
3439 gst_amc_jni_call_object_method (env, &err, self->object,
3440 android_hardware_camera_parameters.getFlashMode, &flash_mode);
3441 if (err) {
3442 GST_ERROR
3443 ("Failed to call android.hardware.Camera.Parameters.getFlashMode: %s",
3444 err->message);
3445 g_clear_error (&err);
3446 return NULL;
3447 }
3448
3449 ret = _flash_mode_to_gchar (env, flash_mode);
3450
3451 if (flash_mode)
3452 gst_amc_jni_object_local_unref (env, flash_mode);
3453
3454 return ret;
3455 }
3456
3457 gfloat
gst_ahc_parameters_get_focal_length(GstAHCParameters * self)3458 gst_ahc_parameters_get_focal_length (GstAHCParameters * self)
3459 {
3460 JNIEnv *env = gst_amc_jni_get_env ();
3461 GError *err = NULL;
3462 gfloat length;
3463
3464 gst_amc_jni_call_float_method (env, &err, self->object,
3465 android_hardware_camera_parameters.getFocalLength, &length);
3466 if (err) {
3467 GST_ERROR
3468 ("Failed to call android.hardware.Camera.Parameters.getFocalLength: %s",
3469 err->message);
3470 g_clear_error (&err);
3471 return 0.0;
3472 }
3473
3474 return length;
3475 }
3476
3477 const gchar *
gst_ahc_parameters_get_focus_mode(GstAHCParameters * self)3478 gst_ahc_parameters_get_focus_mode (GstAHCParameters * self)
3479 {
3480 JNIEnv *env = gst_amc_jni_get_env ();
3481 GError *err = NULL;
3482 const gchar *ret = NULL;
3483 jstring focus_mode;
3484
3485 gst_amc_jni_call_object_method (env, &err, self->object,
3486 android_hardware_camera_parameters.getFocusMode, &focus_mode);
3487 if (err) {
3488 GST_ERROR
3489 ("Failed to call android.hardware.Camera.Parameters.getFocusMode: %s",
3490 err->message);
3491 g_clear_error (&err);
3492 return NULL;
3493 }
3494
3495 ret = _focus_mode_to_gchar (env, focus_mode);
3496
3497 if (focus_mode)
3498 gst_amc_jni_object_local_unref (env, focus_mode);
3499
3500 return ret;
3501 }
3502
3503 gfloat
gst_ahc_parameters_get_horizontal_view_angle(GstAHCParameters * self)3504 gst_ahc_parameters_get_horizontal_view_angle (GstAHCParameters * self)
3505 {
3506 JNIEnv *env = gst_amc_jni_get_env ();
3507 GError *err = NULL;
3508 gfloat angle;
3509
3510 gst_amc_jni_call_float_method (env, &err, self->object,
3511 android_hardware_camera_parameters.getHorizontalViewAngle, &angle);
3512 if (err) {
3513 GST_ERROR
3514 ("Failed to call android.hardware.Camera.Parameters.getHorizontalViewAngle: %s",
3515 err->message);
3516 g_clear_error (&err);
3517 return 0.0;
3518 }
3519
3520 return angle;
3521 }
3522
3523 gint
gst_ahc_parameters_get_max_exposure_compensation(GstAHCParameters * self)3524 gst_ahc_parameters_get_max_exposure_compensation (GstAHCParameters * self)
3525 {
3526 JNIEnv *env = gst_amc_jni_get_env ();
3527 GError *err = NULL;
3528 gint max;
3529
3530 gst_amc_jni_call_int_method (env, &err, self->object,
3531 android_hardware_camera_parameters.getMaxExposureCompensation, &max);
3532 if (err) {
3533 GST_ERROR
3534 ("Failed to call android.hardware.Camera.Parameters.getMaxExposureCompensation: %s",
3535 err->message);
3536 g_clear_error (&err);
3537 return 0;
3538 }
3539
3540 return max;
3541 }
3542
3543 gint
gst_ahc_parameters_get_max_zoom(GstAHCParameters * self)3544 gst_ahc_parameters_get_max_zoom (GstAHCParameters * self)
3545 {
3546 JNIEnv *env = gst_amc_jni_get_env ();
3547 GError *err = NULL;
3548 gint max;
3549
3550 gst_amc_jni_call_int_method (env, &err, self->object,
3551 android_hardware_camera_parameters.getMaxZoom, &max);
3552 if (err) {
3553 GST_ERROR
3554 ("Failed to call android.hardware.Camera.Parameters.getMaxZoom: %s",
3555 err->message);
3556 g_clear_error (&err);
3557 return -1;
3558 }
3559
3560 return max;
3561 }
3562
3563 gint
gst_ahc_parameters_get_min_exposure_compensation(GstAHCParameters * self)3564 gst_ahc_parameters_get_min_exposure_compensation (GstAHCParameters * self)
3565 {
3566 JNIEnv *env = gst_amc_jni_get_env ();
3567 GError *err = NULL;
3568 gint min;
3569
3570 gst_amc_jni_call_int_method (env, &err, self->object,
3571 android_hardware_camera_parameters.getMinExposureCompensation, &min);
3572 if (err) {
3573 GST_ERROR
3574 ("Failed to call android.hardware.Camera.Parameters.getMinExposureCompensation: %s",
3575 err->message);
3576 g_clear_error (&err);
3577 return 0;
3578 }
3579
3580 return min;
3581 }
3582
3583 gint
gst_ahc_parameters_get_preview_format(GstAHCParameters * self)3584 gst_ahc_parameters_get_preview_format (GstAHCParameters * self)
3585 {
3586 JNIEnv *env = gst_amc_jni_get_env ();
3587 GError *err = NULL;
3588 gint format;
3589
3590 gst_amc_jni_call_int_method (env, &err, self->object,
3591 android_hardware_camera_parameters.getPreviewFormat, &format);
3592 if (err) {
3593 GST_ERROR
3594 ("Failed to call android.hardware.Camera.Parameters.getPreviewFormat: %s",
3595 err->message);
3596 g_clear_error (&err);
3597 return 0;
3598 }
3599
3600 return format;
3601 }
3602
3603 gboolean
gst_ahc_parameters_get_preview_fps_range(GstAHCParameters * self,gint * min,gint * max)3604 gst_ahc_parameters_get_preview_fps_range (GstAHCParameters * self,
3605 gint * min, gint * max)
3606 {
3607 JNIEnv *env = gst_amc_jni_get_env ();
3608 GError *err = NULL;
3609 gboolean ret = FALSE;
3610 jintArray range = NULL;
3611 jint *fps = NULL;
3612
3613 range = (*env)->NewIntArray (env, 2);
3614 if (!fps) {
3615 (*env)->ExceptionClear (env);
3616 GST_ERROR ("Failed to create array");
3617 goto done;
3618 }
3619
3620 gst_amc_jni_call_void_method (env, &err, self->object,
3621 android_hardware_camera_parameters.getPreviewFpsRange, range);
3622 if (err) {
3623 GST_ERROR
3624 ("Failed to call android.hardware.Camera.Parameters.getPreviewFpsRange: %s",
3625 err->message);
3626 goto done;
3627 }
3628
3629 fps = (*env)->GetIntArrayElements (env, range, NULL);
3630 if ((*env)->ExceptionCheck (env) || !fps) {
3631 (*env)->ExceptionClear (env);
3632 GST_ERROR ("Failed to get array elements");
3633 goto done;
3634 }
3635 if (min)
3636 *min = fps[0];
3637 if (max)
3638 *max = fps[1];
3639
3640 ret = TRUE;
3641 done:
3642 if (err)
3643 g_clear_error (&err);
3644 if (fps)
3645 (*env)->ReleaseIntArrayElements (env, range, fps, JNI_ABORT);
3646 if (range)
3647 gst_amc_jni_object_local_unref (env, range);
3648
3649 return ret;
3650 }
3651
3652 GstAHCSize *
gst_ahc_parameters_get_preview_size(GstAHCParameters * self)3653 gst_ahc_parameters_get_preview_size (GstAHCParameters * self)
3654 {
3655 JNIEnv *env = gst_amc_jni_get_env ();
3656 GError *err = NULL;
3657 jobject jsize = NULL;
3658 GstAHCSize *size = NULL;
3659
3660 gst_amc_jni_call_object_method (env, &err, self->object,
3661 android_hardware_camera_parameters.getPreviewSize, &jsize);
3662 if (err) {
3663 GST_ERROR
3664 ("Failed to call android.hardware.Camera.Parameters.getPreviewSize: %s",
3665 err->message);
3666 goto done;
3667 }
3668
3669 size = g_slice_new (GstAHCSize);
3670 size->width = (*env)->GetIntField (env, jsize,
3671 android_hardware_camera_size.width);
3672 if ((*env)->ExceptionCheck (env)) {
3673 GST_ERROR ("Failed to get Camera.Size.width field");
3674 (*env)->ExceptionClear (env);
3675 g_slice_free (GstAHCSize, size);
3676 size = NULL;
3677 goto done;
3678 }
3679
3680 size->height = (*env)->GetIntField (env, jsize,
3681 android_hardware_camera_size.height);
3682 if ((*env)->ExceptionCheck (env)) {
3683 GST_ERROR ("Failed to get Camera.Size.height field");
3684 (*env)->ExceptionClear (env);
3685 g_slice_free (GstAHCSize, size);
3686 size = NULL;
3687 goto done;
3688 }
3689
3690 done:
3691 if (err)
3692 g_clear_error (&err);
3693 if (jsize)
3694 gst_amc_jni_object_local_unref (env, jsize);
3695
3696 return size;
3697 }
3698
3699 const gchar *
gst_ahc_parameters_get_scene_mode(GstAHCParameters * self)3700 gst_ahc_parameters_get_scene_mode (GstAHCParameters * self)
3701 {
3702 JNIEnv *env = gst_amc_jni_get_env ();
3703 GError *err = NULL;
3704 const gchar *ret = NULL;
3705 jstring scene_mode;
3706
3707 gst_amc_jni_call_object_method (env, &err, self->object,
3708 android_hardware_camera_parameters.getSceneMode, &scene_mode);
3709 if (err) {
3710 GST_ERROR
3711 ("Failed to call android.hardware.Camera.Parameters.getSceneMode: %s",
3712 err->message);
3713 g_clear_error (&err);
3714 return NULL;
3715 }
3716
3717 ret = _scene_mode_to_gchar (env, scene_mode);
3718
3719 if (scene_mode)
3720 gst_amc_jni_object_local_unref (env, scene_mode);
3721
3722 return ret;
3723 }
3724
3725 GList *
gst_ahc_parameters_get_supported_antibanding(GstAHCParameters * self)3726 gst_ahc_parameters_get_supported_antibanding (GstAHCParameters * self)
3727 {
3728 JNIEnv *env = gst_amc_jni_get_env ();
3729 GError *err = NULL;
3730 jobject list = NULL;
3731 GList *ret = NULL;
3732
3733 gst_amc_jni_call_object_method (env, &err, self->object,
3734 android_hardware_camera_parameters.getSupportedAntibanding, &list);
3735 if (err) {
3736 GST_ERROR
3737 ("Failed to call android.hardware.Camera.Parameters.getSupportedAntibanding: %s",
3738 err->message);
3739 g_clear_error (&err);
3740 return NULL;
3741 }
3742
3743 if (list) {
3744 jobject iterator = NULL;
3745
3746 iterator = java_util_list_iterator (env, list);
3747 if (iterator) {
3748 while (java_util_iterator_has_next (env, iterator)) {
3749 jobject str = java_util_iterator_next (env, iterator);
3750
3751 if (str) {
3752 const gchar *value = _antibanding_to_gchar (env, str);
3753
3754 ret = g_list_append (ret, (gchar *) value);
3755 gst_amc_jni_object_local_unref (env, str);
3756 }
3757 }
3758 gst_amc_jni_object_local_unref (env, iterator);
3759 }
3760 gst_amc_jni_object_local_unref (env, list);
3761 }
3762
3763 return ret;
3764 }
3765
3766 void
gst_ahc_parameters_supported_antibanding_free(GList * list)3767 gst_ahc_parameters_supported_antibanding_free (GList * list)
3768 {
3769 g_list_free (list);
3770 }
3771
3772 GList *
gst_ahc_parameters_get_supported_color_effects(GstAHCParameters * self)3773 gst_ahc_parameters_get_supported_color_effects (GstAHCParameters * self)
3774 {
3775 JNIEnv *env = gst_amc_jni_get_env ();
3776 GError *err = NULL;
3777 jobject list = NULL;
3778 GList *ret = NULL;
3779
3780 gst_amc_jni_call_object_method (env, &err, self->object,
3781 android_hardware_camera_parameters.getSupportedColorEffects, &list);
3782 if (err) {
3783 GST_ERROR
3784 ("Failed to call android.hardware.Camera.Parameters.getSupportedColorEffects: %s",
3785 err->message);
3786 g_clear_error (&err);
3787 return NULL;
3788 }
3789
3790 if (list) {
3791 jobject iterator = NULL;
3792
3793 iterator = java_util_list_iterator (env, list);
3794 if (iterator) {
3795 while (java_util_iterator_has_next (env, iterator)) {
3796 jobject str = java_util_iterator_next (env, iterator);
3797
3798 if (str) {
3799 const gchar *value = _color_effect_to_gchar (env, str);
3800
3801 ret = g_list_append (ret, (gchar *) value);
3802 gst_amc_jni_object_local_unref (env, str);
3803 }
3804 }
3805 gst_amc_jni_object_local_unref (env, iterator);
3806 }
3807 gst_amc_jni_object_local_unref (env, list);
3808 }
3809
3810 return ret;
3811 }
3812
3813 void
gst_ahc_parameters_supported_color_effects_free(GList * list)3814 gst_ahc_parameters_supported_color_effects_free (GList * list)
3815 {
3816 g_list_free (list);
3817 }
3818
3819 GList *
gst_ahc_parameters_get_supported_flash_modes(GstAHCParameters * self)3820 gst_ahc_parameters_get_supported_flash_modes (GstAHCParameters * self)
3821 {
3822 JNIEnv *env = gst_amc_jni_get_env ();
3823 GError *err = NULL;
3824 jobject list = NULL;
3825 GList *ret = NULL;
3826
3827 gst_amc_jni_call_object_method (env, &err, self->object,
3828 android_hardware_camera_parameters.getSupportedFlashModes, &list);
3829 if (err) {
3830 GST_ERROR
3831 ("Failed to call android.hardware.Camera.Parameters.getSupportedFlashModes: %s",
3832 err->message);
3833 g_clear_error (&err);
3834 return NULL;
3835 }
3836
3837 if (list) {
3838 jobject iterator = NULL;
3839
3840 iterator = java_util_list_iterator (env, list);
3841 if (iterator) {
3842 while (java_util_iterator_has_next (env, iterator)) {
3843 jobject str = java_util_iterator_next (env, iterator);
3844
3845 if (str) {
3846 const gchar *value = _flash_mode_to_gchar (env, str);
3847
3848 ret = g_list_append (ret, (gchar *) value);
3849 gst_amc_jni_object_local_unref (env, str);
3850 }
3851 }
3852 gst_amc_jni_object_local_unref (env, iterator);
3853 }
3854 gst_amc_jni_object_local_unref (env, list);
3855 }
3856
3857 return ret;
3858 }
3859
3860 void
gst_ahc_parameters_supported_flash_modes_free(GList * list)3861 gst_ahc_parameters_supported_flash_modes_free (GList * list)
3862 {
3863 g_list_free (list);
3864 }
3865
3866 GList *
gst_ahc_parameters_get_supported_focus_modes(GstAHCParameters * self)3867 gst_ahc_parameters_get_supported_focus_modes (GstAHCParameters * self)
3868 {
3869 JNIEnv *env = gst_amc_jni_get_env ();
3870 GError *err = NULL;
3871 jobject list = NULL;
3872 GList *ret = NULL;
3873
3874 gst_amc_jni_call_object_method (env, &err, self->object,
3875 android_hardware_camera_parameters.getSupportedFocusModes, &list);
3876 if (err) {
3877 GST_ERROR
3878 ("Failed to call android.hardware.Camera.Parameters.getSupportedFocusModes: %s",
3879 err->message);
3880 g_clear_error (&err);
3881 return NULL;
3882 }
3883
3884 if (list) {
3885 jobject iterator = NULL;
3886
3887 iterator = java_util_list_iterator (env, list);
3888 if (iterator) {
3889 while (java_util_iterator_has_next (env, iterator)) {
3890 jobject str = java_util_iterator_next (env, iterator);
3891
3892 if (str) {
3893 const gchar *value = _focus_mode_to_gchar (env, str);
3894
3895 ret = g_list_append (ret, (gchar *) value);
3896 gst_amc_jni_object_local_unref (env, str);
3897 }
3898 }
3899 gst_amc_jni_object_local_unref (env, iterator);
3900 }
3901 gst_amc_jni_object_local_unref (env, list);
3902 }
3903
3904 return ret;
3905 }
3906
3907 void
gst_ahc_parameters_supported_focus_modes_free(GList * list)3908 gst_ahc_parameters_supported_focus_modes_free (GList * list)
3909 {
3910 g_list_free (list);
3911 }
3912
3913 GList *
gst_ahc_parameters_get_supported_preview_formats(GstAHCParameters * self)3914 gst_ahc_parameters_get_supported_preview_formats (GstAHCParameters * self)
3915 {
3916 JNIEnv *env = gst_amc_jni_get_env ();
3917 GError *err = NULL;
3918 jobject list = NULL;
3919 GList *ret = NULL;
3920
3921 gst_amc_jni_call_object_method (env, &err, self->object,
3922 android_hardware_camera_parameters.getSupportedPreviewFormats, &list);
3923 if (err) {
3924 GST_ERROR
3925 ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewFormats: %s",
3926 err->message);
3927 g_clear_error (&err);
3928 return NULL;
3929 }
3930
3931 if (list) {
3932 jobject iterator = NULL;
3933
3934 iterator = java_util_list_iterator (env, list);
3935 if (iterator) {
3936 while (java_util_iterator_has_next (env, iterator)) {
3937 jobject integer = java_util_iterator_next (env, iterator);
3938
3939 if (integer) {
3940 jint value = java_lang_integer_int_value (env, integer);
3941
3942 ret = g_list_append (ret, GINT_TO_POINTER (value));
3943 gst_amc_jni_object_local_unref (env, integer);
3944 }
3945 }
3946 gst_amc_jni_object_local_unref (env, iterator);
3947 }
3948 gst_amc_jni_object_local_unref (env, list);
3949 }
3950
3951 return ret;
3952 }
3953
3954 void
gst_ahc_parameters_supported_preview_formats_free(GList * list)3955 gst_ahc_parameters_supported_preview_formats_free (GList * list)
3956 {
3957 g_list_free (list);
3958 }
3959
3960 GList *
gst_ahc_parameters_get_supported_preview_fps_range(GstAHCParameters * self)3961 gst_ahc_parameters_get_supported_preview_fps_range (GstAHCParameters * self)
3962 {
3963 JNIEnv *env = gst_amc_jni_get_env ();
3964 GError *err = NULL;
3965 jobject list = NULL;
3966 GList *ret = NULL;
3967
3968 gst_amc_jni_call_object_method (env, &err, self->object,
3969 android_hardware_camera_parameters.getSupportedPreviewFpsRange, &list);
3970 if (err) {
3971 GST_ERROR
3972 ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewFpsRange: %s",
3973 err->message);
3974 g_clear_error (&err);
3975 return NULL;
3976 }
3977
3978 if (list) {
3979 jobject iterator = NULL;
3980
3981 iterator = java_util_list_iterator (env, list);
3982 if (iterator) {
3983 while (java_util_iterator_has_next (env, iterator)) {
3984 jintArray range = java_util_iterator_next (env, iterator);
3985
3986 if (range) {
3987 jint *fps = g_new (jint, 2);
3988
3989 (*env)->GetIntArrayRegion (env, range, 0, 2, fps);
3990 ret = g_list_append (ret, fps);
3991 gst_amc_jni_object_local_unref (env, range);
3992 }
3993 }
3994 gst_amc_jni_object_local_unref (env, iterator);
3995 }
3996 gst_amc_jni_object_local_unref (env, list);
3997 }
3998
3999 return ret;
4000 }
4001
4002 void
gst_ahc_parameters_supported_preview_fps_range_free(GList * list)4003 gst_ahc_parameters_supported_preview_fps_range_free (GList * list)
4004 {
4005 g_list_foreach (list, (GFunc) g_free, NULL);
4006 g_list_free (list);
4007 }
4008
4009 GList *
gst_ahc_parameters_get_supported_preview_sizes(GstAHCParameters * self)4010 gst_ahc_parameters_get_supported_preview_sizes (GstAHCParameters * self)
4011 {
4012 JNIEnv *env = gst_amc_jni_get_env ();
4013 GError *err = NULL;
4014 jobject list = NULL;
4015 GList *ret = NULL;
4016
4017 gst_amc_jni_call_object_method (env, &err, self->object,
4018 android_hardware_camera_parameters.getSupportedPreviewSizes, &list);
4019 if (err) {
4020 GST_ERROR
4021 ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewSizes: %s",
4022 err->message);
4023 g_clear_error (&err);
4024 return NULL;
4025 }
4026
4027 if (list) {
4028 jobject iterator = NULL;
4029
4030 iterator = java_util_list_iterator (env, list);
4031 if (iterator) {
4032 while (java_util_iterator_has_next (env, iterator)) {
4033 jobject jsize = java_util_iterator_next (env, iterator);
4034
4035 if (jsize) {
4036 jint width, height;
4037
4038 width = (*env)->GetIntField (env, jsize,
4039 android_hardware_camera_size.width);
4040 height = (*env)->GetIntField (env, jsize,
4041 android_hardware_camera_size.height);
4042
4043 ret = g_list_append (ret, gst_ahc_size_new (width, height));
4044 gst_amc_jni_object_local_unref (env, jsize);
4045 }
4046 }
4047 gst_amc_jni_object_local_unref (env, iterator);
4048 }
4049 gst_amc_jni_object_local_unref (env, list);
4050 }
4051
4052 return ret;
4053 }
4054
4055 void
gst_ahc_parameters_supported_preview_sizes_free(GList * list)4056 gst_ahc_parameters_supported_preview_sizes_free (GList * list)
4057 {
4058 g_list_foreach (list, (GFunc) gst_ahc_size_free, NULL);
4059 g_list_free (list);
4060 }
4061
4062 GList *
gst_ahc_parameters_get_supported_scene_modes(GstAHCParameters * self)4063 gst_ahc_parameters_get_supported_scene_modes (GstAHCParameters * self)
4064 {
4065 JNIEnv *env = gst_amc_jni_get_env ();
4066 GError *err = NULL;
4067 jobject list = NULL;
4068 GList *ret = NULL;
4069
4070 gst_amc_jni_call_object_method (env, &err, self->object,
4071 android_hardware_camera_parameters.getSupportedSceneModes, &list);
4072 if (err) {
4073 GST_ERROR
4074 ("Failed to call android.hardware.Camera.Parameters.getSupportedSceneModes: %s",
4075 err->message);
4076 g_clear_error (&err);
4077 return NULL;
4078 }
4079
4080 if (list) {
4081 jobject iterator = NULL;
4082
4083 iterator = java_util_list_iterator (env, list);
4084 if (iterator) {
4085 while (java_util_iterator_has_next (env, iterator)) {
4086 jobject str = java_util_iterator_next (env, iterator);
4087
4088 if (str) {
4089 const gchar *value = _scene_mode_to_gchar (env, str);
4090
4091 ret = g_list_append (ret, (gchar *) value);
4092 gst_amc_jni_object_local_unref (env, str);
4093 }
4094 }
4095 gst_amc_jni_object_local_unref (env, iterator);
4096 }
4097 gst_amc_jni_object_local_unref (env, list);
4098 }
4099
4100 return ret;
4101 }
4102
4103 void
gst_ahc_parameters_supported_scene_modes_free(GList * list)4104 gst_ahc_parameters_supported_scene_modes_free (GList * list)
4105 {
4106 g_list_free (list);
4107 }
4108
4109 GList *
gst_ahc_parameters_get_supported_white_balance(GstAHCParameters * self)4110 gst_ahc_parameters_get_supported_white_balance (GstAHCParameters * self)
4111 {
4112 JNIEnv *env = gst_amc_jni_get_env ();
4113 GError *err = NULL;
4114 jobject list = NULL;
4115 GList *ret = NULL;
4116
4117 gst_amc_jni_call_object_method (env, &err, self->object,
4118 android_hardware_camera_parameters.getSupportedWhiteBalance, &list);
4119 if (err) {
4120 GST_ERROR
4121 ("Failed to call android.hardware.Camera.Parameters.getSupportedWhiteBalance: %s",
4122 err->message);
4123 g_clear_error (&err);
4124 return NULL;
4125 }
4126
4127 if (list) {
4128 jobject iterator = NULL;
4129
4130 iterator = java_util_list_iterator (env, list);
4131 if (iterator) {
4132 while (java_util_iterator_has_next (env, iterator)) {
4133 jobject str = java_util_iterator_next (env, iterator);
4134
4135 if (str) {
4136 const gchar *value = _white_balance_to_gchar (env, str);
4137
4138 ret = g_list_append (ret, (gchar *) value);
4139 gst_amc_jni_object_local_unref (env, str);
4140 }
4141 }
4142 gst_amc_jni_object_local_unref (env, iterator);
4143 }
4144 gst_amc_jni_object_local_unref (env, list);
4145 }
4146
4147 return ret;
4148 }
4149
4150 void
gst_ahc_parameters_supported_white_balance_free(GList * list)4151 gst_ahc_parameters_supported_white_balance_free (GList * list)
4152 {
4153 g_list_free (list);
4154 }
4155
4156 gfloat
gst_ahc_parameters_get_vertical_view_angle(GstAHCParameters * self)4157 gst_ahc_parameters_get_vertical_view_angle (GstAHCParameters * self)
4158 {
4159 JNIEnv *env = gst_amc_jni_get_env ();
4160 GError *err = NULL;
4161 gfloat angle;
4162
4163 gst_amc_jni_call_float_method (env, &err, self->object,
4164 android_hardware_camera_parameters.getVerticalViewAngle, &angle);
4165 if (err) {
4166 GST_ERROR
4167 ("Failed to call android.hardware.Camera.Parameters.getVerticalViewAngle: %s",
4168 err->message);
4169 g_clear_error (&err);
4170 return 0.0;
4171 }
4172
4173 return angle;
4174 }
4175
4176 gboolean
gst_ahc_parameters_get_video_stabilization(GstAHCParameters * self)4177 gst_ahc_parameters_get_video_stabilization (GstAHCParameters * self)
4178 {
4179 JNIEnv *env = gst_amc_jni_get_env ();
4180 GError *err = NULL;
4181 gboolean ret;
4182
4183 gst_amc_jni_call_boolean_method (env, &err, self->object,
4184 android_hardware_camera_parameters.getVideoStabilization, &ret);
4185 if (err) {
4186 GST_ERROR
4187 ("Failed to call android.hardware.Camera.Parameters.getVideoStabilization: %s",
4188 err->message);
4189 g_clear_error (&err);
4190 return FALSE;
4191 }
4192
4193 return ret;
4194 }
4195
4196 const gchar *
gst_ahc_parameters_get_white_balance(GstAHCParameters * self)4197 gst_ahc_parameters_get_white_balance (GstAHCParameters * self)
4198 {
4199 JNIEnv *env = gst_amc_jni_get_env ();
4200 GError *err = NULL;
4201 const gchar *ret = NULL;
4202 jstring white_balance;
4203
4204 gst_amc_jni_call_object_method (env, &err, self->object,
4205 android_hardware_camera_parameters.getWhiteBalance, &white_balance);
4206 if (err) {
4207 GST_ERROR
4208 ("Failed to call android.hardware.Camera.Parameters.getWhiteBalance: %s",
4209 err->message);
4210 g_clear_error (&err);
4211 return NULL;
4212 }
4213
4214 ret = _white_balance_to_gchar (env, white_balance);
4215
4216 if (white_balance)
4217 gst_amc_jni_object_local_unref (env, white_balance);
4218
4219 return ret;
4220 }
4221
4222 gint
gst_ahc_parameters_get_zoom(GstAHCParameters * self)4223 gst_ahc_parameters_get_zoom (GstAHCParameters * self)
4224 {
4225 JNIEnv *env = gst_amc_jni_get_env ();
4226 GError *err = NULL;
4227 gint zoom;
4228
4229 gst_amc_jni_call_int_method (env, &err, self->object,
4230 android_hardware_camera_parameters.getZoom, &zoom);
4231 if (err) {
4232 GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getZoom: %s",
4233 err->message);
4234 g_clear_error (&err);
4235 return -1;
4236 }
4237
4238 return zoom;
4239 }
4240
4241 GList *
gst_ahc_parameters_get_zoom_ratios(GstAHCParameters * self)4242 gst_ahc_parameters_get_zoom_ratios (GstAHCParameters * self)
4243 {
4244 JNIEnv *env = gst_amc_jni_get_env ();
4245 GError *err = NULL;
4246 jobject list = NULL;
4247 GList *ret = NULL;
4248
4249 gst_amc_jni_call_object_method (env, &err, self->object,
4250 android_hardware_camera_parameters.getZoomRatios, &list);
4251 if (err) {
4252 GST_ERROR
4253 ("Failed to call android.hardware.Camera.Parameters.getZoomRatios: %s",
4254 err->message);
4255 g_clear_error (&err);
4256 return NULL;
4257 }
4258
4259 if (list) {
4260 jobject iterator = NULL;
4261
4262 iterator = java_util_list_iterator (env, list);
4263 if (iterator) {
4264 while (java_util_iterator_has_next (env, iterator)) {
4265 jobject integer = java_util_iterator_next (env, iterator);
4266
4267 if (integer) {
4268 jint value = java_lang_integer_int_value (env, integer);
4269
4270 ret = g_list_append (ret, GINT_TO_POINTER (value));
4271 gst_amc_jni_object_local_unref (env, integer);
4272 }
4273 }
4274 gst_amc_jni_object_local_unref (env, iterator);
4275 }
4276 gst_amc_jni_object_local_unref (env, list);
4277 }
4278
4279 return ret;
4280 }
4281
4282 void
gst_ahc_parameters_zoom_ratios_free(GList * list)4283 gst_ahc_parameters_zoom_ratios_free (GList * list)
4284 {
4285 g_list_free (list);
4286 }
4287
4288 gboolean
gst_ahc_parameters_is_smooth_zoom_supported(GstAHCParameters * self)4289 gst_ahc_parameters_is_smooth_zoom_supported (GstAHCParameters * self)
4290 {
4291 JNIEnv *env = gst_amc_jni_get_env ();
4292 GError *err = NULL;
4293 gboolean supported;
4294
4295 gst_amc_jni_call_boolean_method (env, &err, self->object,
4296 android_hardware_camera_parameters.isSmoothZoomSupported, &supported);
4297 if (err) {
4298 GST_ERROR
4299 ("Failed to call android.hardware.Camera.Parameters.isSmoothZoomSupported: %s",
4300 err->message);
4301 g_clear_error (&err);
4302 return FALSE;
4303 }
4304
4305 return supported;
4306 }
4307
4308 gboolean
gst_ahc_parameters_is_video_stabilization_supported(GstAHCParameters * self)4309 gst_ahc_parameters_is_video_stabilization_supported (GstAHCParameters * self)
4310 {
4311 JNIEnv *env = gst_amc_jni_get_env ();
4312 GError *err = NULL;
4313 gboolean supported;
4314
4315 gst_amc_jni_call_boolean_method (env, &err, self->object,
4316 android_hardware_camera_parameters.isVideoStabilizationSupported,
4317 &supported);
4318 if (err) {
4319 GST_ERROR
4320 ("Failed to call android.hardware.Camera.Parameters.isVideoStabilizationSupported: %s",
4321 err->message);
4322 g_clear_error (&err);
4323 return FALSE;
4324 }
4325
4326 return supported;
4327 }
4328
4329 gboolean
gst_ahc_parameters_is_zoom_supported(GstAHCParameters * self)4330 gst_ahc_parameters_is_zoom_supported (GstAHCParameters * self)
4331 {
4332 JNIEnv *env = gst_amc_jni_get_env ();
4333 GError *err = NULL;
4334 gboolean supported;
4335
4336 gst_amc_jni_call_boolean_method (env, &err, self->object,
4337 android_hardware_camera_parameters.isZoomSupported, &supported);
4338 if (err) {
4339 GST_ERROR
4340 ("Failed to call android.hardware.Camera.Parameters.isZoomSupported: %s",
4341 err->message);
4342 g_clear_error (&err);
4343 return FALSE;
4344 }
4345
4346 return supported;
4347 }
4348
4349 gboolean
gst_ahc_parameters_set_antibanding(GstAHCParameters * self,const gchar * value)4350 gst_ahc_parameters_set_antibanding (GstAHCParameters * self,
4351 const gchar * value)
4352 {
4353 JNIEnv *env = gst_amc_jni_get_env ();
4354 GError *err = NULL;
4355 jstring antibanding;
4356
4357 antibanding = _antibanding_to_jstring (value);
4358 if (!antibanding)
4359 return FALSE;
4360
4361 gst_amc_jni_call_void_method (env, &err, self->object,
4362 android_hardware_camera_parameters.setAntibanding, antibanding);
4363 if (err) {
4364 GST_ERROR
4365 ("Failed to call android.hardware.Camera.Parameters.setAntibanding: %s",
4366 err->message);
4367 g_clear_error (&err);
4368 return FALSE;
4369 }
4370
4371 return TRUE;
4372 }
4373
4374 gboolean
gst_ahc_parameters_set_color_effect(GstAHCParameters * self,const gchar * value)4375 gst_ahc_parameters_set_color_effect (GstAHCParameters * self,
4376 const gchar * value)
4377 {
4378 JNIEnv *env = gst_amc_jni_get_env ();
4379 GError *err = NULL;
4380 jstring color_effect;
4381
4382 color_effect = _color_effect_to_jstring (value);
4383 if (!color_effect)
4384 return FALSE;
4385
4386 gst_amc_jni_call_void_method (env, &err, self->object,
4387 android_hardware_camera_parameters.setColorEffect, color_effect);
4388 if (err) {
4389 GST_ERROR
4390 ("Failed to call android.hardware.Camera.Parameters.setColorEffect: %s",
4391 err->message);
4392 g_clear_error (&err);
4393 return FALSE;
4394 }
4395
4396 return TRUE;
4397 }
4398
4399 gboolean
gst_ahc_parameters_set_exposure_compensation(GstAHCParameters * self,gint value)4400 gst_ahc_parameters_set_exposure_compensation (GstAHCParameters * self,
4401 gint value)
4402 {
4403 JNIEnv *env = gst_amc_jni_get_env ();
4404 GError *err = NULL;
4405
4406 gst_amc_jni_call_void_method (env, &err, self->object,
4407 android_hardware_camera_parameters.setExposureCompensation, value);
4408 if (err) {
4409 GST_ERROR
4410 ("Failed to call android.hardware.Camera.Parameters.setExposureCompensation: %s",
4411 err->message);
4412 g_clear_error (&err);
4413 return FALSE;
4414 }
4415
4416 return TRUE;
4417 }
4418
4419 gboolean
gst_ahc_parameters_set_flash_mode(GstAHCParameters * self,const gchar * value)4420 gst_ahc_parameters_set_flash_mode (GstAHCParameters * self, const gchar * value)
4421 {
4422 JNIEnv *env = gst_amc_jni_get_env ();
4423 GError *err = NULL;
4424 jstring flash_mode;
4425
4426 flash_mode = _flash_mode_to_jstring (value);
4427 if (!flash_mode)
4428 return FALSE;
4429
4430 gst_amc_jni_call_void_method (env, &err, self->object,
4431 android_hardware_camera_parameters.setFlashMode, flash_mode);
4432 if (err) {
4433 GST_ERROR
4434 ("Failed to call android.hardware.Camera.Parameters.setFlashMode: %s",
4435 err->message);
4436 g_clear_error (&err);
4437 return FALSE;
4438 }
4439
4440 return TRUE;
4441 }
4442
4443 gboolean
gst_ahc_parameters_set_focus_mode(GstAHCParameters * self,const gchar * value)4444 gst_ahc_parameters_set_focus_mode (GstAHCParameters * self, const gchar * value)
4445 {
4446 JNIEnv *env = gst_amc_jni_get_env ();
4447 GError *err = NULL;
4448 jstring focus_mode;
4449
4450 focus_mode = _focus_mode_to_jstring (value);
4451 if (!focus_mode)
4452 return FALSE;
4453
4454 gst_amc_jni_call_void_method (env, &err, self->object,
4455 android_hardware_camera_parameters.setFocusMode, focus_mode);
4456 if (err) {
4457 GST_ERROR
4458 ("Failed to call android.hardware.Camera.Parameters.setFocusMode: %s",
4459 err->message);
4460 g_clear_error (&err);
4461 return FALSE;
4462 }
4463
4464 return TRUE;
4465 }
4466
4467 gboolean
gst_ahc_parameters_set_preview_format(GstAHCParameters * self,gint format)4468 gst_ahc_parameters_set_preview_format (GstAHCParameters * self, gint format)
4469 {
4470 JNIEnv *env = gst_amc_jni_get_env ();
4471 GError *err = NULL;
4472
4473 gst_amc_jni_call_void_method (env, &err, self->object,
4474 android_hardware_camera_parameters.setPreviewFormat, format);
4475 if (err) {
4476 GST_ERROR
4477 ("Failed to call android.hardware.Camera.Parameters.setPreviewFormat: %s",
4478 err->message);
4479 g_clear_error (&err);
4480 return FALSE;
4481 }
4482
4483 return TRUE;
4484 }
4485
4486 gboolean
gst_ahc_parameters_set_preview_fps_range(GstAHCParameters * self,gint min,gint max)4487 gst_ahc_parameters_set_preview_fps_range (GstAHCParameters * self,
4488 gint min, gint max)
4489 {
4490 JNIEnv *env = gst_amc_jni_get_env ();
4491 GError *err = NULL;
4492
4493 gst_amc_jni_call_void_method (env, &err, self->object,
4494 android_hardware_camera_parameters.setPreviewFpsRange, min, max);
4495 if (err) {
4496 GST_ERROR
4497 ("Failed to call android.hardware.Camera.Parameters.setPreviewFpsRange: %s",
4498 err->message);
4499 g_clear_error (&err);
4500 return FALSE;
4501 }
4502
4503 return TRUE;
4504 }
4505
4506 gboolean
gst_ahc_parameters_set_preview_size(GstAHCParameters * self,gint width,gint height)4507 gst_ahc_parameters_set_preview_size (GstAHCParameters * self,
4508 gint width, gint height)
4509 {
4510 JNIEnv *env = gst_amc_jni_get_env ();
4511 GError *err = NULL;
4512
4513 gst_amc_jni_call_void_method (env, &err, self->object,
4514 android_hardware_camera_parameters.setPreviewSize, width, height);
4515 if (err) {
4516 GST_ERROR
4517 ("Failed to call android.hardware.Camera.Parameters.setPreviewSize: %s",
4518 err->message);
4519 g_clear_error (&err);
4520 return FALSE;
4521 }
4522
4523 return TRUE;
4524 }
4525
4526 gboolean
gst_ahc_parameters_set_scene_mode(GstAHCParameters * self,const gchar * value)4527 gst_ahc_parameters_set_scene_mode (GstAHCParameters * self, const gchar * value)
4528 {
4529 JNIEnv *env = gst_amc_jni_get_env ();
4530 GError *err = NULL;
4531 jstring scene_mode;
4532
4533 scene_mode = _scene_mode_to_jstring (value);
4534 if (!scene_mode)
4535 return FALSE;
4536
4537 gst_amc_jni_call_void_method (env, &err, self->object,
4538 android_hardware_camera_parameters.setSceneMode, scene_mode);
4539 if (err) {
4540 GST_ERROR
4541 ("Failed to call android.hardware.Camera.Parameters.setSceneMode: %s",
4542 err->message);
4543 g_clear_error (&err);
4544 return FALSE;
4545 }
4546
4547 return TRUE;
4548 }
4549
4550
4551 gboolean
gst_ahc_parameters_set_video_stabilization(GstAHCParameters * self,gboolean toggle)4552 gst_ahc_parameters_set_video_stabilization (GstAHCParameters * self,
4553 gboolean toggle)
4554 {
4555 JNIEnv *env = gst_amc_jni_get_env ();
4556 GError *err = NULL;
4557
4558 gst_amc_jni_call_void_method (env, &err, self->object,
4559 android_hardware_camera_parameters.setVideoStabilization, toggle);
4560 if (err) {
4561 GST_ERROR
4562 ("Failed to call android.hardware.Camera.Parameters.setVideoStabilization: %s",
4563 err->message);
4564 g_clear_error (&err);
4565 return FALSE;
4566 }
4567
4568 return TRUE;
4569 }
4570
4571 gboolean
gst_ahc_parameters_set_white_balance(GstAHCParameters * self,const gchar * value)4572 gst_ahc_parameters_set_white_balance (GstAHCParameters * self,
4573 const gchar * value)
4574 {
4575 JNIEnv *env = gst_amc_jni_get_env ();
4576 GError *err = NULL;
4577 jstring white_balance;
4578
4579 white_balance = _white_balance_to_jstring (value);
4580 if (!white_balance)
4581 return FALSE;
4582
4583 gst_amc_jni_call_void_method (env, &err, self->object,
4584 android_hardware_camera_parameters.setWhiteBalance, white_balance);
4585 if (err) {
4586 GST_ERROR
4587 ("Failed to call android.hardware.Camera.Parameters.setWhiteBalance: %s",
4588 err->message);
4589 g_clear_error (&err);
4590 return FALSE;
4591 }
4592
4593 return TRUE;
4594 }
4595
4596 gboolean
gst_ahc_parameters_set_zoom(GstAHCParameters * self,gint value)4597 gst_ahc_parameters_set_zoom (GstAHCParameters * self, gint value)
4598 {
4599 JNIEnv *env = gst_amc_jni_get_env ();
4600 GError *err = NULL;
4601
4602 gst_amc_jni_call_void_method (env, &err, self->object,
4603 android_hardware_camera_parameters.setZoom, value);
4604 if (err) {
4605 GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setZoom: %s",
4606 err->message);
4607 g_clear_error (&err);
4608 return FALSE;
4609 }
4610
4611 return TRUE;
4612 }
4613
4614 gboolean
gst_ahc_parameters_unflatten(GstAHCParameters * self,const gchar * flattened)4615 gst_ahc_parameters_unflatten (GstAHCParameters * self, const gchar * flattened)
4616 {
4617 JNIEnv *env = gst_amc_jni_get_env ();
4618 GError *err = NULL;
4619 jstring v_str = NULL;
4620 gboolean ret = TRUE;
4621
4622 v_str = (*env)->NewStringUTF (env, flattened);
4623 if (v_str == NULL)
4624 return FALSE;
4625
4626 gst_amc_jni_call_void_method (env, &err, self->object,
4627 android_hardware_camera_parameters.unflatten, v_str);
4628 if (err) {
4629 GST_ERROR
4630 ("Failed to call android.hardware.Camera.Parameters.unflatten: %s",
4631 err->message);
4632 g_clear_error (&err);
4633 ret = FALSE;
4634 }
4635
4636 gst_amc_jni_object_local_unref (env, self->object);
4637
4638 return ret;
4639 }
4640
4641 void
gst_ahc_parameters_free(GstAHCParameters * self)4642 gst_ahc_parameters_free (GstAHCParameters * self)
4643 {
4644 JNIEnv *env = gst_amc_jni_get_env ();
4645
4646 g_return_if_fail (self != NULL);
4647 g_return_if_fail (self->object != NULL);
4648
4649 GST_DEBUG ("freeing parameters %p", self->object);
4650
4651 gst_amc_jni_object_unref (env, self->object);
4652 g_slice_free (GstAHCParameters, self);
4653 }
4654