Merge branch 'upstream/1.16' into tizen_gst_1.16.2
[platform/upstream/gst-plugins-base.git] / gst-libs / gst / video / cameracontrol.h
1 /*
2  * GStreamer Camera Control Interface
3  *
4  * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd.
5  *
6  * Contact: Jeongmo Yang <jm80.yang@samsung.com>
7  *
8  * This library is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU Lesser General Public License as published by the
10  * Free Software Foundation; either version 2.1 of the License, or (at your option)
11  * any later version.
12  *
13  * This library is distributed in the hope that it will be useful, but WITHOUT ANY
14  * WARRANTY; without even the implied warranty of MERCHANTABILITY or
15  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
16  * License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public License
19  * along with this library; if not, write to the Free Software Foundation, Inc., 51
20  * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21  *
22  */
23
24 /* ===========================================================================================
25 EDIT HISTORY FOR MODULE
26
27         This section contains comments describing changes made to the module.
28         Notice that changes are listed in reverse chronological order.
29
30 when            who                                                     what, where, why
31 ---------       ------------------------        ------------------------------------------------------
32 12/09/08        jm80.yang@samsung.com           Created
33
34 =========================================================================================== */
35
36 #ifndef __GST_CAMERA_CONTROL_H__
37 #define __GST_CAMERA_CONTROL_H__
38
39 #include <gst/gst.h>
40 #include <gst/video/video-prelude.h>
41 #include <gst/video/cameracontrolchannel.h>
42 //#include <gst/interfaces/interfaces-enumtypes.h>
43
44 G_BEGIN_DECLS
45
46 #define GST_TYPE_CAMERA_CONTROL \
47         (gst_camera_control_get_type())
48 #define GST_CAMERA_CONTROL(obj) \
49     (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_CAMERA_CONTROL, GstCameraControl))
50 #define GST_CAMERA_CONTROL_GET_CLASS(inst) \
51         (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GST_TYPE_CAMERA_CONTROL, GstCameraControlClass))
52 #define GST_CAMERA_CONTROL_CLASS(klass) \
53         (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_CAMERA_CONTROL, GstCameraControlClass))
54 #define GST_IS_CAMERA_CONTROL(obj) \
55     (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_CAMERA_CONTROL))
56 #define GST_IS_CAMERA_CONTROL_CLASS(klass) \
57         (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_CAMERA_CONTROL))
58 #define GST_CAMERA_CONTROL_TYPE(klass) (klass->camera_control_type)
59
60
61 typedef struct _GstCameraControl GstCameraControl;
62
63 typedef enum
64 {
65         // TODO : V4L2 Extend
66         GST_CAMERA_CONTROL_HARDWARE,
67         GST_CAMERA_CONTROL_SOFTWARE
68 } GstCameraControlType;
69
70 /* enumerations for Camera control Exposure types */
71 typedef enum
72 {
73         GST_CAMERA_CONTROL_F_NUMBER,
74         GST_CAMERA_CONTROL_SHUTTER_SPEED,
75         GST_CAMERA_CONTROL_ISO,
76         GST_CAMERA_CONTROL_PROGRAM_MODE,
77         GST_CAMERA_CONTROL_EXPOSURE_MODE,
78         GST_CAMERA_CONTROL_EXPOSURE_VALUE
79 } GstCameraControlExposureType;
80
81 /* enumerations for Camera control Capture mode types */
82 typedef enum
83 {
84         GST_CAMERA_CONTROL_CAPTURE_MODE,
85         GST_CAMERA_CONTROL_OUTPUT_MODE,
86         GST_CAMERA_CONTROL_FRAME_COUNT,
87         GST_CAMERA_CONTROL_JPEG_QUALITY
88 } GstCameraControlCaptureModeType;
89
90 /* enumerations for Camera control Strobe types */
91 typedef enum
92 {
93         GST_CAMERA_CONTROL_STROBE_CONTROL,
94         GST_CAMERA_CONTROL_STROBE_CAPABILITIES,
95         GST_CAMERA_CONTROL_STROBE_MODE,
96         GST_CAMERA_CONTROL_STROBE_STATUS,
97         GST_CAMERA_CONTROL_STROBE_EV
98 } GstCameraControlStrobeType;
99
100 /* enumerations for Camera control Face detection types */
101 typedef enum
102 {
103         GST_CAMERA_CONTROL_FACE_DETECT_MODE,
104         GST_CAMERA_CONTROL_FACE_DETECT_NUMBER,
105         GST_CAMERA_CONTROL_FACE_FOCUS_SELECT,
106         GST_CAMERA_CONTROL_FACE_SELECT_NUMBER,
107         GST_CAMERA_CONTROL_FACE_DETECT_STATUS
108 } GstCameraControlFaceDetectType;
109
110 /* enumerations for Camera control Zoom types */
111 typedef enum
112 {
113         GST_CAMERA_CONTROL_DIGITAL_ZOOM,
114         GST_CAMERA_CONTROL_OPTICAL_ZOOM
115 } GstCameraControlZoomType;
116
117 /* enumerations for Camera control Part color */
118 typedef enum
119 {
120         GST_CAMERA_CONTROL_PART_COLOR_SRC,
121         GST_CAMERA_CONTROL_PART_COLOR_DST,
122         GST_CAMERA_CONTROL_PART_COLOR_MODE
123 } GstCameraControlPartColorType;
124
125 /* enumerations for Camera capture command */
126 typedef enum
127 {
128         GST_CAMERA_CONTROL_CAPTURE_COMMAND_NONE,
129         GST_CAMERA_CONTROL_CAPTURE_COMMAND_START,
130         GST_CAMERA_CONTROL_CAPTURE_COMMAND_STOP,
131         GST_CAMERA_CONTROL_CAPTURE_COMMAND_STOP_MULTISHOT
132 } GstCameraControlCaptureCommand;
133
134 /* enumerations for Camera record command */
135 typedef enum
136 {
137         GST_CAMERA_CONTROL_RECORD_COMMAND_NONE,
138         GST_CAMERA_CONTROL_RECORD_COMMAND_START,
139         GST_CAMERA_CONTROL_RECORD_COMMAND_STOP
140 } GstCameraControlRecordCommand;
141
142 /////////////////////////////////
143 //  For Query functionalities  //
144 //  For Querying capabilities  //
145 /////////////////////////////////
146 #define GST_CAMERA_CONTROL_MAX_NUM_FMT_DESC        32
147 #define GST_CAMERA_CONTROL_MAX_NUM_RESOLUTION      32
148 #define GST_CAMERA_CONTROL_MAX_NUM_AVAILABLE_TPF   16
149 #define GST_CAMERA_CONTROL_MAX_NUM_AVAILABLE_FPS   16
150 #define GST_CAMERA_CONTROL_MAX_NUM_CTRL_LIST_INFO  64
151 #define GST_CAMERA_CONTROL_MAX_NUM_CTRL_MENU       64
152 #define GST_CAMERA_CONTROL_MAX_NUM_DETECTED_FACES  16
153 #define GST_CAMERA_CONTROL_MAX_SZ_CTRL_NAME_STRING 32
154 #define GST_CAMERA_CONTROL_MAX_SZ_DEV_NAME_STRING  32
155
156 /*! @struct GstCameraControlFracType
157  *  @brief For timeperframe as fraction type
158  *  Elapse time consumed by one frame, reverse of FPS
159  */
160 typedef struct _GstCameraControlFracType {
161         gint num;
162         gint den;
163 } GstCameraControlFracType;
164
165 /*! @struct GstCameraControlRectType
166  *  @brief For touch auto focusing area and face detection area
167  */
168 typedef struct _GstCameraControlRectType {
169         gint x;
170         gint y;
171         gint width;
172         gint height;
173 } GstCameraControlRectType;
174
175 /*! @struct GstCameraControlResolutionType
176  *  @brief For querying supported resolutions
177  */
178 typedef struct _GstCameraControlResolutionType {
179     gint w;
180     gint h;
181
182     /* Available time per frame(tpf) as each pixelformat */
183     gint num_avail_tpf;
184     GstCameraControlFracType tpf[GST_CAMERA_CONTROL_MAX_NUM_AVAILABLE_TPF];
185 } GstCameraControlResolutionType;
186
187 /*! @struct GstCameraControlFmtDescType
188  *  @brief For querying supported format type
189  */
190 typedef struct _GstCameraControlFmtDescType {
191     /* fourcc name of each pixelformat */
192     guint fcc;
193     gint fcc_use;
194
195     /* Available resolutions as each pixelformat */
196     gint num_resolution;
197     GstCameraControlResolutionType resolutions[GST_CAMERA_CONTROL_MAX_NUM_RESOLUTION];
198 } GstCameraControlFmtDescType;
199
200 /*! @struct GstCameraControlCapsInfoType
201  *  @brief For querying image input capabilities
202  */
203 typedef struct _GstCameraControlCapsInfoType {
204     char dev_name[GST_CAMERA_CONTROL_MAX_SZ_DEV_NAME_STRING];
205     int input_idx;
206     gint num_fmt_desc;
207     GstCameraControlFmtDescType fmt_desc[GST_CAMERA_CONTROL_MAX_NUM_FMT_DESC];
208
209     int num_preview_resolution;
210     int preview_resolution_width[GST_CAMERA_CONTROL_MAX_NUM_RESOLUTION];
211     int preview_resolution_height[GST_CAMERA_CONTROL_MAX_NUM_RESOLUTION];
212
213     int num_capture_resolution;
214     int capture_resolution_width[GST_CAMERA_CONTROL_MAX_NUM_RESOLUTION];
215     int capture_resolution_height[GST_CAMERA_CONTROL_MAX_NUM_RESOLUTION];
216
217     int num_preview_fmt;
218     unsigned int preview_fmt[GST_CAMERA_CONTROL_MAX_NUM_FMT_DESC];
219
220     int num_capture_fmt;
221     unsigned int capture_fmt[GST_CAMERA_CONTROL_MAX_NUM_FMT_DESC];
222
223     int num_fps;
224     GstCameraControlFracType fps[GST_CAMERA_CONTROL_MAX_NUM_AVAILABLE_FPS];
225 } GstCameraControlCapsInfoType;
226
227 /*! @struct GstCameraControlFaceInfo
228  *  @brief For face information
229  */
230 typedef struct _GstCameraControlFaceInfo {
231         int id;
232         int score;
233         GstCameraControlRectType rect;
234 } GstCameraControlFaceInfo;
235
236 /*! @struct GstCameraControlFaceDetectInfo
237  *  @brief For face detect information
238  */
239 typedef struct _GstCameraControlFaceDetectInfo {
240         int num_of_faces;
241         GstCameraControlFaceInfo face_info[GST_CAMERA_CONTROL_MAX_NUM_DETECTED_FACES];
242 } GstCameraControlFaceDetectInfo;
243
244 /////////////////////////////
245 //  For Querying controls  //
246 /////////////////////////////
247 enum {
248     GST_CAMERA_CTRL_TYPE_RANGE = 0,
249     GST_CAMERA_CTRL_TYPE_BOOL,
250     GST_CAMERA_CTRL_TYPE_ARRAY,
251     GST_CAMERA_CTRL_TYPE_UNKNOWN,
252     GST_CAMERA_CTRL_TYPE_NUM,
253 };
254
255 /*! @struct GstCameraControlCtrlMenuType
256  *  @brief For querying menu of specified controls
257  */
258 typedef struct _GstCameraControlCtrlMenuType {
259     gint menu_index;
260     gchar menu_name[GST_CAMERA_CONTROL_MAX_SZ_CTRL_NAME_STRING];
261 } GstCameraControlCtrlMenuType;
262
263 /*! @struct GstCameraControlCtrlInfoType
264  *  @brief For querying controls detail
265  */
266 typedef struct _GstCameraControlCtrlInfoType {
267     gint avsys_ctrl_id;
268     gint v4l2_ctrl_id;
269     gint ctrl_type;
270     gchar ctrl_name[GST_CAMERA_CONTROL_MAX_SZ_CTRL_NAME_STRING];
271     gint min;
272     gint max;
273     gint step;
274     gint default_val;
275     gint num_ctrl_menu;
276     GstCameraControlCtrlMenuType ctrl_menu[GST_CAMERA_CONTROL_MAX_NUM_CTRL_MENU];
277 } GstCameraControlCtrlInfoType;
278
279 /*! @struct GstCameraControlCtrlListInfoType
280  *  @brief For querying controls
281  */
282 typedef struct _GstCameraControlCtrlListInfoType {
283     gint num_ctrl_list_info;
284     GstCameraControlCtrlInfoType ctrl_info[GST_CAMERA_CONTROL_MAX_NUM_CTRL_LIST_INFO];
285 } GstCameraControlCtrlListInfoType;
286
287 /* capabilities field */
288 #define GST_CAMERA_STROBE_CAP_NONE              0x0000  /* No strobe supported */
289 #define GST_CAMERA_STROBE_CAP_OFF               0x0001  /* Always flash off mode */
290 #define GST_CAMERA_STROBE_CAP_ON                0x0002  /* Always use flash light mode */
291 #define GST_CAMERA_STROBE_CAP_AUTO              0x0004  /* Flashlight works automatic */
292 #define GST_CAMERA_STROBE_CAP_REDEYE            0x0008  /* Red-eye reduction */
293 #define GST_CAMERA_STROBE_CAP_SLOWSYNC          0x0010  /* Slow sync */
294 #define GST_CAMERA_STROBE_CAP_FRONT_CURTAIN     0x0020  /* Front curtain */
295 #define GST_CAMERA_STROBE_CAP_REAR_CURTAIN      0x0040  /* Rear curtain */
296 #define GST_CAMERA_STROBE_CAP_PERMANENT         0x0080  /* keep turned on until turning off */
297 #define GST_CAMERA_STROBE_CAP_EXTERNAL          0x0100  /* use external strobe */
298
299 typedef struct _GstCameraControlExtraInfoType {
300     guint strobe_caps;                                   /* Use above caps field */
301     guint detection_caps;                                /* Just boolean */
302     guint reserved[4];
303 } GstCameraControlExtraInfoType;
304 /////////////////////////////////////
305 //  END For Query functionalities  //
306 /////////////////////////////////////
307
308
309 /* structure for Camera control EXIF information */
310 typedef struct _GstCameraControlExifInfo {
311         /* Dynamic value */
312         guint32 exposure_time_numerator;    /* Exposure time, given in seconds */
313         guint32 exposure_time_denominator;
314         gint shutter_speed_numerator;       /* Shutter speed, given in APEX(Additive System Photographic Exposure) */
315         gint shutter_speed_denominator;
316         gint brigtness_numerator;           /* Value of brightness, before firing flash, given in APEX value */
317         gint brightness_denominator;
318         guint16 iso;                        /* Sensitivity value of sensor */
319         guint16 flash;                      /* Whether flash is fired(1) or not(0) */
320         gint metering_mode;                 /* metering mode in EXIF 2.2 */
321         gint exif_image_width;              /* Size of image */
322         gint exif_image_height;
323         gint exposure_bias_in_APEX;         /* Exposure bias in APEX standard */
324         gint software_used;                 /* Firmware S/W version */
325
326         /* Fixed value */
327         gint component_configuration;       /* color components arrangement */
328         gint colorspace;                    /* colorspace information */
329         gint focal_len_numerator;           /* Lens focal length */
330         gint focal_len_denominator;
331         gint aperture_f_num_numerator;      /* Aperture value */
332         gint aperture_f_num_denominator;
333         gint aperture_in_APEX;              /* Aperture value in APEX standard */
334         gint max_lens_aperture_in_APEX;     /* Max aperture value in APEX standard */
335 } GstCameraControlExifInfo;
336
337 /* structure for camera control class */
338 typedef struct _GstCameraControlClass {
339         GTypeInterface klass;
340         GstCameraControlType camera_control_type;
341
342         /* virtual functions */
343         const GList*    (*list_channels)               (GstCameraControl *control);
344         gboolean        (*set_value)                   (GstCameraControl *control, GstCameraControlChannel *control_channel, gint value);
345         gboolean        (*get_value)                   (GstCameraControl *control, GstCameraControlChannel *control_channel, gint *value);
346         gboolean        (*set_exposure)                (GstCameraControl *control, gint type, gint value1, gint value2);
347         gboolean        (*get_exposure)                (GstCameraControl *control, gint type, gint *value1, gint *value2);
348         gboolean        (*set_capture_mode)            (GstCameraControl *control, gint type, gint value);
349         gboolean        (*get_capture_mode)            (GstCameraControl *control, gint type, gint *value);
350         gboolean        (*set_strobe)                  (GstCameraControl *control, gint type, gint value);
351         gboolean        (*get_strobe)                  (GstCameraControl *control, gint type, gint *value);
352         gboolean        (*set_detect)                  (GstCameraControl *control, gint type, gint value);
353         gboolean        (*get_detect)                  (GstCameraControl *control, gint type, gint *value);
354         gboolean        (*set_zoom)                    (GstCameraControl *control, gint type, gint value);
355         gboolean        (*get_zoom)                    (GstCameraControl *control, gint type, gint *value);
356         gboolean        (*set_focus)                   (GstCameraControl *control, gint mode, gint range);
357         gboolean        (*get_focus)                   (GstCameraControl *control, gint *mode, gint *range);
358         gboolean        (*start_auto_focus)            (GstCameraControl *control);
359         gboolean        (*stop_auto_focus)             (GstCameraControl *control);
360         gboolean        (*set_focus_level)             (GstCameraControl *control, gint manual_level);
361         gboolean        (*get_focus_level)             (GstCameraControl *control, gint *manual_level);
362         gboolean        (*set_auto_focus_area)         (GstCameraControl *control, GstCameraControlRectType rect);
363         gboolean        (*get_auto_focus_area)         (GstCameraControl *control, GstCameraControlRectType *rect);
364         gboolean        (*set_wdr)                     (GstCameraControl *control, gint value);
365         gboolean        (*get_wdr)                     (GstCameraControl *control, gint *value);
366         gboolean        (*set_ahs)                     (GstCameraControl *control, gint value);
367         gboolean        (*get_ahs)                     (GstCameraControl *control, gint *value);
368         gboolean        (*set_part_color)              (GstCameraControl *control, gint type, gint value);
369         gboolean        (*get_part_color)              (GstCameraControl *control, gint type, gint *value);
370         gboolean        (*get_exif_info)               (GstCameraControl *control, GstCameraControlExifInfo *info);
371         gboolean        (*get_basic_dev_info)          (GstCameraControl *control, gint dev_id, GstCameraControlCapsInfoType *info);
372         gboolean        (*get_misc_dev_info)           (GstCameraControl *control, gint dev_id, GstCameraControlCtrlListInfoType *info);
373         gboolean        (*get_extra_dev_info)          (GstCameraControl *control, gint dev_id, GstCameraControlExtraInfoType *info);
374         void            (*set_capture_command)         (GstCameraControl *control, GstCameraControlCaptureCommand cmd);
375         void            (*set_record_command)          (GstCameraControl *control, GstCameraControlRecordCommand cmd);
376         gboolean        (*start_face_zoom)             (GstCameraControl *control, gint x, gint y, gint zoom_level);
377         gboolean        (*stop_face_zoom)              (GstCameraControl *control);
378         gboolean        (*set_ae_lock)                 (GstCameraControl *control, gboolean lock);
379         gboolean        (*get_ae_lock)                 (GstCameraControl *control, gboolean *lock);
380         gboolean        (*set_awb_lock)                (GstCameraControl *control, gboolean lock);
381         gboolean        (*get_awb_lock)                (GstCameraControl *control, gboolean *lock);
382         gboolean        (*set_user_buffer_fd)          (GstCameraControl *control, int *fds, int number);
383
384         /* signals */
385         void (* value_changed)                          (GstCameraControl *control, GstCameraControlChannel *channel, gint value);
386 } GstCameraControlClass;
387
388 GST_VIDEO_API
389 GType gst_camera_control_get_type(void);
390
391 GST_VIDEO_API
392 const GList*    gst_camera_control_list_channels        (GstCameraControl *control);
393
394 GST_VIDEO_API
395 gboolean        gst_camera_control_set_value            (GstCameraControl *control, GstCameraControlChannel *control_channel, gint value);
396
397 GST_VIDEO_API
398 gboolean        gst_camera_control_get_value            (GstCameraControl *control, GstCameraControlChannel *control_channel, gint *value);
399
400 GST_VIDEO_API
401 gboolean        gst_camera_control_set_exposure         (GstCameraControl *control, gint type, gint value1, gint value2);
402
403 GST_VIDEO_API
404 gboolean        gst_camera_control_get_exposure         (GstCameraControl *control, gint type, gint *value1, gint *value2);
405
406 GST_VIDEO_API
407 gboolean        gst_camera_control_set_capture_mode     (GstCameraControl *control, gint type, gint value);
408
409 GST_VIDEO_API
410 gboolean        gst_camera_control_get_capture_mode     (GstCameraControl *control, gint type, gint *value);
411
412 GST_VIDEO_API
413 gboolean        gst_camera_control_set_strobe           (GstCameraControl *control, gint type, gint value);
414
415 GST_VIDEO_API
416 gboolean        gst_camera_control_get_strobe           (GstCameraControl *control, gint type, gint *value);
417
418 GST_VIDEO_API
419 gboolean        gst_camera_control_set_detect           (GstCameraControl *control, gint type, gint value);
420
421 GST_VIDEO_API
422 gboolean        gst_camera_control_get_detect           (GstCameraControl *control, gint type, gint *value);
423
424 GST_VIDEO_API
425 gboolean        gst_camera_control_set_zoom             (GstCameraControl *control, gint type, gint value);
426
427 GST_VIDEO_API
428 gboolean        gst_camera_control_get_zoom             (GstCameraControl *control, gint type, gint *value);
429
430 GST_VIDEO_API
431 gboolean        gst_camera_control_set_focus            (GstCameraControl *control, gint mode, gint range);
432
433 GST_VIDEO_API
434 gboolean        gst_camera_control_get_focus            (GstCameraControl *control, gint *mode, gint *range);
435
436 GST_VIDEO_API
437 gboolean        gst_camera_control_start_auto_focus     (GstCameraControl *control);
438
439 GST_VIDEO_API
440 gboolean        gst_camera_control_stop_auto_focus      (GstCameraControl *control);
441
442 GST_VIDEO_API
443 gboolean        gst_camera_control_set_focus_level      (GstCameraControl *control, gint manual_level);
444
445 GST_VIDEO_API
446 gboolean        gst_camera_control_get_focus_level      (GstCameraControl *control, gint *manual_level);
447
448 GST_VIDEO_API
449 gboolean        gst_camera_control_set_auto_focus_area  (GstCameraControl *control, GstCameraControlRectType rect);
450
451 GST_VIDEO_API
452 gboolean        gst_camera_control_get_auto_focus_area  (GstCameraControl *control, GstCameraControlRectType *rect);
453
454 GST_VIDEO_API
455 gboolean        gst_camera_control_set_wdr              (GstCameraControl *control, gint value);
456
457 GST_VIDEO_API
458 gboolean        gst_camera_control_get_wdr              (GstCameraControl *control, gint *value);
459
460 GST_VIDEO_API
461 gboolean        gst_camera_control_set_ahs              (GstCameraControl *control, gint value);
462
463 GST_VIDEO_API
464 gboolean        gst_camera_control_get_ahs              (GstCameraControl *control, gint *value);
465
466 GST_VIDEO_API
467 gboolean        gst_camera_control_set_part_color       (GstCameraControl *control, gint type, gint value);
468
469 GST_VIDEO_API
470 gboolean        gst_camera_control_get_part_color       (GstCameraControl *control, gint type, gint *value);
471
472 GST_VIDEO_API
473 gboolean        gst_camera_control_get_exif_info        (GstCameraControl *control, GstCameraControlExifInfo *info);
474
475 GST_VIDEO_API
476 gboolean        gst_camera_control_get_basic_dev_info   (GstCameraControl *control, gint dev_id, GstCameraControlCapsInfoType *info);
477
478 GST_VIDEO_API
479 gboolean        gst_camera_control_get_misc_dev_info    (GstCameraControl *control, gint dev_id, GstCameraControlCtrlListInfoType *info);
480
481 GST_VIDEO_API
482 gboolean        gst_camera_control_get_extra_dev_info   (GstCameraControl *control, gint dev_id, GstCameraControlExtraInfoType *info);
483
484 GST_VIDEO_API
485 void            gst_camera_control_set_capture_command  (GstCameraControl *control, GstCameraControlCaptureCommand cmd);
486
487 GST_VIDEO_API
488 void            gst_camera_control_set_record_command   (GstCameraControl *control, GstCameraControlRecordCommand cmd);
489
490 GST_VIDEO_API
491 gboolean        gst_camera_control_start_face_zoom      (GstCameraControl *control, gint x, gint y, gint zoom_level);
492
493 GST_VIDEO_API
494 gboolean        gst_camera_control_stop_face_zoom       (GstCameraControl *control);
495
496 GST_VIDEO_API
497 gboolean        gst_camera_control_set_ae_lock          (GstCameraControl *control, gboolean lock);
498
499 GST_VIDEO_API
500 gboolean        gst_camera_control_get_ae_lock          (GstCameraControl *control, gboolean *lock);
501
502 GST_VIDEO_API
503 gboolean        gst_camera_control_set_awb_lock         (GstCameraControl *control, gboolean lock);
504
505 GST_VIDEO_API
506 gboolean        gst_camera_control_get_awb_lock         (GstCameraControl *control, gboolean *lock);
507
508 GST_VIDEO_API
509 gboolean        gst_camera_control_set_user_buffer_fd   (GstCameraControl *control, int *fds, int number);
510
511 /* trigger signal */
512 GST_VIDEO_API
513 void            gst_camera_control_value_changed        (GstCameraControl *control, GstCameraControlChannel *control_channel, gint value);
514
515 G_END_DECLS
516
517 #endif /* __GST_CAMERA_CONTROL_H__ */