5f070e01aca91a3057da0d144aeefac25097299a
[platform/core/api/camera.git] / include / camera.h
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef __TIZEN_MULTIMEDIA_CAMERA_H__
18 #define __TIZEN_MULTIMEDIA_CAMERA_H__
19
20 #include <tizen.h>
21 #include <media_packet.h>
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 /**
28  * @file camera.h
29  * @brief This file contains the Camera API, related structures and enumerations.
30  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
31  */
32
33 /**
34  * @addtogroup CAPI_MEDIA_CAMERA_MODULE
35  * @{
36  */
37
38 #define CAMERA_ERROR_CLASS          TIZEN_ERROR_CAMERA | 0x00
39
40 /**
41  * @brief Enumeration for the error codes of Camera.
42  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
43  */
44 typedef enum {
45         CAMERA_ERROR_NONE                   = TIZEN_ERROR_NONE,                     /**< Successful */
46         CAMERA_ERROR_INVALID_PARAMETER      = TIZEN_ERROR_INVALID_PARAMETER,        /**< Invalid parameter */
47         CAMERA_ERROR_INVALID_STATE          = CAMERA_ERROR_CLASS | 0x02,            /**< Invalid state */
48         CAMERA_ERROR_OUT_OF_MEMORY          = TIZEN_ERROR_OUT_OF_MEMORY,            /**< Out of memory */
49         CAMERA_ERROR_DEVICE                 = CAMERA_ERROR_CLASS | 0x04,            /**< Device error */
50         CAMERA_ERROR_INVALID_OPERATION      = TIZEN_ERROR_INVALID_OPERATION,        /**< Internal error */
51         CAMERA_ERROR_SECURITY_RESTRICTED    = CAMERA_ERROR_CLASS | 0x07,            /**< Restricted by security system policy */
52         CAMERA_ERROR_DEVICE_BUSY            = CAMERA_ERROR_CLASS | 0x08,            /**< The device is using another application or working on some operation */
53         CAMERA_ERROR_DEVICE_NOT_FOUND       = CAMERA_ERROR_CLASS | 0x09,            /**< No camera device */
54         CAMERA_ERROR_ESD                    = CAMERA_ERROR_CLASS | 0x0c,            /**< ESD situation */
55         CAMERA_ERROR_PERMISSION_DENIED      = TIZEN_ERROR_PERMISSION_DENIED,        /**< The access to the resources can not be granted*/
56         CAMERA_ERROR_NOT_SUPPORTED          = TIZEN_ERROR_NOT_SUPPORTED,            /**< The feature is not supported */
57         CAMERA_ERROR_RESOURCE_CONFLICT      = CAMERA_ERROR_CLASS | 0x0d,            /**< Blocked by resource conflict (Since 3.0) */
58         CAMERA_ERROR_SERVICE_DISCONNECTED   = CAMERA_ERROR_CLASS | 0x0e,            /**< Socket connection lost (Since 3.0) */
59 } camera_error_e;
60
61 /**
62  * @brief Enumeration for the camera state.
63  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
64  */
65 typedef enum {
66         CAMERA_STATE_NONE,       /**< Before creating */
67         CAMERA_STATE_CREATED,    /**< Created, but not initialized yet */
68         CAMERA_STATE_PREVIEW,    /**< Preview */
69         CAMERA_STATE_CAPTURING,  /**< While capturing */
70         CAMERA_STATE_CAPTURED    /**< After capturing */
71 } camera_state_e;
72
73 /**
74  * @brief Enumeration for the camera device state.
75  * @since_tizen 3.0
76  */
77 typedef enum {
78         CAMERA_DEVICE_STATE_NULL,       /**< Not opened */
79         CAMERA_DEVICE_STATE_OPENED,     /**< Opened */
80         CAMERA_DEVICE_STATE_WORKING     /**< Now previewing or capturing or is being used for video recording */
81 } camera_device_state_e;
82
83 /**
84  * @brief Enumeration for the camera device.
85  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
86  */
87 typedef enum {
88         CAMERA_DEVICE_CAMERA0 = 0, /**< Primary camera */
89         CAMERA_DEVICE_CAMERA1,     /**< Secondary camera */
90         CAMERA_DEVICE_CAMERA2,     /**< Third camera (Since 5.0) */
91         CAMERA_DEVICE_CAMERA3,     /**< 4th camera (Since 5.0) */
92         CAMERA_DEVICE_CAMERA4,     /**< 5th camera (Since 5.0) */
93         CAMERA_DEVICE_CAMERA5,     /**< 6th camera (Since 5.0) */
94         CAMERA_DEVICE_CAMERA6,     /**< 7th camera (Since 5.0) */
95         CAMERA_DEVICE_CAMERA7,     /**< 8th camera (Since 5.0) */
96         CAMERA_DEVICE_CAMERA8,     /**< 9th camera (Since 5.0) */
97         CAMERA_DEVICE_CAMERA9      /**< 10th camera (Since 5.0) */
98 } camera_device_e;
99
100 /**
101  * @brief Enumeration for the camera pixel format.
102  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
103  * @remarks If #CAMERA_PIXEL_FORMAT_INVZ is set, the type of display should be #CAMERA_DISPLAY_TYPE_NONE. \n
104  *          Otherwise, camera_start_preview() will return #CAMERA_ERROR_INVALID_OPERATION. (Since 5.0)
105  */
106 typedef enum {
107         CAMERA_PIXEL_FORMAT_INVALID = -1,   /**< Invalid pixel format */
108         CAMERA_PIXEL_FORMAT_NV12,           /**< NV12 pixel format */
109         CAMERA_PIXEL_FORMAT_NV12T,          /**< NV12 Tiled pixel format */
110         CAMERA_PIXEL_FORMAT_NV16,           /**< NV16 pixel format */
111         CAMERA_PIXEL_FORMAT_NV21,           /**< NV21 pixel format */
112         CAMERA_PIXEL_FORMAT_YUYV,           /**< YUYV(YUY2) pixel format */
113         CAMERA_PIXEL_FORMAT_UYVY,           /**< UYVY pixel format */
114         CAMERA_PIXEL_FORMAT_422P,           /**< YUV422(Y:U:V) planar pixel format */
115         CAMERA_PIXEL_FORMAT_I420,           /**< I420 pixel format */
116         CAMERA_PIXEL_FORMAT_YV12,           /**< YV12 pixel format */
117         CAMERA_PIXEL_FORMAT_RGB565,         /**< RGB565 pixel format */
118         CAMERA_PIXEL_FORMAT_RGB888,         /**< RGB888 pixel format */
119         CAMERA_PIXEL_FORMAT_RGBA,           /**< RGBA pixel format */
120         CAMERA_PIXEL_FORMAT_ARGB,           /**< ARGB pixel format */
121         CAMERA_PIXEL_FORMAT_JPEG,           /**< Encoded pixel format */
122         CAMERA_PIXEL_FORMAT_H264 = 15,      /**< Encoded pixel format : H264 (Since 3.0) */
123         CAMERA_PIXEL_FORMAT_INVZ,           /**< Depth pixel format : INVZ (Since 5.0) */
124         CAMERA_PIXEL_FORMAT_MJPEG,          /**< Encoded pixel format : Motion JPEG for preview (Since 6.0) */
125         CAMERA_PIXEL_FORMAT_VP8,            /**< Encoded pixel format : VP8 (Since 6.5) */
126         CAMERA_PIXEL_FORMAT_VP9             /**< Encoded pixel format : VP9 (Since 6.5) */
127 } camera_pixel_format_e;
128
129 /**
130  * @brief Enumeration for the camera display type.
131  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
132  */
133 typedef enum {
134         CAMERA_DISPLAY_TYPE_OVERLAY = 0,    /**< Overlay surface display */
135         CAMERA_DISPLAY_TYPE_EVAS,           /**< Evas object surface display */
136         CAMERA_DISPLAY_TYPE_NONE            /**< This disposes off buffers */
137 } camera_display_type_e;
138
139 /**
140  * @brief Enumeration for the camera policy.
141  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
142  */
143 typedef enum {
144         CAMERA_POLICY_NONE = 0,         /**< None */
145         CAMERA_POLICY_SECURITY = 4,     /**< Security policy */
146         CAMERA_POLICY_RESOURCE_CONFLICT /**< Resource conflict (Since 3.0) */
147 } camera_policy_e;
148
149 /**
150  * @brief Enumeration for the camera rotation type.
151  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
152  */
153 typedef enum {
154         CAMERA_ROTATION_NONE,   /**< No rotation */
155         CAMERA_ROTATION_90,     /**< 90 degree rotation */
156         CAMERA_ROTATION_180,    /**< 180 degree rotation */
157         CAMERA_ROTATION_270,    /**< 270 degree rotation */
158 } camera_rotation_e;
159
160
161 /**
162  * @brief Enumeration for the camera flip type.
163  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
164  */
165 typedef enum {
166         CAMERA_FLIP_NONE,       /**< No Flip */
167         CAMERA_FLIP_HORIZONTAL, /**< Horizontal flip */
168         CAMERA_FLIP_VERTICAL,   /**< Vertical flip */
169         CAMERA_FLIP_BOTH        /**< Horizontal and vertical flip */
170 } camera_flip_e;
171
172 /**
173  * @brief Enumeration for the camera focus state.
174  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
175  */
176 typedef enum {
177         CAMERA_FOCUS_STATE_RELEASED = 0, /**< Focus released */
178         CAMERA_FOCUS_STATE_ONGOING,      /**< Focus in progress */
179         CAMERA_FOCUS_STATE_FOCUSED,      /**< Focus succeeded */
180         CAMERA_FOCUS_STATE_FAILED,       /**< Focus failed */
181 } camera_focus_state_e;
182
183 /**
184  * @brief Enumeration for the facing direction of camera module.
185  * @since_tizen 3.0
186  */
187 typedef enum {
188         CAMERA_FACING_DIRECTION_REAR = 0, /**< Rear */
189         CAMERA_FACING_DIRECTION_FRONT,    /**< Front */
190 } camera_facing_direction_e;
191
192 /**
193  * @brief Enumeration for the current flash state.
194  * @since_tizen 3.0
195  */
196 typedef enum {
197         CAMERA_FLASH_STATE_NOT_USED = 0,  /**< Flash is not used now through camera API */
198         CAMERA_FLASH_STATE_USED,          /**< Flash is used now through camera API */
199 } camera_flash_state_e;
200
201 /**
202  * @brief Enumeration for the device type.
203  * @since_tizen 7.0
204  */
205 typedef enum {
206         CAMERA_DEVICE_TYPE_BUILTIN = 0, /**< Built-in camera */
207         CAMERA_DEVICE_TYPE_USB,         /**< USB camera */
208         CAMERA_DEVICE_TYPE_NETWORK      /**< Network camera */
209 } camera_device_type_e;
210
211 /**
212  * @brief The structure type of the image data.
213  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
214  */
215 typedef struct {
216         unsigned char *data;            /**< The image buffer */
217         unsigned int size;              /**< The size of the buffer */
218         int width;                      /**< The width of the image */
219         int height;                     /**< The height of the image */
220         camera_pixel_format_e format;   /**< The format of the image pixel */
221         unsigned char *exif;            /**< The exif raw data */
222         unsigned int exif_size;         /**< The size of the exif data */
223 } camera_image_data_s;
224
225 /**
226  * @brief The structure type for face detection.
227  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
228  */
229 typedef struct {
230         int id;     /**< The ID of each face */
231         int score;  /**< The confidence level for the detection of the face */
232         int x;      /**< The x coordinates of the face */
233         int y;      /**< The y coordinates of the face */
234         int width;  /**< The width of the face */
235         int height; /**< The height of the face */
236 } camera_detected_face_s;
237
238 /**
239  * @brief The structure type to preview stream data.
240  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
241  */
242 typedef struct {
243         camera_pixel_format_e format;   /**< The format of the frame pixel */
244         int width;                      /**< The width of the frame */
245         int height;                     /**< The height of the frame */
246         int num_of_planes;              /**< The number of planes */
247         unsigned int timestamp;         /**< The timestamp of the frame */
248         union {
249                 struct {
250                         unsigned char *yuv;     /**< The yuv data pointer */
251                         unsigned int size;      /**< The size of data */
252                 } single_plane;             /**< Single plane frame data */
253
254                 struct {
255                         unsigned char *y;       /**< The y data pointer */
256                         unsigned char *uv;      /**< The uv data pointer */
257                         unsigned int y_size;    /**< The size of y data */
258                         unsigned int uv_size;   /**< The size of uv data */
259                 } double_plane;             /**< Double plane frame data */
260
261                 struct {
262                         unsigned char *y;       /**< The y data pointer */
263                         unsigned char *u;       /**< The u data pointer */
264                         unsigned char *v;       /**< The v data pointer */
265                         unsigned int y_size;    /**< The size of y data */
266                         unsigned int u_size;    /**< The size of u data */
267                         unsigned int v_size;    /**< The size of v data */
268                 } triple_plane;             /**< Triple plane frame data */
269
270                 struct {
271                         unsigned char *data;    /**< The encoded data pointer */
272                         unsigned int size;      /**< The size of encoded data */
273                         bool is_delta_frame;    /**< The flag indicating whether it's delta frame or not (Since 6.0) */
274                 } encoded_plane;            /**< Encoded plane frame data */
275
276                 struct {
277                         unsigned char *data;    /**< The depth data pointer */
278                         unsigned int size;      /**< The size of depth data */
279                 } depth_plane;              /**< Depth plane frame data (Since 5.0) */
280
281                 struct {
282                         unsigned char *data;    /**< The RGB data pointer */
283                         unsigned int size;      /**< The size of RGB data */
284                 } rgb_plane;                /**< RGB plane frame data (Since 5.0) */
285         } data;
286 } camera_preview_data_s;
287
288
289 /**
290  * @brief Maximum length of the camera device name.
291  * @since_tizen 7.0
292  */
293 #define CAMERA_DEVICE_NAME_MAX_LENGTH   64
294
295 /**
296  * @brief Maximum length of the camera device ID.
297  * @since_tizen 7.0
298  */
299 #define CAMERA_DEVICE_ID_MAX_LENGTH     64
300
301 /**
302  * @brief The structure type for the camera device.
303  * @since_tizen 7.0
304  */
305 typedef struct _camera_device_s {
306         camera_device_type_e type;                  /**< The type of camera device */
307         camera_device_e index;                      /**< The index of camera device */
308         char name[CAMERA_DEVICE_NAME_MAX_LENGTH];   /**< The name of camera device */
309         char id[CAMERA_DEVICE_ID_MAX_LENGTH];       /**< The ID of camera device */
310         int extra_stream_num;                       /**< The extra preview stream number of camera device */
311 } camera_device_s;
312
313 /**
314  * @brief The Camera handle.
315  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
316  * @see recorder_create_videorecorder()
317  */
318 typedef struct camera_cli_s *camera_h;
319
320 /**
321  * @brief The Camera display handle.
322  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
323  */
324 typedef void *camera_display_h;
325
326 #ifndef GET_DISPLAY
327
328 /**
329  * @brief Gets a display handle.
330  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
331  */
332 #define GET_DISPLAY(x) (void*)(x)
333
334 #endif
335
336 /**
337  * @brief The Camera device manager handle.
338  * @since_tizen 7.0
339  */
340 typedef void *camera_device_manager_h;
341
342 /**
343  * @}
344  */
345
346 /**
347  * @addtogroup CAPI_MEDIA_CAMERA_DISPLAY_MODULE
348  * @{
349  */
350
351 /**
352  * @brief Enumeration for the camera display mode.
353  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
354  */
355 typedef enum {
356         CAMERA_DISPLAY_MODE_LETTER_BOX = 0,       /**< Letter box */
357         CAMERA_DISPLAY_MODE_ORIGIN_SIZE,          /**< Origin size */
358         CAMERA_DISPLAY_MODE_FULL,                 /**< Full screen */
359         CAMERA_DISPLAY_MODE_CROPPED_FULL,         /**< Cropped full screen */
360         CAMERA_DISPLAY_MODE_ORIGIN_OR_LETTER_BOX, /**< Original size or letter box (Since 3.0) */
361         CAMERA_DISPLAY_MODE_CUSTOM_ROI,           /**< Custom ROI (Since 3.0) */
362 } camera_display_mode_e;
363
364 /**
365  * @}
366  */
367
368 /**
369  * @addtogroup CAPI_MEDIA_CAMERA_ATTRIBUTES_MODULE
370  * @{
371  */
372
373 /**
374  * @brief Enumeration for the color tone, which provides the impression of looking through a tinted glass.
375  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
376  */
377 typedef enum {
378         CAMERA_ATTR_EFFECT_NONE = 0,              /**< None */
379         CAMERA_ATTR_EFFECT_MONO,                  /**< Mono */
380         CAMERA_ATTR_EFFECT_SEPIA,                 /**< Sepia */
381         CAMERA_ATTR_EFFECT_NEGATIVE,              /**< Negative */
382         CAMERA_ATTR_EFFECT_BLUE,                  /**< Blue */
383         CAMERA_ATTR_EFFECT_GREEN,                 /**< Green */
384         CAMERA_ATTR_EFFECT_AQUA,                  /**< Aqua */
385         CAMERA_ATTR_EFFECT_VIOLET,                /**< Violet */
386         CAMERA_ATTR_EFFECT_ORANGE,                /**< Orange */
387         CAMERA_ATTR_EFFECT_GRAY,                  /**< Gray */
388         CAMERA_ATTR_EFFECT_RED,                   /**< Red */
389         CAMERA_ATTR_EFFECT_ANTIQUE,               /**< Antique */
390         CAMERA_ATTR_EFFECT_WARM,                  /**< Warm */
391         CAMERA_ATTR_EFFECT_PINK,                  /**< Pink */
392         CAMERA_ATTR_EFFECT_YELLOW,                /**< Yellow */
393         CAMERA_ATTR_EFFECT_PURPLE,                /**< Purple */
394         CAMERA_ATTR_EFFECT_EMBOSS,                /**< Emboss */
395         CAMERA_ATTR_EFFECT_OUTLINE,               /**< Outline */
396         CAMERA_ATTR_EFFECT_SOLARIZATION,          /**< Solarization */
397         CAMERA_ATTR_EFFECT_SKETCH,                /**< Sketch */
398         CAMERA_ATTR_EFFECT_WASHED,                /**< Washed */
399         CAMERA_ATTR_EFFECT_VINTAGE_WARM,          /**< Vintage warm  */
400         CAMERA_ATTR_EFFECT_VINTAGE_COLD,          /**< Vintage cold */
401         CAMERA_ATTR_EFFECT_POSTERIZATION,         /**< Posterization */
402         CAMERA_ATTR_EFFECT_CARTOON,               /**< Cartoon */
403         CAMERA_ATTR_EFFECT_SELECTIVE_RED,         /**< Selective color - Red */
404         CAMERA_ATTR_EFFECT_SELECTIVE_GREEN,       /**< Selective color - Green */
405         CAMERA_ATTR_EFFECT_SELECTIVE_BLUE,        /**< Selective color - Blue */
406         CAMERA_ATTR_EFFECT_SELECTIVE_YELLOW,      /**< Selective color - Yellow */
407         CAMERA_ATTR_EFFECT_SELECTIVE_RED_YELLOW,  /**< Selective color - Red and Yellow */
408         CAMERA_ATTR_EFFECT_OTHER_GRAPHICS,        /**< Other Graphic effects */
409 } camera_attr_effect_mode_e;
410
411 /**
412  * @brief Enumeration for the white balance levels of the camera.
413  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
414  */
415 typedef enum {
416         CAMERA_ATTR_WHITE_BALANCE_NONE = 0,     /**< None */
417         CAMERA_ATTR_WHITE_BALANCE_AUTOMATIC,    /**< Automatic */
418         CAMERA_ATTR_WHITE_BALANCE_DAYLIGHT,     /**< Daylight */
419         CAMERA_ATTR_WHITE_BALANCE_CLOUDY,       /**< Cloudy */
420         CAMERA_ATTR_WHITE_BALANCE_FLUORESCENT,  /**< Fluorescent */
421         CAMERA_ATTR_WHITE_BALANCE_INCANDESCENT, /**< Incandescent */
422         CAMERA_ATTR_WHITE_BALANCE_SHADE,        /**< Shade */
423         CAMERA_ATTR_WHITE_BALANCE_HORIZON,      /**< Horizon */
424         CAMERA_ATTR_WHITE_BALANCE_FLASH,        /**< Flash */
425         CAMERA_ATTR_WHITE_BALANCE_CUSTOM,       /**< Custom */
426 } camera_attr_whitebalance_e;
427
428 /**
429  * @brief Enumeration for the scene mode.
430  * @details The mode of operation can be in daylight, night, or back-light.
431  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
432  */
433 typedef enum {
434         CAMERA_ATTR_SCENE_MODE_NORMAL = 0,     /**< Normal */
435         CAMERA_ATTR_SCENE_MODE_PORTRAIT,       /**< Portrait */
436         CAMERA_ATTR_SCENE_MODE_LANDSCAPE,      /**< Landscape */
437         CAMERA_ATTR_SCENE_MODE_SPORTS,         /**< Sports */
438         CAMERA_ATTR_SCENE_MODE_PARTY_N_INDOOR, /**< Party & indoor */
439         CAMERA_ATTR_SCENE_MODE_BEACH_N_INDOOR, /**< Beach & indoor */
440         CAMERA_ATTR_SCENE_MODE_SUNSET,         /**< Sunset */
441         CAMERA_ATTR_SCENE_MODE_DUSK_N_DAWN,    /**< Dusk & dawn */
442         CAMERA_ATTR_SCENE_MODE_FALL_COLOR,     /**< Fall */
443         CAMERA_ATTR_SCENE_MODE_NIGHT_SCENE,    /**< Night scene */
444         CAMERA_ATTR_SCENE_MODE_FIREWORK,       /**< Firework */
445         CAMERA_ATTR_SCENE_MODE_TEXT,           /**< Text */
446         CAMERA_ATTR_SCENE_MODE_SHOW_WINDOW,    /**< Show window */
447         CAMERA_ATTR_SCENE_MODE_CANDLE_LIGHT,   /**< Candle light */
448         CAMERA_ATTR_SCENE_MODE_BACKLIGHT,      /**< Backlight */
449         CAMERA_ATTR_SCENE_MODE_AQUA,           /**< Aqua */
450 } camera_attr_scene_mode_e;
451
452 /**
453  * @brief Enumeration for the auto focus mode.
454  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
455  */
456 typedef enum {
457         CAMERA_ATTR_AF_NONE = 0,    /**< auto-focus is not set */
458         CAMERA_ATTR_AF_NORMAL,      /**< auto-focus in the normal mode  */
459         CAMERA_ATTR_AF_MACRO,       /**< auto-focus in the macro mode(close distance)  */
460         CAMERA_ATTR_AF_FULL,        /**< auto-focus in the full mode(all range scan, limited by device spec) */
461 } camera_attr_af_mode_e;
462
463 /**
464  * @brief Enumeration for the ISO levels of the camera.
465  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
466  */
467 typedef enum {
468         CAMERA_ATTR_ISO_AUTO = 0, /**< ISO auto mode */
469         CAMERA_ATTR_ISO_50,       /**< ISO 50 */
470         CAMERA_ATTR_ISO_100,      /**< ISO 100 */
471         CAMERA_ATTR_ISO_200,      /**< ISO 200 */
472         CAMERA_ATTR_ISO_400,      /**< ISO 400 */
473         CAMERA_ATTR_ISO_800,      /**< ISO 800 */
474         CAMERA_ATTR_ISO_1600,     /**< ISO 1600 */
475         CAMERA_ATTR_ISO_3200,     /**< ISO 3200 */
476 } camera_attr_iso_e;
477
478 /**
479  * @brief Enumeration for the camera exposure modes.
480  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
481  */
482 typedef enum {
483         CAMERA_ATTR_EXPOSURE_MODE_OFF = 0,   /**< Off */
484         CAMERA_ATTR_EXPOSURE_MODE_ALL,       /**< All mode */
485         CAMERA_ATTR_EXPOSURE_MODE_CENTER,    /**< Center mode */
486         CAMERA_ATTR_EXPOSURE_MODE_SPOT,      /**< Spot mode */
487         CAMERA_ATTR_EXPOSURE_MODE_CUSTOM,    /**< Custom mode */
488 } camera_attr_exposure_mode_e;
489
490 /**
491  * @brief Enumeration for the orientation values of tag.
492  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
493  */
494 typedef enum {
495         CAMERA_ATTR_TAG_ORIENTATION_TOP_LEFT = 1,      /**< Row #0 is at the top, Column #0 is to the left */
496         CAMERA_ATTR_TAG_ORIENTATION_TOP_RIGHT = 2,     /**< Row #0 is at the top, Column #0 is to the right (flipped) */
497         CAMERA_ATTR_TAG_ORIENTATION_BOTTOM_RIGHT = 3,  /**< Row #0 is at the bottom, Column #0 is to the right */
498         CAMERA_ATTR_TAG_ORIENTATION_BOTTOM_LEFT = 4,   /**< Row #0 is at the bottom, Column #0 is to the left (flipped) */
499         CAMERA_ATTR_TAG_ORIENTATION_LEFT_TOP = 5,      /**< Row #0 is to the left, Column #0 is at the top (flipped) */
500         CAMERA_ATTR_TAG_ORIENTATION_RIGHT_TOP = 6,     /**< Row #0 is to the right, Column #0 is at the top */
501         CAMERA_ATTR_TAG_ORIENTATION_RIGHT_BOTTOM = 7,  /**< Row #0 is to the right, Column #0 is at the bottom (flipped) */
502         CAMERA_ATTR_TAG_ORIENTATION_LEFT_BOTTOM = 8,   /**< Row #0 is to the left, Column #0 is at the bottom */
503 } camera_attr_tag_orientation_e;
504
505 /**
506  * @brief Enumeration for the flash mode.
507  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
508  */
509 typedef enum {
510         CAMERA_ATTR_FLASH_MODE_OFF = 0,          /**< Always off */
511         CAMERA_ATTR_FLASH_MODE_ON,               /**< Always splashes */
512         CAMERA_ATTR_FLASH_MODE_AUTO,             /**< Depending on intensity of light, strobe starts to flash */
513         CAMERA_ATTR_FLASH_MODE_REDEYE_REDUCTION, /**< Red eye reduction. Multiple flash before capturing */
514         CAMERA_ATTR_FLASH_MODE_SLOW_SYNC,        /**< Slow sync curtain synchronization */
515         CAMERA_ATTR_FLASH_MODE_FRONT_CURTAIN,    /**< Front curtain synchronization */
516         CAMERA_ATTR_FLASH_MODE_REAR_CURTAIN,     /**< Rear curtain synchronization */
517         CAMERA_ATTR_FLASH_MODE_PERMANENT,        /**< Keep turned on until turning off */
518 } camera_attr_flash_mode_e;
519
520 /**
521  * @brief Enumeration to preview FPS.
522  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
523  */
524 typedef enum {
525         CAMERA_ATTR_FPS_AUTO = 0, /**< AUTO FPS */
526         CAMERA_ATTR_FPS_7 = 7,    /**< 7 FPS */
527         CAMERA_ATTR_FPS_8 = 8,    /**< 8 FPS */
528         CAMERA_ATTR_FPS_15 = 15,  /**< 15 FPS */
529         CAMERA_ATTR_FPS_20 = 20,  /**< 20 FPS */
530         CAMERA_ATTR_FPS_24 = 24,  /**< 24 FPS */
531         CAMERA_ATTR_FPS_25 = 25,  /**< 25 FPS */
532         CAMERA_ATTR_FPS_30 = 30,  /**< 30 FPS */
533         CAMERA_ATTR_FPS_60 = 60,  /**< 60 FPS */
534         CAMERA_ATTR_FPS_90 = 90,  /**< 90 FPS */
535         CAMERA_ATTR_FPS_120 = 120 /**< 120 FPS */
536 } camera_attr_fps_e;
537
538 /**
539  * @brief Enumeration for the theater mode.
540  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
541  */
542 typedef enum {
543         CAMERA_ATTR_THEATER_MODE_DISABLE = 0, /**< Disable theater mode - External display shows same image as device display */
544         CAMERA_ATTR_THEATER_MODE_ENABLE = 2,  /**< Enable theater mode - Preview image is displayed on external display with full screen mode, but preview image is not shown on device display */
545         CAMERA_ATTR_THEATER_MODE_CLONE = 1    /**< Clone mode - Preview image is displayed on external display with full screen mode. Also preview image is shown by the UI on device display */
546 } camera_attr_theater_mode_e;
547
548 /**
549  * @brief Enumeration for HDR capture mode.
550  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
551  */
552 typedef enum {
553         CAMERA_ATTR_HDR_MODE_DISABLE = 0,  /**< Disable HDR capture */
554         CAMERA_ATTR_HDR_MODE_ENABLE,       /**< Enable HDR capture */
555         CAMERA_ATTR_HDR_MODE_KEEP_ORIGINAL /**< Enable HDR capture and keep original image data */
556 } camera_attr_hdr_mode_e;
557
558 /**
559  * @brief Enumeration for PTZ (Pan Tilt Zoom) type.
560  * @since_tizen 3.0
561  */
562 typedef enum {
563         CAMERA_ATTR_PTZ_TYPE_MECHANICAL = 0,  /**< Move the camera device physically */
564         CAMERA_ATTR_PTZ_TYPE_ELECTRONIC       /**< Zoom digitally and move into portion of the image */
565 } camera_attr_ptz_type_e;
566
567 /**
568  * @brief Enumeration for PTZ (Pan Tilt Zoom) movement type.
569  * @since_tizen 3.0
570  */
571 typedef enum {
572         CAMERA_ATTR_PTZ_MOVE_ABSOLUTE = 0,  /**< Move to a specific coordinate position */
573         CAMERA_ATTR_PTZ_MOVE_RELATIVE       /**< Move a specific distance from the current position */
574 } camera_attr_ptz_move_type_e;
575
576
577 /**
578  * @}
579  */
580
581 /**
582  * @addtogroup CAPI_MEDIA_CAMERA_MODULE
583  * @{
584  */
585
586 /**
587  * @brief Called when the camera state is changed.
588  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
589  * @param[in] previous  The previous state of the camera
590  * @param[in] current   The current state of the camera
591  * @param[in] by_policy If @c true the state is changed by policy, otherwise @c false
592  * @param[in] user_data The user data passed from the callback registration function
593  * @pre camera_start_preview(), camera_start_capture() or camera_stop_preview()
594  *      will invoke this callback if you register this callback using camera_set_state_changed_cb().
595  * @see camera_set_state_changed_cb()
596  */
597 typedef void (*camera_state_changed_cb)(camera_state_e previous, camera_state_e current, bool by_policy, void *user_data);
598
599 /**
600  * @brief Called when the camera device state is changed.
601  * @since_tizen 3.0
602  * @param[in] device    The hardware camera type
603  * @param[in] state     The state of the camera device
604  * @param[in] user_data The user data passed from the callback registration function
605  * @see camera_add_device_state_changed_cb()
606  */
607 typedef void (*camera_device_state_changed_cb)(camera_device_e device, camera_device_state_e state, void *user_data);
608
609 /**
610  * @brief Called when the camera is interrupted by policy.
611  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
612  * @remarks This callback is called after interrupt handling is completed.
613  * @param[in] policy    The policy that interrupted the camera
614  * @param[in] previous  The previous state of the camera
615  * @param[in] current   The current state of the camera
616  * @param[in] user_data The user data passed from the callback registration function
617  * @see camera_set_interrupted_cb()
618  */
619 typedef void (*camera_interrupted_cb)(camera_policy_e policy, camera_state_e previous, camera_state_e current, void *user_data);
620
621 /**
622  * @brief Called when the camera interrupt is started by policy.
623  * @since_tizen 4.0
624  * @remarks This callback is called before interrupt handling is started.
625  * @param[in] policy    The policy that is interrupting the camera
626  * @param[in] state     The current state of the camera
627  * @param[in] user_data The user data passed from the callback registration function
628  * @see camera_set_interrupt_started_cb()
629  */
630 typedef void (*camera_interrupt_started_cb)(camera_policy_e policy, camera_state_e state, void *user_data);
631
632 /**
633  * @brief Called when the camera focus state is changed.
634  * @details When the camera auto focus completes or a change to the focus state occurs,
635  *          this callback is invoked. \n \n
636  *          Changes of focus state are as follows: \n
637  *          #CAMERA_FOCUS_STATE_RELEASED -> start focusing -> #CAMERA_FOCUS_STATE_ONGOING -> working ->
638  *          #CAMERA_FOCUS_STATE_FOCUSED or #CAMERA_FOCUS_STATE_FAILED.
639  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
640  *
641  * @param[in] state     The current state of the auto-focus
642  * @param[in] user_data The user data passed from the callback registration function
643  * @pre camera_start_focusing() will invoke this callback if you register it using camera_set_focus_changed_cb().
644  * @see camera_set_focus_changed_cb()
645  * @see camera_unset_focus_changed_cb()
646  * @see camera_start_focusing()
647  * @see camera_cancel_focusing()
648  */
649 typedef void (*camera_focus_changed_cb)(camera_focus_state_e state, void *user_data);
650
651 /**
652  * @brief Called to register for notifications about delivering a copy of the new preview frame when every preview frame is displayed.
653  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
654  *
655  * @remarks This function is issued in the context of internal framework so the UI update code should not be directly invoked.\n
656  *          If the camera is used as a recorder then this callback function won't be called.
657  * @remarks The @a frame should not be released and it's available until the callback returns.
658  *
659  * @param[in] frame     The reference pointer to preview stream data
660  * @param[in] user_data The user data passed from the callback registration function
661  * @pre camera_start_preview() will invoke this callback function if you register this callback using camera_set_preview_cb().
662  * @see camera_start_preview()
663  * @see camera_set_preview_cb()
664  * @see camera_unset_preview_cb()
665  */
666 typedef void (*camera_preview_cb)(camera_preview_data_s *frame, void *user_data);
667
668 /**
669  * @brief Called to register for notifications about delivering media packet when every preview frame is displayed.
670  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
671  *
672  * @remarks This function is issued in the context of internal framework so the UI update code should not be directly invoked.\n
673  *          If the camera is used as a recorder then this callback function won't be called.\n
674  *          and the packet should be released by media_packet_destroy() after use.
675  *
676  * @param[in] pkt       Reference pointer to media packet
677  * @param[in] user_data The user data passed from the callback registration function
678  * @pre camera_start_preview() will invoke this callback function if you register this callback using camera_set_media_packet_preview_cb().
679  * @see camera_start_preview()
680  * @see camera_set_media_packet_preview_cb()
681  * @see camera_unset_media_packet_preview_cb()
682  */
683 typedef void (*camera_media_packet_preview_cb)(media_packet_h pkt, void *user_data);
684
685 /**
686  * @brief Called to get information about image data taken by the camera once per frame while capturing.
687  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
688  *
689  * @remarks This function is issued in the context of internal framework so the UI update code should not be directly invoked.
690  *          You must not call camera_start_preview() within this callback.
691  *
692  * @param[in] image     The image data of the captured picture
693  * @param[in] postview  The image data of the postview
694  * @param[in] thumbnail The image data of the thumbnail (it should be @c NULL if the available thumbnail data does not exist)
695  * @param[in] user_data The user data passed from the callback registration function
696  * @pre camera_start_capture() or camera_start_continuous_capture() will invoke this callback function if it is registered using camera_start_capture() or camera_start_continuous_capture().
697  * @see camera_start_capture()
698  * @see camera_start_continuous_capture()
699  * @see camera_capture_completed_cb()
700  */
701 typedef void (*camera_capturing_cb)(camera_image_data_s *image, camera_image_data_s *postview, camera_image_data_s *thumbnail, void *user_data);
702
703 /**
704  * @brief Called when the camera capturing completes.
705  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
706  *
707  * @remarks The callback is called after camera_capturing_cb() is completed.\n
708  *          If you want to show the user a preview after capturing is finished, \n
709  *          an application can use camera_start_preview() after calling this callback.
710  * @param[in] user_data The user data passed from the callback registration function
711  * @pre This callback function is invoked if it is registered using camera_start_capture() or camera_start_continuous_capture().
712  * @see camera_start_capture()
713  * @see camera_start_continuous_capture()
714  * @see camera_capturing_cb()
715  */
716 typedef void (*camera_capture_completed_cb)(void *user_data);
717
718 /**
719  * @brief Called when an error occurs.
720  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
721  *
722  * @remarks This callback informs about a critical error situation.\n
723  *          When this callback is invoked, the user should release the resource and terminate the application.\n
724  *          In case of errors, one of these codes occur:\n
725  * #CAMERA_ERROR_DEVICE,\n
726  * #CAMERA_ERROR_INVALID_OPERATION,\n
727  * #CAMERA_ERROR_OUT_OF_MEMORY.
728  * @param[in] error         The error code
729  * @param[in] current_state The current state of the camera
730  * @param[in] user_data     The user data passed from the callback registration function
731  * @pre This callback function is invoked if it is registered using camera_set_error_cb().
732  * @see camera_set_error_cb()
733  * @see camera_unset_error_cb()
734  */
735 typedef void (*camera_error_cb)(camera_error_e error, camera_state_e current_state, void *user_data);
736
737 /**
738  * @brief Called when a face is detected in the preview frame.
739  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
740  * @param[in] faces     The detected face array
741  * @param[in] count     The length of the array
742  * @param[in] user_data The user data passed from the callback registration function
743  * @see camera_start_face_detection()
744  */
745 typedef void (*camera_face_detected_cb)(camera_detected_face_s *faces, int count, void *user_data);
746
747 /**
748  * @brief Called when the connection state of a camera device was changed.
749  * @since_tizen 7.0
750  * @param[in] device                    The camera device
751  * @param[in] is_connected              The state of device connection: (@c true = connected, @c false = disconnected)
752  * @param[in] user_data                 The user data passed from the callback registration function
753  * @see camera_device_manager_add_device_connection_changed_cb()
754  * @see camera_device_manager_remove_device_connection_changed_cb()
755  */
756 typedef void (*camera_device_connection_changed_cb)(camera_device_s *device, bool is_connected, void *user_data);
757
758 /**
759  * @brief Called when the extra preview frame is delivered from the camera device.
760  * @since_tizen 7.0
761  * @param[in] frame     The reference pointer to extra preview stream data
762  * @param[in] stream_id The ID of the preview stream
763  * @param[in] user_data The user data passed from the callback registration function
764  * @pre camera_start_preview() will invoke this callback function if you register this callback using camera_set_extra_preview_cb().
765  * @see camera_start_preview()
766  * @see camera_set_extra_preview_cb()
767  * @see camera_unset_extra_preview_cb()
768  */
769 typedef void (*camera_extra_preview_cb)(camera_preview_data_s *frame, int stream_id, void *user_data);
770
771 /**
772  * @}
773  */
774
775 /**
776  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
777  * @{
778  */
779
780 /**
781  * @brief Called once for each supported preview resolution.
782  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
783  * @param[in] width     The preview image width
784  * @param[in] height    The preview image height
785  * @param[in] user_data The user data passed from the foreach function
786  * @return @c true to continue with the next iteration of the loop, \n otherwise @c false to break out of the loop
787  * @pre camera_foreach_supported_preview_resolution() will invoke this callback.
788  * @see camera_foreach_supported_preview_resolution()
789  */
790 typedef bool (*camera_supported_preview_resolution_cb)(int width, int height, void *user_data);
791
792 /**
793  * @brief Called once for each supported capture resolution.
794  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
795  * @param[in] width     The capture resolution width
796  * @param[in] height    The capture resolution height
797  * @param[in] user_data The user data passed from the foreach function
798  * @return @c true to continue with the next iteration of the loop, \n otherwise @c false to break out of the loop
799  * @pre camera_foreach_supported_capture_resolution() will invoke this callback.
800  * @see camera_foreach_supported_capture_resolution()
801  */
802 typedef bool (*camera_supported_capture_resolution_cb)(int width, int height, void *user_data);
803
804 /**
805  * @brief Called once for the pixel format of each supported capture format.
806  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
807  * @param[in] format    The supported pixel format
808  * @param[in] user_data The user data passed from the foreach function
809  * @return @c true to continue with the next iteration of the loop, \n otherwise @c false to break out of the loop
810  * @pre camera_foreach_supported_capture_format() will invoke this callback.
811  * @see camera_foreach_supported_capture_format()
812  */
813 typedef bool (*camera_supported_capture_format_cb)(camera_pixel_format_e format, void *user_data);
814
815 /**
816  * @brief Called once for the pixel format of each supported preview format.
817  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
818  * @param[in] format    The supported preview data format
819  * @param[in] user_data The user data passed from the foreach function
820  * @return @c true to continue with the next iteration of the loop, \n otherwise @c false to break out of the loop
821  * @pre camera_foreach_supported_preview_format() will invoke this callback.
822  * @see camera_foreach_supported_preview_format()
823  */
824 typedef bool (*camera_supported_preview_format_cb)(camera_pixel_format_e format, void *user_data);
825
826 /**
827  * @brief Called once for the each supported device.
828  * @since_tizen 7.0
829  * @param[in] device    The camera device
830  * @param[in] user_data The user data passed from the foreach function
831  * @return @c true to continue with the next iteration of the loop, \n otherwise @c false to break out of the loop
832  * @pre camera_device_manager_foreach_supported_device() will invoke this callback.
833  * @see camera_device_manager_foreach_supported_device()
834  */
835 typedef bool (*camera_supported_device_cb)(camera_device_s *device, void *user_data);
836
837 /**
838  * @}
839  */
840
841 /**
842  * @addtogroup CAPI_MEDIA_CAMERA_MODULE
843  * @{
844  */
845
846 /**
847  * @brief Creates a new camera handle for controlling a camera.
848  *
849  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
850  * @remarks Multiple handles on a context at the same time are allowed to be created. However,
851  *          camera cannot guarantee proper operation because of limited resources, such as
852  *          camera device, audio device, and display device.\n.
853  *          A @a camera must be released using camera_destroy().
854  * @remarks The privilege %http://tizen.org/privilege/camera is not required since 4.0,\n
855  *          but it is required in all earlier versions.
856  * @param[in]  device The hardware camera to access
857  * @param[out] camera A newly returned handle to the camera
858  * @return @c 0 on success, otherwise a negative error value
859  * @retval #CAMERA_ERROR_NONE Successful
860  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
861  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
862  * @retval #CAMERA_ERROR_OUT_OF_MEMORY Out of memory
863  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
864  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
865  * @post If it succeeds, the camera state will be #CAMERA_STATE_CREATED.
866  *
867  * @see camera_destroy()
868  */
869 int camera_create(camera_device_e device, camera_h *camera);
870
871 /**
872  * @brief Changes the camera device.
873  *
874  * @since_tizen 3.0
875  * @remarks This function can be used to change camera device simply without camera_destroy() and camera_create().\n
876  *          If display reuse hint is set by camera_set_display_reuse_hint() before stopping the preview,\n
877  *          display handle will be reused and last frame on display can be kept even though camera device is changed.
878  * @param[in] camera The handle to the camera
879  * @param[in] device The hardware camera to access
880  * @return @c 0 on success, otherwise a negative error value
881  * @retval #CAMERA_ERROR_NONE Successful
882  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
883  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
884  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
885  * @retval #CAMERA_ERROR_OUT_OF_MEMORY Out of memory
886  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
887  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
888  * @pre    The camera state must be set to #CAMERA_STATE_CREATED.
889  * @post   If it succeeds, the camera attributes and settings will be reset.
890  *
891  * @see camera_set_display_reuse_hint()
892  * @see camera_get_display_reuse_hint()
893  */
894 int camera_change_device(camera_h camera, camera_device_e device);
895
896 /**
897  * @brief Destroys the camera handle and releases all its resources.
898  *
899  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
900  * @param[in] camera The handle to the camera
901  * @return @c 0 on success, otherwise a negative error value
902  * @retval #CAMERA_ERROR_NONE Successful
903  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
904  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
905  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
906  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
907  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
908  * @see camera_create()
909  * @see camera_create_network()
910  */
911 int camera_destroy(camera_h camera);
912
913 /**
914  * @brief Creates a new camera handle for controlling a network camera.
915  * @since_tizen 7.0
916  * @remarks A @a camera must be released using camera_destroy().
917  * @param[in]  device The network camera to access
918  * @param[out] camera A newly returned handle to the camera
919  * @return @c 0 on success, otherwise a negative error value
920  * @retval #CAMERA_ERROR_NONE Successful
921  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
922  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
923  * @retval #CAMERA_ERROR_OUT_OF_MEMORY Out of memory
924  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
925  * @post If it succeeds, the camera state will be #CAMERA_STATE_CREATED.
926  * @see camera_destroy()
927  */
928 int camera_create_network(camera_device_e device, camera_h *camera);
929
930 /**
931  * @brief Initializes a camera device manager.
932  * @since_tizen 7.0
933  * @remarks A @a manager must be released with camera_device_manager_deinitialize().
934  * @param[out] manager A newly returned handle to the camera device manager
935  * @return @c 0 on success, otherwise a negative error value
936  * @retval #CAMERA_ERROR_NONE Successful
937  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
938  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
939  * @retval #CAMERA_ERROR_OUT_OF_MEMORY Out of memory
940  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
941  * @see camera_device_manager_deinitialize()
942  */
943 int camera_device_manager_initialize(camera_device_manager_h *manager);
944
945 /**
946  * @brief Deinitializes the camera device manager handle.
947  * @since_tizen 7.0
948  * @param[in] manager The handle to the camera device manager
949  * @return @c 0 on success, otherwise a negative error value
950  * @retval #CAMERA_ERROR_NONE Successful
951  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
952  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
953  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
954  * @see camera_device_manager_initialize()
955  */
956 int camera_device_manager_deinitialize(camera_device_manager_h manager);
957
958 /**
959  * @}
960  */
961
962 /**
963  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
964  * @{
965  */
966
967 /**
968  * @brief Retrieves all supported devices by invoking the callback function once for each supported device.
969  * @since_tizen 7.0
970  * @param[in] manager   The handle to the camera device manager
971  * @param[in] callback  The callback function to register
972  * @param[in] user_data The user data to be passed to the callback function
973  * @return @c 0 on success, otherwise a negative error value
974  * @retval #CAMERA_ERROR_NONE Successful
975  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
976  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
977  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
978  * @post This function invokes camera_supported_device_cb() repeatedly to retrieve each supported device.
979  * @see camera_supported_device_cb()
980  * @see camera_device_manager_initialize()
981  * @see camera_device_manager_deinitialize()
982  */
983 int camera_device_manager_foreach_supported_device(camera_device_manager_h manager, camera_supported_device_cb callback, void *user_data);
984
985 /**
986  * @}
987  */
988
989 /**
990  * @addtogroup CAPI_MEDIA_CAMERA_MODULE
991  * @{
992  */
993
994 /**
995  * @brief Adds a callback function to be called when the connection state of camera device is changed.
996  * @since_tizen 7.0
997  * @param[in]  manager   The handle to the camera device manager
998  * @param[in]  callback  The callback function to register
999  * @param[in]  user_data The user data to be passed to the callback function
1000  * @param[out] cb_id     The id of registered callback
1001  * @return @c 0 on success, otherwise a negative error value
1002  * @retval #CAMERA_ERROR_NONE Successful
1003  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1004  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1005  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
1006  * @post camera_device_connection_changed_cb() will be invoked when the connection state of camera device is changed.
1007  * @see camera_device_manager_remove_device_connection_changed_cb()
1008  * @see camera_device_connection_changed_cb()
1009  */
1010 int camera_device_manager_add_device_connection_changed_cb(camera_device_manager_h manager, camera_device_connection_changed_cb callback, void *user_data, int *cb_id);
1011
1012 /**
1013  * @brief Removes the callback function.
1014  * @since_tizen 7.0
1015  * @param[in] manager The handle to the camera device manager
1016  * @param[in] cb_id   The id of registered callback
1017  * @return @c 0 on success, otherwise a negative error value
1018  * @retval #CAMERA_ERROR_NONE Successful
1019  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1020  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1021  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
1022  * @see camera_device_manager_add_device_changed_cb()
1023  */
1024 int camera_device_manager_remove_device_connection_changed_cb(camera_device_manager_h manager, int cb_id);
1025
1026 /**
1027  * @brief Starts capturing and drawing preview frames on the screen.
1028  *
1029  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1030  * @privlevel public
1031  * @privilege %http://tizen.org/privilege/camera
1032  * @param[in] camera The handle to the camera
1033  * @return @c 0 on success, otherwise a negative error value
1034  * @retval #CAMERA_ERROR_NONE Successful
1035  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1036  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1037  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1038  * @retval #CAMERA_ERROR_RESOURCE_CONFLICT Resource conflict error
1039  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
1040  * @retval #CAMERA_ERROR_DEVICE_BUSY The device is being used in another application or is performing other operations
1041  * @retval #CAMERA_ERROR_DEVICE_NOT_FOUND No camera device
1042  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1043  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1044  * @pre    The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_CAPTURED.\n
1045  *         You must set the display handle. \n
1046  *         If needed, modify preview FPS(camera_attr_set_preview_fps()),
1047  *         preview resolution(camera_set_preview_resolution()), or preview format(camera_set_preview_format()).
1048  * @post   If it succeeds, the camera state will be #CAMERA_STATE_PREVIEW.\n
1049  *         camera_preview_cb() will be called when preview image data becomes available.
1050  *
1051  * @see camera_stop_preview()
1052  * @see camera_set_display()
1053  * @see camera_set_preview_cb()
1054  * @see camera_set_media_packet_preview_cb()
1055  * @see camera_foreach_supported_preview_resolution()
1056  * @see camera_set_preview_resolution()
1057  * @see camera_get_preview_resolution()
1058  * @see camera_foreach_supported_preview_format()
1059  * @see camera_set_preview_format()
1060  * @see camera_get_preview_format()
1061  * @see camera_attr_foreach_supported_fps()
1062  * @see camera_attr_set_preview_fps()
1063  * @see camera_attr_get_preview_fps()
1064  */
1065 int camera_start_preview(camera_h camera);
1066
1067 /**
1068  * @brief Stops capturing and drawing preview frames.
1069  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1070  * @privlevel public
1071  * @privilege %http://tizen.org/privilege/camera
1072  * @param[in] camera The handle to the camera
1073  * @return @c 0 on success, otherwise a negative error value
1074  * @retval #CAMERA_ERROR_NONE Successful
1075  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1076  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1077  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1078  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
1079  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1080  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1081  * @pre The camera state must be set to #CAMERA_STATE_PREVIEW.
1082  * @post The camera state will be #CAMERA_STATE_CREATED.
1083  * @see camera_start_preview()
1084  * @see camera_unset_preview_cb()
1085  * @see camera_unset_media_packet_preview_cb()
1086  */
1087 int camera_stop_preview(camera_h camera);
1088
1089 /**
1090  * @brief Starts capturing of still images.
1091  *
1092  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1093  * @privlevel public
1094  * @privilege %http://tizen.org/privilege/camera
1095  * @remarks This function causes the transition of the camera state from #CAMERA_STATE_CAPTURING to #CAMERA_STATE_CAPTURED automatically\n
1096  *          and the corresponding callback function camera_capturing_cb() and camera_capture_completed_cb() will be invoked\n
1097  *          The captured image will be delivered through camera_capturing_cb().\n
1098  *          camera_capture_completed_cb() callback notifies about completion of camera_capturing_cb(). \n
1099  *          The camera's preview should be restarted by calling camera_start_preview().
1100  * @param[in] camera       The handle to the camera
1101  * @param[in] capturing_cb The callback for capturing data
1102  * @param[in] completed_cb The callback for notification of completion
1103  * @param[in] user_data    The user data
1104  * @return @c 0 on success, otherwise a negative error value
1105  * @retval #CAMERA_ERROR_NONE Successful
1106  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1107  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1108  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1109  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
1110  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1111  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1112  * @pre The camera state must be set to #CAMERA_STATE_PREVIEW. \n
1113  *      If needed, modify capture resolution(camera_set_capture_resolution()),
1114  *      capture format(camera_set_capture_format()), or image quality(camera_attr_set_image_quality()).
1115  * @post If it succeeds the camera state will be #CAMERA_STATE_CAPTURED.
1116  *
1117  * @see camera_start_preview()
1118  * @see camera_start_continuous_capture();
1119  * @see camera_foreach_supported_capture_resolution()
1120  * @see camera_set_capture_resolution()
1121  * @see camera_get_capture_resolution()
1122  * @see camera_foreach_supported_capture_format()
1123  * @see camera_set_capture_format()
1124  * @see camera_get_capture_format()
1125  * @see camera_attr_set_image_quality()
1126  * @see camera_attr_get_image_quality()
1127  */
1128 int camera_start_capture(camera_h camera, camera_capturing_cb capturing_cb, camera_capture_completed_cb completed_cb, void *user_data);
1129
1130 /**
1131  * @brief Starts continuously capturing still images.
1132  *
1133  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1134  * @privlevel public
1135  * @privilege %http://tizen.org/privilege/camera
1136  * @remarks If this is not supported zero shutter lag occurs. The capture resolution could be changed to the preview resolution.\n
1137  *          This function causes the transition of the camera state from #CAMERA_STATE_CAPTURING to #CAMERA_STATE_CAPTURED automatically\n
1138  *          and the corresponding callback function camera_capturing_cb() and camera_capture_completed_cb() will be invoked\n
1139  *          Each Captured image will be delivered through camera_capturing_cb().\n
1140  *          The camera_capture_completed_cb() callback notifies about the completion of an entire capture.\n
1141  *          The camera's preview should be restarted by calling camera_start_preview().\n.
1142  * @param[in] camera       The handle to the camera
1143  * @param[in] count        The number of still images
1144  * @param[in] interval     The interval of the capture (millisecond)
1145  * @param[in] capturing_cb The callback for capturing data
1146  * @param[in] completed_cb The callback for notification of completion
1147  * @param[in] user_data    The user data
1148  * @return @c 0 on success, otherwise a negative error value
1149  * @retval #CAMERA_ERROR_NONE Successful
1150  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1151  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1152  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1153  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
1154  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1155  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1156  * @post   If it succeeds the camera state will be #CAMERA_STATE_CAPTURED.
1157  *
1158  * @see camera_start_preview()
1159  * @see camera_start_capture();
1160  * @see camera_stop_continuous_capture()
1161  * @see camera_is_supported_zero_shutter_lag()
1162  */
1163 int camera_start_continuous_capture(camera_h camera, int count, int interval, camera_capturing_cb capturing_cb, camera_capture_completed_cb completed_cb, void *user_data);
1164
1165 /**
1166  * @brief Aborts continuous capturing.
1167  *
1168  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1169  * @privlevel public
1170  * @privilege %http://tizen.org/privilege/camera
1171  * @remarks The camera state will be changed to #CAMERA_STATE_CAPTURED.
1172  * @param[in] camera The handle to the camera
1173  * @return @c 0 on success, otherwise a negative error value
1174  * @retval #CAMERA_ERROR_NONE Successful
1175  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1176  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1177  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1178  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
1179  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1180  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1181  * @pre The camera state must be set to #CAMERA_STATE_PREVIEW.
1182  *
1183  * @see camera_start_continuous_capture()
1184  */
1185 int camera_stop_continuous_capture(camera_h camera);
1186
1187 /**
1188  * @brief Gets the state of the camera.
1189  *
1190  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1191  * @param[in]  camera The handle to the camera
1192  * @param[out] state  The current state of the camera
1193  * @return @c 0 on success, otherwise a negative error value
1194  * @retval #CAMERA_ERROR_NONE Successful
1195  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1196  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1197  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1198  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1199  * @see camera_create()
1200  * @see camera_start_preview()
1201  * @see camera_stop_preview()
1202  * @see camera_start_capture()
1203  */
1204 int camera_get_state(camera_h camera, camera_state_e *state);
1205
1206 /**
1207  * @brief Starts camera auto-focusing, asynchronously.
1208  *
1209  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1210  * @privlevel public
1211  * @privilege %http://tizen.org/privilege/camera
1212  * @remarks If continuous status is @c true, the camera continuously tries to focus.
1213  * @param[in] camera     The handle to the camera
1214  * @param[in] continuous The status of continuous focusing
1215  * @return @c 0 on success, otherwise a negative error value
1216  * @retval #CAMERA_ERROR_NONE Successful
1217  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1218  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1219  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1220  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
1221  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1222  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1223  * @pre The camera state must be set to #CAMERA_STATE_PREVIEW.
1224  * @post The camera focus state will be #CAMERA_FOCUS_STATE_ONGOING.
1225  *
1226  * @see camera_cancel_focusing()
1227  * @see camera_set_focus_changed_cb()
1228  * @see camera_focus_changed_cb()
1229  * @see camera_attr_set_af_mode()
1230  */
1231 int camera_start_focusing(camera_h camera, bool continuous);
1232
1233 /**
1234  * @brief Stops camera auto focusing.
1235  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1236  * @privlevel public
1237  * @privilege %http://tizen.org/privilege/camera
1238  * @param[in] camera The handle to the camera
1239  * @return @c 0 on success, otherwise a negative error value
1240  * @retval #CAMERA_ERROR_NONE Successful
1241  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1242  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1243  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1244  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
1245  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1246  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1247  * @pre The camera state must be set to #CAMERA_STATE_PREVIEW.
1248  *
1249  * @see camera_start_focusing()
1250  * @see camera_focus_changed_cb()
1251  */
1252 int camera_cancel_focusing(camera_h camera);
1253
1254 /**
1255  * @brief Sets the display handle to show preview images.
1256  *
1257  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1258  * @remarks This function must be called before previewing (see camera_start_preview()).
1259  *          In Custom ROI display mode, camera_attr_set_display_roi_area() function must be called before calling this function.
1260  * @remarks This function must be called in main thread of the application.
1261  *          Otherwise, it will return #CAMERA_ERROR_INVALID_OPERATION by internal restriction.
1262  *          To avoid #CAMERA_ERROR_INVALID_OPERATION in sub thread, ecore_thread_main_loop_begin() and
1263  *          ecore_thread_main_loop_end() can be used, but deadlock can occur if the main thread is busy.
1264  *          So, it's not recommended to use them. (Since 5.0)
1265  * @param[in] camera  The handle to the camera
1266  * @param[in] type    The display type
1267  * @param[in] display The display handle from #GET_DISPLAY
1268  * @return @c 0 on success, otherwise a negative error value
1269  * @retval #CAMERA_ERROR_NONE Successful
1270  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1271  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1272  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1273  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
1274  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1275  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1276  * @pre The camera state must be set to #CAMERA_STATE_CREATED.
1277  *
1278  * @see camera_start_preview()
1279  * @see #GET_DISPLAY
1280  * @see ecore_thread_main_loop_begin()
1281  * @see ecore_thread_main_loop_end()
1282  */
1283 int camera_set_display(camera_h camera, camera_display_type_e type, camera_display_h display);
1284
1285 /**
1286  * @brief Sets the resolution of the preview.
1287  *
1288  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1289  * @remarks This function should be called before previewing (camera_start_preview()).
1290  * @param[in] camera The handle to the camera
1291  * @param[in] width  The preview width
1292  * @param[in] height The preview height
1293  * @return @c 0 on success, otherwise a negative error value
1294  * @retval #CAMERA_ERROR_NONE Successful
1295  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1296  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1297  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1298  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1299  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1300  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
1301  *
1302  * @see camera_start_preview()
1303  * @see camera_get_preview_resolution()
1304  * @see camera_foreach_supported_preview_resolution()
1305  */
1306 int camera_set_preview_resolution(camera_h camera, int width, int height);
1307
1308 /**
1309  * @brief Gets the resolution of the preview.
1310  *
1311  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1312  * @param[in]  camera The handle to the camera
1313  * @param[out] width  The preview width
1314  * @param[out] height The preview height
1315  * @return @c 0 on success, otherwise a negative error value
1316  * @retval #CAMERA_ERROR_NONE Successful
1317  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1318  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1319  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1320  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1321  * @see camera_set_preview_resolution()
1322  * @see camera_foreach_supported_preview_resolution()
1323  */
1324 int camera_get_preview_resolution(camera_h camera, int *width, int *height);
1325
1326 /**
1327  * @brief Gets the recommended preview resolution.
1328  *
1329  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1330  * @remarks Depending on the capture resolution aspect ratio and display resolution, the recommended preview resolution is determined.
1331  * @param[in]  camera The handle to the camera
1332  * @param[out] width  The preview width
1333  * @param[out] height The preview height
1334  * @return @c 0 on success, otherwise a negative error value
1335  * @retval #CAMERA_ERROR_NONE Successful
1336  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1337  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1338  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1339  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1340  * @see camera_set_preview_resolution()
1341  * @see camera_foreach_supported_preview_resolution()
1342  */
1343 int camera_get_recommended_preview_resolution(camera_h camera, int *width, int *height);
1344
1345 /**
1346  * @brief Starts face detection.
1347  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1348  * @privlevel public
1349  * @privilege %http://tizen.org/privilege/camera
1350  * @remarks This should be called after the preview is started.\n
1351  *          This callback will be invoked when the face is detected in the preview frame.\n
1352  *          Internally it starts continuous focus and focusing on the detected face.\n
1353  *          When face detection is running, the camera_start_focusing(), camera_cancel_focusing(), camera_attr_set_af_mode(), camera_attr_set_af_area(), camera_attr_set_exposure_mode(), and camera_attr_set_whitebalance() settings are ignored.\n
1354  *          If camera_stop_preview() is invoked, face detection is stopped and then preview is resumed using camera_start_preview(), this method should be called again to resume face detection.
1355  * @param[in] camera    The handle to the camera
1356  * @param[in] callback  The callback to notify face detection
1357  * @param[in] user_data The user data to be passed to the callback function
1358  *
1359  * @return @c 0 on success, otherwise a negative error value
1360  * @retval #CAMERA_ERROR_NONE Successful
1361  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1362  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1363  * @retval #CAMERA_ERROR_INVALID_STATE Not preview state
1364  * @retval #CAMERA_ERROR_INVALID_OPERATION Not supported this feature
1365  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1366  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1367  * @pre The camera state must be #CAMERA_STATE_PREVIEW.
1368  *
1369  * @see camera_stop_face_detection()
1370  * @see camera_face_detected_cb()
1371  * @see camera_is_supported_face_detection()
1372  */
1373 int camera_start_face_detection(camera_h camera, camera_face_detected_cb callback, void *user_data);
1374
1375 /**
1376  * @brief Stops face detection.
1377  *
1378  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1379  * @privlevel public
1380  * @privilege %http://tizen.org/privilege/camera
1381  * @param[in] camera The handle to the camera
1382  * @return @c 0 on success, otherwise a negative error value
1383  * @retval #CAMERA_ERROR_NONE Successful
1384  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1385  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1386  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1387  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1388  * @pre This should be called after face detection is started.
1389  *
1390  * @see camera_start_face_detection()
1391  * @see camera_is_supported_face_detection()
1392  */
1393 int camera_stop_face_detection(camera_h camera);
1394
1395 /**
1396  * @}
1397  */
1398
1399 /**
1400  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
1401  * @{
1402  */
1403
1404 /**
1405  * @brief Gets continuous capture feature's supported state.
1406  * @ingroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
1407  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1408  * @remarks The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
1409  * @param[in] camera The handle to the camera
1410  * @return @c true on supported, otherwise false
1411  * @exception #CAMERA_ERROR_NONE Successful
1412  * @exception #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1413  * @exception #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1414  * @exception #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1415  *
1416  */
1417 bool camera_is_supported_continuous_capture(camera_h camera);
1418
1419 /**
1420  * @brief Retrieves all supported camera preview resolutions by invoking the callback function once for each supported camera preview resolution.
1421  *
1422  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1423  * @param[in] camera    The handle to the camera
1424  * @param[in] callback  The callback function to be invoked
1425  * @param[in] user_data The user data to be passed to the callback function
1426  * @return @c 0 on success, otherwise a negative error value
1427  * @retval #CAMERA_ERROR_NONE Successful
1428  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1429  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1430  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1431  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1432  * @post This function invokes camera_supported_preview_resolution_cb() repeatedly to retrieve each supported preview resolution.
1433  *
1434  * @see camera_set_preview_resolution()
1435  * @see camera_get_preview_resolution()
1436  * @see camera_supported_preview_resolution_cb()
1437  */
1438 int camera_foreach_supported_preview_resolution(camera_h camera, camera_supported_preview_resolution_cb callback, void *user_data);
1439
1440 /**
1441  * @}
1442  */
1443
1444 /**
1445  * @addtogroup CAPI_MEDIA_CAMERA_MODULE
1446  * @{
1447  */
1448
1449 /**
1450  * @ingroup CAPI_MEDIA_CAMERA_DISPLAY_MODULE
1451  * @brief Sets the display rotation.
1452  *
1453  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1454  * @remarks This function should be called before previewing (see camera_start_preview())
1455  * @param[in] camera   The handle to the camera
1456  * @param[in] rotation The display rotation
1457  * @return @c 0 on success, otherwise a negative error value
1458  * @retval #CAMERA_ERROR_NONE Successful
1459  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1460  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1461  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1462  * @retval #CAMERA_ERROR_INVALID_OPERATION Display type is incorrect
1463  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1464  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1465  * @see camera_start_preview()
1466  * @see camera_get_display_rotation()
1467  */
1468 int camera_set_display_rotation(camera_h camera, camera_rotation_e rotation);
1469
1470 /**
1471  * @ingroup CAPI_MEDIA_CAMERA_DISPLAY_MODULE
1472  * @brief Gets the display rotation.
1473  *
1474  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1475  * @param[in]  camera   The handle to the camera
1476  * @param[out] rotation The display rotation
1477  * @return @c 0 on success, otherwise a negative error value
1478  * @retval #CAMERA_ERROR_NONE Successful
1479  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1480  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1481  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1482  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1483  * @see camera_set_display_rotation()
1484  */
1485 int camera_get_display_rotation(camera_h camera, camera_rotation_e *rotation);
1486
1487 /**
1488  * @ingroup CAPI_MEDIA_CAMERA_DISPLAY_MODULE
1489  * @brief Sets the display flip.
1490  *
1491  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1492  * @param[in] camera The handle to the camera
1493  * @param[in] flip   The display flip
1494  * @return @c 0 on success, otherwise a negative error value
1495  * @retval #CAMERA_ERROR_NONE Successful
1496  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1497  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1498  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1499  * @retval #CAMERA_ERROR_INVALID_OPERATION Display type is incorrect
1500  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1501  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1502  * @see camera_get_display_flip()
1503  */
1504 int camera_set_display_flip(camera_h camera, camera_flip_e flip);
1505
1506 /**
1507  * @ingroup CAPI_MEDIA_CAMERA_DISPLAY_MODULE
1508  * @brief Gets the display flip.
1509  *
1510  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1511  * @param[in]  camera The handle to the camera
1512  * @param[out] flip   The display flip
1513  * @return @c 0 on success, otherwise a negative error value
1514  * @retval #CAMERA_ERROR_NONE Successful
1515  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1516  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1517  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1518  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1519  * @see camera_set_display_flip()
1520  */
1521 int camera_get_display_flip(camera_h camera, camera_flip_e *flip);
1522
1523 /**
1524  * @ingroup CAPI_MEDIA_CAMERA_DISPLAY_MODULE
1525  * @brief Sets the visible property for display.
1526  *
1527  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1528  * @param[in] camera  The handle to the camera
1529  * @param[in] visible The display visibility property
1530  *
1531  * @return @c 0 on success, otherwise a negative error value
1532  * @retval #CAMERA_ERROR_NONE Successful
1533  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1534  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1535  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1536  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1537  * @see camera_is_display_visible()
1538  */
1539 int camera_set_display_visible(camera_h camera, bool visible);
1540
1541 /**
1542  * @ingroup CAPI_MEDIA_CAMERA_DISPLAY_MODULE
1543  * @brief Gets the visible property of display.
1544  *
1545  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1546  * @param[in]  camera  The handle to the camera
1547  * @param[out] visible @c true if camera display is visible, otherwise @c false
1548  *
1549  * @return @c 0 on success, otherwise a negative error value
1550  * @retval #CAMERA_ERROR_NONE Successful
1551  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1552  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1553  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1554  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1555  * @see camera_set_display_visible()
1556  */
1557 int camera_is_display_visible(camera_h camera, bool *visible);
1558
1559 /**
1560  * @ingroup CAPI_MEDIA_CAMERA_DISPLAY_MODULE
1561  * @brief Sets the display mode.
1562  *
1563  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1564  * @param[in] camera The handle to the camera
1565  * @param[in] mode   The display mode
1566  *
1567  * @return @c 0 on success, otherwise a negative error value
1568  * @retval #CAMERA_ERROR_NONE Successful
1569  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1570  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1571  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1572  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1573  * @see camera_get_display_mode()
1574  */
1575 int camera_set_display_mode(camera_h camera, camera_display_mode_e mode);
1576
1577 /**
1578  * @ingroup CAPI_MEDIA_CAMERA_DISPLAY_MODULE
1579  * @brief Gets the display mode.
1580  *
1581  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1582  * @param[in]  camera The handle to the camera
1583  * @param[out] mode   The display mode
1584  *
1585  * @return @c 0 on success, otherwise a negative error value
1586  * @retval #CAMERA_ERROR_NONE Successful
1587  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1588  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1589  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1590  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1591  * @see camera_set_display_mode()
1592  */
1593 int camera_get_display_mode(camera_h camera, camera_display_mode_e *mode);
1594
1595 /**
1596  * @brief Sets the hint for display reuse.
1597  * @details If the hint is set to true, the display will be reused when the camera device is changed with camera_change_device().
1598  * @since_tizen 3.0
1599  * @remarks If the current display type is #CAMERA_DISPLAY_TYPE_NONE, this function will return #CAMERA_ERROR_INVALID_OPERATION.
1600  * @param[in] camera The handle to the camera
1601  * @param[in] hint   The hint for display reuse; true - reuse the display, false - do not reuse
1602  * @return @c 0 on success, otherwise a negative error value
1603  * @retval #CAMERA_ERROR_NONE Successful
1604  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1605  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1606  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
1607  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1608  * @pre    The camera state must be set to #CAMERA_STATE_PREVIEW.
1609  * @see camera_get_display_reuse_hint()
1610  * @see camera_change_device()
1611  */
1612 int camera_set_display_reuse_hint(camera_h camera, bool hint);
1613
1614 /**
1615  * @brief Gets the hint for display reuse.
1616  * @since_tizen 3.0
1617  * @remarks If the current display type is #CAMERA_DISPLAY_TYPE_NONE, this function will return #CAMERA_ERROR_INVALID_OPERATION.
1618  * @param[in]  camera The handle to the camera
1619  * @param[out] hint   The hint for display reuse; true - reuse the display, false - do not reuse
1620  * @return @c 0 on success, otherwise a negative error value
1621  * @retval #CAMERA_ERROR_NONE Successful
1622  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1623  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
1624  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1625  * @see camera_set_display_reuse_hint()
1626  * @see camera_change_device()
1627  */
1628 int camera_get_display_reuse_hint(camera_h camera, bool *hint);
1629
1630 /**
1631  * @brief Sets the resolution of the captured image.
1632  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1633  * @param[in] camera The handle to the camera
1634  * @param[in] width  The capture width
1635  * @param[in] height The capture height
1636  * @return @c 0 on success, otherwise a negative error value
1637  * @retval #CAMERA_ERROR_NONE Successful
1638  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1639  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1640  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1641  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1642  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1643  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
1644  * @see camera_start_capture()
1645  * @see camera_get_capture_resolution()
1646  * @see camera_foreach_supported_capture_resolution()
1647  */
1648 int camera_set_capture_resolution(camera_h camera, int width, int height);
1649
1650 /**
1651  * @brief Gets the resolution of the captured image.
1652  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1653  * @param[in]  camera The handle to the camera
1654  * @param[out] width  The capture width
1655  * @param[out] height The capture height
1656  * @return @c 0 on success, otherwise a negative error value
1657  * @retval #CAMERA_ERROR_NONE Successful
1658  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1659  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1660  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1661  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1662  * @see camera_set_capture_resolution()
1663  * @see camera_foreach_supported_capture_resolution()
1664  */
1665 int camera_get_capture_resolution(camera_h camera, int *width, int *height);
1666
1667 /**
1668  * @}
1669  */
1670
1671 /**
1672  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
1673  * @{
1674  */
1675
1676 /**
1677  * @brief Retrieves all supported camera captured resolutions by invoking the callback function once for each supported camera capture resolution.
1678  *
1679  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1680  * @param[in] camera    The handle to the camera
1681  * @param[in] callback  The callback function to register
1682  * @param[in] user_data The user data to be passed to the callback function
1683  * @return @c 0 on success, otherwise a negative error value
1684  * @retval #CAMERA_ERROR_NONE Successful
1685  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1686  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1687  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1688  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1689  * @post This function invokes camera_supported_capture_resolution_cb() repeatedly to retrieve each supported capture resolution.
1690  * @see camera_set_capture_resolution()
1691  * @see camera_get_capture_resolution()
1692  * @see camera_supported_capture_resolution_cb()
1693  */
1694 int camera_foreach_supported_capture_resolution(camera_h camera, camera_supported_capture_resolution_cb callback, void *user_data);
1695
1696 /**
1697  * @}
1698  */
1699
1700 /**
1701  * @addtogroup CAPI_MEDIA_CAMERA_MODULE
1702  * @{
1703  */
1704
1705 /**
1706  * @brief Sets the format of an image to be captured.
1707  *
1708  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1709  * @remarks This function should be called before capturing (see camera_start_capture()).
1710  * @param[in]  camera The handle to the camera
1711  * @param[out] format The format of the image to be captured
1712  * @return @c 0 on success, otherwise a negative error value
1713  * @retval #CAMERA_ERROR_NONE Successful
1714  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1715  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1716  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1717  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1718  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1719  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
1720  * @see camera_start_capture()
1721  * @see camera_get_capture_format()
1722  * @see camera_foreach_supported_capture_format()
1723  */
1724 int camera_set_capture_format(camera_h camera, camera_pixel_format_e format);
1725
1726 /**
1727  * @brief Gets the format of the image to be captured.
1728  *
1729  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1730  * @param[in]  camera The handle to the camera
1731  * @param[out] format The format of the image to be captured
1732  * @return @c 0 on success, otherwise a negative error value
1733  * @retval #CAMERA_ERROR_NONE Successful
1734  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1735  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1736  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1737  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1738  * @see camera_set_capture_format()
1739  * @see camera_foreach_supported_capture_format()
1740  */
1741 int camera_get_capture_format(camera_h camera, camera_pixel_format_e *format);
1742
1743 /**
1744  * @}
1745  */
1746
1747 /**
1748  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
1749  * @{
1750  */
1751
1752 /**
1753  * @brief Retrieves all supported camera capture formats by invoking the callback function once for each supported camera capture format.
1754  *
1755  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1756  * @param[in] camera    The handle to the camera
1757  * @param[in] callback  The callback function to be invoked
1758  * @param[in] user_data The user data to be passed to the callback function
1759  * @return @c 0 on success, otherwise a negative error value
1760  * @retval #CAMERA_ERROR_NONE Successful
1761  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1762  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1763  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1764  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1765  * @post This function invokes camera_supported_capture_format_cb() repeatedly to retrieve each supported capture format.
1766  * @see camera_set_capture_format()
1767  * @see camera_get_capture_format()
1768  * @see camera_supported_capture_format_cb()
1769  */
1770 int camera_foreach_supported_capture_format(camera_h camera, camera_supported_capture_format_cb callback, void *user_data);
1771
1772 /**
1773  * @}
1774  */
1775
1776 /**
1777  * @addtogroup CAPI_MEDIA_CAMERA_MODULE
1778  * @{
1779  */
1780
1781 /**
1782  * @brief Sets the preview data format.
1783  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1784  * @remarks This function should be called before previewing (see camera_start_preview()).
1785  * @param[in] camera The handle to the camera
1786  * @param[in] format The preview data format
1787  * @return @c 0 on success, otherwise a negative error value
1788  * @retval #CAMERA_ERROR_NONE Successful
1789  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1790  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1791  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1792  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1793  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1794  * @pre The camera state must be set to #CAMERA_STATE_CREATED.
1795  * @see camera_start_preview()
1796  * @see camera_get_preview_format()
1797  * @see camera_foreach_supported_preview_format()
1798  */
1799 int camera_set_preview_format(camera_h camera, camera_pixel_format_e format);
1800
1801 /**
1802  * @brief Gets the format of the preview stream.
1803  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1804  * @param[in]  camera The handle to the camera
1805  * @param[out] format The preview data format
1806  * @return @c 0 on success, otherwise a negative error value
1807  * @retval #CAMERA_ERROR_NONE Successful
1808  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1809  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1810  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1811  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1812  * @see camera_set_preview_format()
1813  * @see camera_foreach_supported_preview_format()
1814  */
1815 int camera_get_preview_format(camera_h camera, camera_pixel_format_e *format);
1816
1817 /**
1818  * @brief Gets the facing direction of camera module.
1819  * @since_tizen 3.0
1820  * @param[in]  camera           The handle to the camera
1821  * @param[out] facing_direction The facing direction of camera module
1822  * @return @c 0 on success, otherwise a negative error value
1823  * @retval #CAMERA_ERROR_NONE Successful
1824  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1825  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
1826  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1827  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1828  */
1829 int camera_get_facing_direction(camera_h camera, camera_facing_direction_e *facing_direction);
1830
1831 /**
1832  * @brief Gets the camera's flash state.
1833  * @since_tizen 3.0
1834  * @param[in]  device The hardware camera to access
1835  * @param[out] state  The current flash state
1836  * @return @c 0 on success, otherwise a negative error value
1837  * @retval #CAMERA_ERROR_NONE Successful
1838  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1839  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
1840  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1841  * @see camera_attr_set_flash_mode()
1842  * @see camera_attr_get_flash_mode()
1843  */
1844 int camera_get_flash_state(camera_device_e device, camera_flash_state_e *state);
1845
1846 /**
1847  * @brief Sets a callback function to be called for extra preview frames.
1848  * @since_tizen 7.0
1849  * @param[in] camera    The handle to the camera
1850  * @param[in] callback  The callback function to be registered
1851  * @param[in] user_data The user data to be passed to the callback function
1852  * @return @c 0 on success, otherwise a negative error value
1853  * @retval #CAMERA_ERROR_NONE Successful
1854  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1855  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1856  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1857  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
1858  * @see camera_start_preview()
1859  * @see camera_unset_extra_preview_cb()
1860  * @see camera_extra_preview_cb()
1861  */
1862 int camera_set_extra_preview_cb(camera_h camera, camera_extra_preview_cb callback, void *user_data);
1863
1864 /**
1865  * @brief Unsets the callback function.
1866  * @since_tizen 7.0
1867  * @param[in] camera The handle to the camera
1868  * @return @c 0 on success, otherwise a negative error value
1869  * @retval #CAMERA_ERROR_NONE Successful
1870  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1871  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1872  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1873  * @see camera_set_extra_preview_cb()
1874  */
1875 int camera_unset_extra_preview_cb(camera_h camera);
1876
1877 /**
1878  * @brief Sets the extra preview stream format.
1879  * @since_tizen 7.0
1880  * @param[in] camera       The handle to the camera
1881  * @param[in] stream_id    The id of extra preview stream
1882  * @param[in] pixel_format The pixel format of extra preview stream
1883  * @param[in] width        The width of extra preview stream
1884  * @param[in] height       The height of extra preview stream
1885  * @param[in] fps          The fps of extra preview stream
1886  * @return @c 0 on success, otherwise a negative error value
1887  * @retval #CAMERA_ERROR_NONE Successful
1888  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1889  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1890  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1891  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1892  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
1893  * @see camera_start_preview()
1894  * @see camera_set_extra_preview_cb()
1895  * @see camera_unset_extra_preview_cb()
1896  * @see camera_get_extra_preview_stream_format()
1897  */
1898 int camera_set_extra_preview_stream_format(camera_h camera, int stream_id, camera_pixel_format_e pixel_format, int width, int height, int fps);
1899
1900 /**
1901  * @brief Gets the extra preview stream format.
1902  * @since_tizen 7.0
1903  * @param[in] camera        The handle to the camera
1904  * @param[in] stream_id     The id of extra preview stream
1905  * @param[out] pixel_format The pixel format of extra preview stream
1906  * @param[out] width        The width of extra preview stream
1907  * @param[out] height       The height of extra preview stream
1908  * @param[out] fps          The fps of extra preview stream
1909  * @return @c 0 on success, otherwise a negative error value
1910  * @retval #CAMERA_ERROR_NONE Successful
1911  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1912  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1913  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
1914  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1915  * @pre The camera state must be set to #CAMERA_STATE_PREVIEW.
1916  * @see camera_start_preview()
1917  * @see camera_set_extra_preview_cb()
1918  * @see camera_unset_extra_preview_cb()
1919  * @see camera_set_extra_preview_stream_format()
1920  */
1921 int camera_get_extra_preview_stream_format(camera_h camera, int stream_id, camera_pixel_format_e *pixel_format, int *width, int *height, int *fps);
1922
1923 /**
1924  * @}
1925  */
1926
1927 /**
1928  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
1929  * @{
1930  */
1931
1932 /**
1933  * @brief Retrieves all supported camera preview formats by invoking the callback function once for each supported camera preview format.
1934  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1935  * @param[in] camera    The handle to the camera
1936  * @param[in] callback  The callback function to be invoked
1937  * @param[in] user_data The user data to be passed to the callback function
1938  * @return @c 0 on success, otherwise a negative error value
1939  * @retval #CAMERA_ERROR_NONE Successful
1940  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1941  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1942  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1943  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1944  * @post This function invokes camera_supported_preview_format_cb() repeatedly to retrieve each supported preview format.
1945  * @see camera_set_preview_format()
1946  * @see camera_get_preview_format()
1947  * @see camera_supported_preview_format_cb()
1948  */
1949 int camera_foreach_supported_preview_format(camera_h camera, camera_supported_preview_format_cb callback, void *user_data);
1950
1951 /**
1952  * @ingroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
1953  * @brief Gets the face detection feature's supported state.
1954  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1955  * @remarks The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
1956  * @param[in] camera The handle to the camera
1957  * @return @c true if supported, otherwise @c false
1958  * @exception #CAMERA_ERROR_NONE Successful
1959  * @exception #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1960  * @exception #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1961  * @exception #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1962  * @see camera_start_face_detection()
1963  * @see camera_stop_face_detection()
1964  */
1965 bool camera_is_supported_face_detection(camera_h camera);
1966
1967 /**
1968  * @brief Gets the zero shutter lag feature's supported state.
1969  * @ingroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
1970  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1971  * @remarks If supporting zero shutter lag, continuous shot can be done with full capture size. \n
1972  *                The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
1973  * @param[in] camera The handle to the camera
1974  * @return @c true if supported, otherwise @c false
1975  * @exception #CAMERA_ERROR_NONE Successful
1976  * @exception #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1977  * @exception #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1978  * @exception #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1979  */
1980 bool camera_is_supported_zero_shutter_lag(camera_h camera);
1981
1982 /**
1983  * @ingroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
1984  * @brief Gets the camera device count.
1985  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1986  * @remarks If the device supports primary and secondary camera, this returns @c 2. If @c 1 is returned, the device only supports primary camera.
1987  * @param[in]  camera       The handle to the camera
1988  * @param[out] device_count The device count
1989  * @return @c 0 on success, otherwise a negative error value
1990  * @retval #CAMERA_ERROR_NONE Successful
1991  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
1992  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
1993  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
1994  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
1995  */
1996 int camera_get_device_count(camera_h camera, int *device_count);
1997
1998 /**
1999  * @brief Gets the media packet preview callback feature's supported state.
2000  * @ingroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
2001  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2002  * @remarks The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
2003  * @param[in] camera The handle to the camera
2004  * @return @c true if supported, otherwise @c false
2005  * @exception #CAMERA_ERROR_NONE Successful
2006  * @exception #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2007  * @exception #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2008  * @exception #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2009  *
2010  */
2011 bool camera_is_supported_media_packet_preview_cb(camera_h camera);
2012
2013 /**
2014  * @brief Gets the extra preview feature's supported state.
2015  * @ingroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
2016  * @since_tizen 7.0
2017  * @remarks The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
2018  * @param[in] camera The handle to the camera
2019  * @return @c true if supported, otherwise @c false
2020  * @exception #CAMERA_ERROR_NONE Successful
2021  * @exception #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2022  */
2023 bool camera_is_supported_extra_preview(camera_h camera);
2024
2025 /**
2026  * @}
2027  */
2028
2029 /**
2030  * @addtogroup CAPI_MEDIA_CAMERA_MODULE
2031  * @{
2032  */
2033
2034 /**
2035  * @brief Registers a callback function to be called once per frame when previewing.
2036  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2037  * @remarks This callback does not work in the video recorder mode.\n
2038  *          Before 4.0, the only allowed state for calling this function was #CAMERA_STATE_CREATED.\n
2039  *          Since 4.0, #CAMERA_STATE_PREVIEW has been added as an allowed state,\n
2040  *          so that this function could be called before previewing or even while previewing.\n
2041  *          A registered callback is called on the internal thread of the camera.\n
2042  *          A video frame can be retrieved using a registered callback,\n
2043  *          and the buffer is only available in a registered callback.\n
2044  *          Since tizen 3.0, if you change the buffer in a registered callback,\n
2045  *          it could not be displayed on the device in case of copied buffer.\n
2046  *          and if camera_is_supported_media_packet_preview_cb() returns false,\n
2047  *          it's copied buffer case.
2048  * @param[in] camera    The handle to the camera
2049  * @param[in] callback  The callback function to be registered
2050  * @param[in] user_data The user data to be passed to the callback function
2051  * @return @c 0 on success, otherwise a negative error value
2052  * @retval #CAMERA_ERROR_NONE Successful
2053  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2054  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2055  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2056  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2057  * @pre Before 4.0 : The camera state must be set to #CAMERA_STATE_CREATED.\n
2058  *      Since  4.0 : The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
2059  * @see camera_start_preview()
2060  * @see camera_unset_preview_cb()
2061  * @see camera_preview_cb()
2062  */
2063 int camera_set_preview_cb(camera_h camera, camera_preview_cb callback, void *user_data);
2064
2065 /**
2066  * @brief Unregisters the callback function.
2067  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2068  * @param[in] camera The handle to the camera
2069  * @return @c 0 on success, otherwise a negative error value
2070  * @retval #CAMERA_ERROR_NONE Successful
2071  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2072  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2073  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2074  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2075  * @see camera_set_preview_cb()
2076  */
2077 int camera_unset_preview_cb(camera_h camera);
2078
2079 /**
2080  * @brief Registers a media packet callback function to be called once per frame when previewing.
2081  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2082  * @remarks This callback does not work in video recorder mode.\n
2083  *          This function should be called before previewing (see camera_start_preview())\n
2084  *          A registered callback is called on the internal thread of the camera.\n
2085  *          A video frame can be retrieved using a registered callback as a media packet.\n
2086  *          The callback function holds the same buffer that will be drawn on the display device.\n
2087  *          So if you change the media packet in a registered callback, it will be displayed on the device\n
2088  *          and the media packet is available until it's destroyed by media_packet_destroy().
2089  * @param[in] camera    The handle to the camera
2090  * @param[in] callback  The callback function to be registered
2091  * @param[in] user_data The user data to be passed to the callback function
2092  * @return 0 on success, otherwise a negative error value
2093  * @retval #CAMERA_ERROR_NONE Successful
2094  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2095  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2096  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2097  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2098  * @pre The camera's state should be #CAMERA_STATE_CREATED.
2099  * @see camera_start_preview()
2100  * @see camera_unset_media_packet_preview_cb()
2101  * @see camera_media_packet_preview_cb()
2102  */
2103 int camera_set_media_packet_preview_cb(camera_h camera, camera_media_packet_preview_cb callback, void *user_data);
2104
2105 /**
2106  * @brief Unregisters the media packet callback function.
2107  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2108  * @param[in] camera The handle to the camera
2109  * @return @c 0 on success, otherwise a negative error value
2110  * @retval #CAMERA_ERROR_NONE Successful
2111  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2112  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2113  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2114  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2115  * @see camera_set_media_packet_preview_cb()
2116  */
2117 int camera_unset_media_packet_preview_cb(camera_h camera);
2118
2119 /**
2120  * @brief Registers a callback function to be called when the camera state changes.
2121  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2122  * @param[in] camera    The handle to the camera
2123  * @param[in] callback  The callback function to register
2124  * @param[in] user_data The user data to be passed to the callback function
2125  * @return @c 0 on success, otherwise a negative error value
2126  * @retval #CAMERA_ERROR_NONE Successful
2127  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2128  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2129  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2130  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2131  * @post This function will invoke camera_state_changed_cb() when the camera state changes.
2132  * @see camera_unset_state_changed_cb()
2133  * @see camera_state_changed_cb()
2134  */
2135 int camera_set_state_changed_cb(camera_h camera, camera_state_changed_cb callback, void *user_data);
2136
2137 /**
2138  * @brief Unregisters the callback function.
2139  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2140  * @param[in] camera The handle to the camera
2141  * @return @c 0 on success, otherwise a negative error value
2142  * @retval #CAMERA_ERROR_NONE Successful
2143  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2144  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2145  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2146  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2147  * @see camera_set_state_changed_cb()
2148  */
2149 int camera_unset_state_changed_cb(camera_h camera);
2150
2151 /**
2152  * @brief Registers a callback function to be called when the camera is interrupted by policy.
2153  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2154  * @param[in] camera    The handle to the camera
2155  * @param[in] callback  The callback function to register
2156  * @param[in] user_data The user data to be passed to the callback function
2157  * @return @c 0 on success, otherwise a negative error value
2158  * @retval #CAMERA_ERROR_NONE Successful
2159  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2160  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2161  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2162  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2163  * @see camera_unset_interrupted_cb()
2164  * @see camera_interrupted_cb()
2165  */
2166 int camera_set_interrupted_cb(camera_h camera, camera_interrupted_cb callback, void *user_data);
2167
2168 /**
2169  * @brief Unregisters the callback function.
2170  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2171  * @param[in] camera The handle to the camera
2172  * @return @c 0 on success, otherwise a negative error value
2173  * @retval #CAMERA_ERROR_NONE Successful
2174  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2175  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2176  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2177  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2178  * @see camera_set_interrupted_cb()
2179  */
2180 int camera_unset_interrupted_cb(camera_h camera);
2181
2182 /**
2183  * @brief Registers a callback function to be called when the camera interrupt is started by policy.
2184  * @since_tizen 4.0
2185  * @param[in] camera    The handle to the camera
2186  * @param[in] callback  The callback function to register
2187  * @param[in] user_data The user data to be passed to the callback function
2188  * @return @c 0 on success, otherwise a negative error value
2189  * @retval #CAMERA_ERROR_NONE Successful
2190  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2191  * @see camera_unset_interrupt_started_cb()
2192  * @see camera_interrupt_started_cb()
2193  */
2194 int camera_set_interrupt_started_cb(camera_h camera, camera_interrupt_started_cb callback, void *user_data);
2195
2196 /**
2197  * @brief Unregisters the callback function.
2198  * @since_tizen 4.0
2199  * @param[in] camera The handle to the camera
2200  * @return @c 0 on success, otherwise a negative error value
2201  * @retval #CAMERA_ERROR_NONE Successful
2202  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2203  * @see camera_set_interrupt_started_cb()
2204  */
2205 int camera_unset_interrupt_started_cb(camera_h camera);
2206
2207 /**
2208  * @brief Registers a callback function to be called when the auto-focus state changes.
2209  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2210  * @param[in] camera    The handle to the camera
2211  * @param[in] callback  The callback function to register
2212  * @param[in] user_data The user data to be passed to the callback function
2213  * @return @c 0 on success, otherwise a negative error value
2214  * @retval #CAMERA_ERROR_NONE Successful
2215  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2216  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2217  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2218  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2219  * @post This function will invoke camera_focus_changed_cb() when the auto-focus state changes.
2220  * @see camera_start_focusing()
2221  * @see camera_cancel_focusing()
2222  * @see camera_unset_focus_changed_cb()
2223  * @see camera_focus_changed_cb()
2224  */
2225 int camera_set_focus_changed_cb(camera_h camera, camera_focus_changed_cb callback, void *user_data);
2226
2227 /**
2228  * @brief Unregisters the callback function.
2229  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2230  * @param[in] camera The handle to the camera
2231  * @return @c 0 on success, otherwise a negative error value
2232  * @retval #CAMERA_ERROR_NONE Successful
2233  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2234  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2235  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2236  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2237  * @see camera_set_focus_changed_cb()
2238  */
2239 int camera_unset_focus_changed_cb(camera_h camera);
2240
2241 /**
2242  * @brief Registers a callback function to be called when an asynchronous operation error occurs.
2243  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2244  * @remarks This callback informs about a critical error situation.\n
2245  *          When this callback is invoked, the user should release the resource and terminate the application.\n
2246  *          In case of errors, one of the following codes will occur:\n
2247  *          #CAMERA_ERROR_DEVICE,\n
2248  *          #CAMERA_ERROR_INVALID_OPERATION,\n
2249  *          #CAMERA_ERROR_OUT_OF_MEMORY.
2250  * @param[in] camera    The handle to the camera
2251  * @param[in] callback  The callback function to register
2252  * @param[in] user_data The user data to be passed to the callback function
2253  * @return @c 0 on success, otherwise a negative error value
2254  * @retval #CAMERA_ERROR_NONE Successful
2255  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2256  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2257  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2258  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2259  * @post This function will invoke camera_error_cb() when an asynchronous operation error occurs.
2260
2261  * @see camera_unset_error_cb()
2262  * @see camera_error_cb()
2263  */
2264 int camera_set_error_cb(camera_h camera, camera_error_cb callback, void *user_data);
2265
2266 /**
2267  * @brief Unregisters the callback function.
2268  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2269  * @param[in] camera The handle to the camera
2270  * @return @c 0 on success, otherwise a negative error value
2271  * @retval #CAMERA_ERROR_NONE Successful
2272  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2273  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2274  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2275  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2276  * @see camera_set_error_cb()
2277  */
2278 int camera_unset_error_cb(camera_h camera);
2279
2280 /**
2281  * @brief Gets the state of camera device.
2282  * @since_tizen 3.0
2283  * @param[in]  device The hardware camera type
2284  * @param[out] state  The current state of the device
2285  * @return @c 0 on success, otherwise a negative error value
2286  * @retval #CAMERA_ERROR_NONE Successful
2287  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2288  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2289  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
2290  */
2291 int camera_get_device_state(camera_device_e device, camera_device_state_e *state);
2292
2293 /**
2294  * @brief Registers a callback function to be called when the camera device state changes.
2295  * @since_tizen 3.0
2296  * @param[in]  callback  The callback function to register
2297  * @param[in]  user_data The user data to be passed to the callback function
2298  * @param[out] cb_id     The id of registered callback
2299  * @return @c 0 on success, otherwise a negative error value
2300  * @retval #CAMERA_ERROR_NONE Successful
2301  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2302  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2303  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
2304  * @retval #CAMERA_ERROR_OUT_OF_MEMORY Out of memory
2305  * @post This function will invoke camera_device_state_changed_cb() when the camera device's state changes.
2306  * @see camera_remove_device_state_changed_cb()
2307  * @see camera_device_state_changed_cb()
2308  */
2309 int camera_add_device_state_changed_cb(camera_device_state_changed_cb callback, void *user_data, int *cb_id);
2310
2311 /**
2312  * @brief Unregisters the callback function.
2313  * @since_tizen 3.0
2314  * @param[in] cb_id The id of registered callback
2315  * @return @c 0 on success, otherwise a negative error value
2316  * @retval #CAMERA_ERROR_NONE Successful
2317  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2318  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2319  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
2320  * @see camera_add_device_state_changed_cb()
2321  */
2322 int camera_remove_device_state_changed_cb(int cb_id);
2323
2324 /**
2325  * @}
2326  */
2327
2328 /**
2329  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
2330  * @{
2331  */
2332
2333 /**
2334  * @brief Called to get each supported auto-focus mode.
2335  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2336  * @param[in] mode      The supported auto-focus mode
2337  * @param[in] user_data The user data passed from the foreach function
2338  * @return @c true to continue with the next iteration of the loop, \n otherwise @c false to break out of the loop
2339  * @pre camera_attr_foreach_supported_af_mode() will invoke this callback.
2340  * @see camera_attr_foreach_supported_af_mode()
2341  */
2342 typedef bool (*camera_attr_supported_af_mode_cb)(camera_attr_af_mode_e mode, void *user_data);
2343
2344 /**
2345  * @brief Called to get each supported exposure mode.
2346  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2347  * @param[in] mode      The supported exposure mode
2348  * @param[in] user_data The user data passed from the foreach function
2349  * @return @c true to continue with the next iteration of the loop, \n otherwise @c false to break out of the loop
2350  * @pre camera_attr_foreach_supported_exposure_mode() will invoke this callback.
2351  * @see camera_attr_foreach_supported_exposure_mode()
2352  * @see #camera_attr_exposure_mode_e
2353  */
2354 typedef bool (*camera_attr_supported_exposure_mode_cb)(camera_attr_exposure_mode_e mode, void *user_data);
2355
2356 /**
2357  * @brief Called to get each supported ISO mode.
2358  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2359  * @param[in] iso       The supported ISO mode
2360  * @param[in] user_data The user data passed from the foreach function
2361  * @return @c true to continue with the next iteration of the loop, \n otherwise @c false to break out of the loop
2362  * @pre camera_attr_foreach_supported_iso() will invoke this callback.
2363  * @see camera_attr_foreach_supported_iso()
2364  */
2365 typedef bool (*camera_attr_supported_iso_cb)(camera_attr_iso_e iso, void *user_data);
2366
2367 /**
2368  * @brief Called to get each supported white balance.
2369  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2370  * @param[in] wb        The supported white balance mode
2371  * @param[in] user_data The user data passed from the foreach function
2372  * @return @c true to continue with the next iteration of the loop, \n otherwise @c false to break out of the loop
2373  * @pre camera_attr_foreach_supported_whitebalance() will invoke this callback.
2374  * @see camera_attr_foreach_supported_whitebalance()
2375  * @see #camera_attr_whitebalance_e
2376  */
2377 typedef bool (*camera_attr_supported_whitebalance_cb)(camera_attr_whitebalance_e wb, void *user_data);
2378
2379 /**
2380  * @brief Called to get each supported effect mode.
2381  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2382  * @param[in] effect    The supported effect mode
2383  * @param[in] user_data The user data passed from the foreach function
2384  * @return @c true to continue with the next iteration of the loop, \n otherwise @c false to break out of the loop
2385  * @pre camera_attr_foreach_supported_effect() will invoke this callback.
2386  * @see camera_attr_foreach_supported_effect()
2387  */
2388 typedef bool (*camera_attr_supported_effect_cb)(camera_attr_effect_mode_e effect, void *user_data);
2389
2390 /**
2391  * @brief Called to get each supported scene mode.
2392  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2393  * @param[in] mode      The supported scene mode
2394  * @param[in] user_data The user data passed from the foreach function
2395  * @return @c true to continue with the next iteration of the loop, \n otherwise @c false to break out of the loop
2396  * @pre camera_attr_foreach_supported_scene_mode() will invoke this callback.
2397  * @see camera_attr_foreach_supported_scene_mode()
2398  * @see #camera_attr_scene_mode_e
2399  */
2400 typedef bool (*camera_attr_supported_scene_mode_cb)(camera_attr_scene_mode_e mode, void *user_data);
2401
2402 /**
2403  * @brief Called to get each supported flash mode.
2404  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2405  * @param[in] mode      The supported flash mode
2406  * @param[in] user_data The user data passed from the foreach function
2407  * @return @c true to continue with the next iteration of the loop, \n otherwise @c false to break out of the loop
2408  * @pre camera_attr_foreach_supported_flash_mode() will invoke this callback.
2409  * @see camera_attr_foreach_supported_flash_mode()
2410  */
2411 typedef bool (*camera_attr_supported_flash_mode_cb)(camera_attr_flash_mode_e mode, void *user_data);
2412
2413 /**
2414  * @brief Called to get each supported FPS mode.
2415  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2416  * @param[in] fps       The supported FPS mode
2417  * @param[in] user_data The user data passed from the foreach function
2418  * @return @c true to continue with the next iteration of the loop, \n otherwise @c false to break out of the loop
2419  * @pre camera_attr_foreach_supported_fps() will invoke this callback.
2420  * @see camera_attr_foreach_supported_fps()
2421  */
2422 typedef bool (*camera_attr_supported_fps_cb)(camera_attr_fps_e fps, void *user_data);
2423
2424 /**
2425  * @brief Called to get each supported stream flip mode.
2426  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2427  * @param[in] flip      The supported stream flip mode
2428  * @param[in] user_data The user data passed from the foreach function
2429  * @return @c true to continue with the next iteration of the loop, \n @c false to break out of the loop
2430  * @pre camera_attr_foreach_supported_stream_flip() will invoke this callback.
2431  * @see camera_attr_foreach_supported_stream_flip()
2432  */
2433 typedef bool (*camera_attr_supported_stream_flip_cb)(camera_flip_e flip, void *user_data);
2434
2435 /**
2436  * @brief Called to get each supported stream rotation mode.
2437  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2438  * @param[in] rotation  The supported stream rotation mode
2439  * @param[in] user_data The user data passed from the foreach function
2440  * @return @c true to continue with the next iteration of the loop, \n @c false to break out of the loop
2441  * @pre camera_attr_foreach_supported_stream_rotation() will invoke this callback.
2442  * @see camera_attr_foreach_supported_stream_rotation()
2443  */
2444 typedef bool (*camera_attr_supported_stream_rotation_cb)(camera_rotation_e rotation, void *user_data);
2445
2446 /**
2447  * @brief Called to get each supported theater mode.
2448  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2449  * @param[in] mode      The supported theater mode
2450  * @param[in] user_data The user data passed from the foreach function
2451  * @return @c true to continue with the next iteration of the loop, \n @c false to break out of the loop
2452  * @pre camera_attr_foreach_supported_theater_mode() will invoke this callback.
2453  * @see camera_attr_foreach_supported_theater_mode()
2454  */
2455 typedef bool (*camera_attr_supported_theater_mode_cb)(camera_attr_theater_mode_e mode, void *user_data);
2456
2457 /**
2458  * @brief Called to get each supported PTZ (Pan Tilt Zoom) type.
2459  * @since_tizen 3.0
2460  * @param[in] type      The supported ptz type
2461  * @param[in] user_data The user data passed from the foreach function
2462  * @return @c true to continue with the next iteration of the loop, \n @c false to break out of the loop
2463  * @pre camera_attr_foreach_supported_ptz_mode() will invoke this callback.
2464  * @see camera_attr_foreach_supported_ptz_mode()
2465  */
2466 typedef bool (*camera_attr_supported_ptz_type_cb)(camera_attr_ptz_type_e type, void *user_data);
2467
2468
2469 /**
2470  * @}
2471  */
2472
2473 /**
2474  * @addtogroup CAPI_MEDIA_CAMERA_ATTRIBUTES_MODULE
2475  * @{
2476  */
2477
2478 /**
2479  * @brief Sets the preview frame rate.
2480  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2481  * @remarks This function should be called before previewing (see camera_start_preview()).
2482  * @param[in] camera The handle to the camera
2483  * @param[in] fps    The frame rate
2484  * @return @c 0 on success, otherwise a negative error value
2485  * @retval #CAMERA_ERROR_NONE Successful
2486  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2487  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2488  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
2489  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2490  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2491  * @pre The camera state must be set to #CAMERA_STATE_CREATED.
2492  * @see camera_start_preview()
2493  * @see camera_attr_get_preview_fps()
2494  * @see camera_attr_foreach_supported_fps()
2495  */
2496 int camera_attr_set_preview_fps(camera_h camera, camera_attr_fps_e fps);
2497
2498 /**
2499  * @brief Gets the frames per second of a preview video stream.
2500  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2501  * @param[in]  camera The handle to the camera
2502  * @param[out] fps    The frames per second of the preview video stream
2503  * @return @c 0 on success, otherwise a negative error value
2504  * @retval #CAMERA_ERROR_NONE Successful
2505  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2506  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2507  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2508  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2509  * @see camera_attr_set_preview_fps()
2510  * @see camera_attr_foreach_supported_fps()
2511  */
2512 int camera_attr_get_preview_fps(camera_h camera, camera_attr_fps_e *fps);
2513
2514 /**
2515  * @brief Sets the bitrate of extra preview.
2516  * @since_tizen 7.0
2517  * @param[in] camera    The handle to the camera
2518  * @param[in] stream_id The id of extra preview stream
2519  * @param[in] bitrate   The bitrate(bps) of extra preview
2520  * @return @c 0 on success, otherwise a negative error value
2521  * @retval #CAMERA_ERROR_NONE Successful
2522  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2523  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
2524  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2525  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2526  * @see camera_attr_get_extra_preview_bitrate()
2527  */
2528 int camera_attr_set_extra_preview_bitrate(camera_h camera, int stream_id, int bitrate);
2529
2530 /**
2531  * @brief Gets the bitrate of extra preview.
2532  * @since_tizen 7.0
2533  * @param[in] camera    The handle to the camera
2534  * @param[in] stream_id The id of extra preview stream
2535  * @param[out] bitrate  The bitrate(bps) of extra preview stream
2536  * @return @c 0 on success, otherwise a negative error value
2537  * @retval #CAMERA_ERROR_NONE Successful
2538  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2539  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
2540  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2541  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2542  * @see camera_attr_set_extra_preview_bitrate()
2543  */
2544 int camera_attr_get_extra_preview_bitrate(camera_h camera, int stream_id, int *bitrate);
2545
2546 /**
2547  * @brief Sets the GOP (Group Of Pictures) interval of extra preview.
2548  * @since_tizen 7.0
2549  * @remarks The recommended range is from 1,000 (1 second) to 600,000 (10 minutes). \n
2550  *          But, due to codec limitations, it may not apply.
2551  * @param[in] camera    The handle to the camera
2552  * @param[in] stream_id The id of extra preview stream
2553  * @param[in] interval  The GOP interval of extra preview (millisecond)
2554  * @return @c 0 on success, otherwise a negative error value
2555  * @retval #CAMERA_ERROR_NONE Successful
2556  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2557  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
2558  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2559  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2560  * @see camera_attr_get_extra_preview_gop_interval()
2561  */
2562 int camera_attr_set_extra_preview_gop_interval(camera_h camera, int stream_id, int interval);
2563
2564 /**
2565  * @brief Gets the GOP (Group Of Pictures) interval of extra preview.
2566  * @since_tizen 7.0
2567  * @param[in] camera    The handle to the camera
2568  * @param[in] stream_id The id of extra preview stream
2569  * @param[out] interval The GOP interval of extra preview (millisecond)
2570  * @return @c 0 on success, otherwise a negative error value
2571  * @retval #CAMERA_ERROR_NONE Successful
2572  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2573  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
2574  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2575  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2576  * @see camera_attr_set_extra_preview_gop_interval()
2577  */
2578 int camera_attr_get_extra_preview_gop_interval(camera_h camera, int stream_id, int *interval);
2579
2580 /**
2581  * @brief Gets the rotation of preview frame.
2582  * @since_tizen 7.0
2583  * @remarks The function should be called in camera_preview_cb(),\n
2584  *          otherwise, it will return #CAMERA_ERROR_INVALID_OPERATION.
2585  * @param[in] camera    The handle to the camera
2586  * @param[out] rotation The rotation of preview frame
2587  * @return @c 0 on success, otherwise a negative error value
2588  * @retval #CAMERA_ERROR_NONE Successful
2589  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
2590  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2591  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2592  */
2593 int camera_attr_get_preview_frame_rotation(camera_h camera, camera_rotation_e *rotation);
2594
2595 /**
2596  * @}
2597  */
2598
2599 /**
2600  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
2601  * @{
2602  */
2603
2604 /**
2605  * @brief Retrieves all supported FPS modes by invoking the callback function once for each supported FPS mode.
2606  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2607  * @param[in] camera    The handle to the camera
2608  * @param[in] callback  The callback function to invoke
2609  * @param[in] user_data The user data to be passed to the callback function
2610  * @return @c 0 on success, otherwise a negative error value
2611  * @retval #CAMERA_ERROR_NONE Successful
2612  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2613  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2614  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2615  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2616  * @post This function invokes camera_attr_supported_fps_cb() repeatedly to get each supported FPS mode.
2617  * @see camera_attr_set_preview_fps()
2618  * @see camera_attr_get_preview_fps()
2619  * @see camera_attr_supported_fps_cb()
2620  */
2621 int camera_attr_foreach_supported_fps(camera_h camera, camera_attr_supported_fps_cb callback, void *user_data);
2622
2623 /**
2624  * @brief Retrieves all supported FPS modes by invoking the callback function once for each supported FPS mode.
2625  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
2626  * @param[in] camera    The handle to the camera
2627  * @param[in] width     Required preview resolution's width
2628  * @param[in] height    Required preview resolution's height
2629  * @param[in] callback  The callback function to invoke
2630  * @param[in] user_data The user data to be passed to the callback function
2631  * @return @c 0 on success, otherwise a negative error value
2632  * @retval #CAMERA_ERROR_NONE Successful
2633  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2634  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2635  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2636  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2637  * @post This function invokes camera_attr_supported_fps_cb() repeatedly to get each supported FPS mode.
2638  * @see camera_attr_set_preview_fps()
2639  * @see camera_attr_get_preview_fps()
2640  * @see camera_attr_supported_fps_cb()
2641  */
2642 int camera_attr_foreach_supported_fps_by_resolution(camera_h camera, int width, int height, camera_attr_supported_fps_cb callback, void *user_data);
2643
2644 /**
2645  * @}
2646  */
2647
2648 /**
2649  * @addtogroup CAPI_MEDIA_CAMERA_ATTRIBUTES_MODULE
2650  * @{
2651  */
2652
2653 /**
2654  * @brief Sets quality of the image.
2655  * @details The range for image quality is 1 to 100. If @a quality is out of range, #CAMERA_ERROR_INVALID_PARAMETER error occurred.
2656  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2657  * @param[in] camera  The handle to the camera
2658  * @param[in] quality The quality of image (1 ~ 100)
2659  * @return @c 0 on success, otherwise a negative error value
2660  * @retval #CAMERA_ERROR_NONE Successful
2661  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2662  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2663  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
2664  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2665  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2666  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
2667  * @see camera_start_preview()
2668  * @see camera_attr_get_image_quality()
2669  */
2670 int camera_attr_set_image_quality(camera_h camera, int quality);
2671
2672 /**
2673  * @brief Gets the quality of a still image, which is captured.
2674  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2675  * @param[in]  camera  The handle to the camera
2676  * @param[out] quality The quality of the image(1 ~ 100)
2677  * @return @c 0 on success, otherwise a negative error value
2678  * @retval #CAMERA_ERROR_NONE Successful
2679  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2680  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2681  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2682  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2683  * @see camera_attr_set_image_quality()
2684  */
2685 int camera_attr_get_image_quality(camera_h camera, int *quality);
2686
2687 /**
2688  * @brief Gets the bit rate of encoded preview.
2689  * @since_tizen 3.0
2690  * @param[in]  camera  The handle to the camera
2691  * @param[out] bitrate The bit rate of encoded preview
2692  * @return @c 0 on success, otherwise a negative error value
2693  * @retval #CAMERA_ERROR_NONE Successful
2694  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2695  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
2696  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2697  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2698  * @see camera_attr_set_encoded_preview_bitrate()
2699  */
2700 int camera_attr_get_encoded_preview_bitrate(camera_h camera, int *bitrate);
2701
2702 /**
2703  * @brief Sets the bit rate of encoded preview.
2704  * @since_tizen 3.0
2705  * @remarks The recommended range is from 1,000 (1 kbps) to 100,000,000 (100 Mbps). \n
2706  *          But, due to codec limitations, it may not apply.
2707  * @param[in] camera  The handle to the camera
2708  * @param[in] bitrate The bit rate of encoded preview
2709  * @return @c 0 on success, otherwise a negative error value
2710  * @retval #CAMERA_ERROR_NONE Successful
2711  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2712  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
2713  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2714  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2715  * @see camera_attr_get_encoded_preview_bitrate()
2716  */
2717 int camera_attr_set_encoded_preview_bitrate(camera_h camera, int bitrate);
2718
2719 /**
2720  * @brief Gets the GOP (Group Of Pictures) interval of encoded preview.
2721  * @since_tizen 3.0
2722  * @param[in]  camera   The handle to the camera
2723  * @param[out] interval The GOP interval of encoded preview (millisecond)
2724  * @return @c 0 on success, otherwise a negative error value
2725  * @retval #CAMERA_ERROR_NONE Successful
2726  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2727  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
2728  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2729  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2730  * @see camera_attr_set_encoded_preview_gop_interval()
2731  */
2732 int camera_attr_get_encoded_preview_gop_interval(camera_h camera, int *interval);
2733
2734 /**
2735  * @brief Sets the GOP (Group Of Pictures) interval of encoded preview.
2736  * @since_tizen 3.0
2737  * @remarks The recommended range is from 1,000 (1 second) to 600,000 (10 minutes). \n
2738  *          But, due to codec limitations, it may not apply.
2739  * @param[in] camera   The handle to the camera
2740  * @param[in] interval The GOP interval of encoded preview (millisecond)
2741  * @return @c 0 on success, otherwise a negative error value
2742  * @retval #CAMERA_ERROR_NONE Successful
2743  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2744  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
2745  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2746  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2747  * @see camera_attr_get_encoded_preview_gop_interval()
2748  */
2749 int camera_attr_set_encoded_preview_gop_interval(camera_h camera, int interval);
2750
2751 /**
2752  * @brief Sets the zoom level.
2753  * @details The range for the zoom level is received from camera_attr_get_zoom_range(). If @a zoom is out of range, the #CAMERA_ERROR_INVALID_PARAMETER error occurs.
2754  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2755  * @param[in] camera The handle to the camera
2756  * @param[in] zoom   The zoom level
2757  * @return @c 0 on success, otherwise a negative error value
2758  * @retval #CAMERA_ERROR_NONE Successful
2759  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2760  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2761  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
2762  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2763  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2764  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
2765  * @see camera_attr_get_zoom()
2766  * @see camera_attr_get_zoom_range()
2767  */
2768 int camera_attr_set_zoom(camera_h camera, int zoom);
2769
2770 /**
2771  * @brief Gets the zoom level.
2772  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2773  * @param[in]  camera The handle to the camera
2774  * @param[out] zoom   The zoom level
2775  * @return @c 0 on success, otherwise a negative error value
2776  * @retval #CAMERA_ERROR_NONE Successful
2777  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2778  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2779  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2780  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2781  * @see camera_attr_set_zoom()
2782  * @see camera_attr_get_zoom_range()
2783  */
2784 int camera_attr_get_zoom(camera_h camera, int *zoom);
2785
2786 /**
2787  * @brief Gets the available zoom level.
2788  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2789  * @remarks If the min value is greater than the max value, it means that this feature is not supported.
2790  * @param[in]  camera The handle to the camera
2791  * @param[out] min    The minimum zoom level
2792  * @param[out] max    The maximum zoom level
2793  * @return @c 0 on success, otherwise a negative error value
2794  * @retval #CAMERA_ERROR_NONE Successful
2795  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2796  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2797  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2798  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2799  * @see camera_attr_set_zoom()
2800  * @see camera_attr_get_zoom()
2801  */
2802 int camera_attr_get_zoom_range(camera_h camera, int *min, int *max);
2803
2804
2805 /**
2806  * @brief Sets the auto focus mode.
2807  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2808  * @param[in] camera The handle to the camera
2809  * @param[in] mode   The auto focus mode
2810  * @return @c 0 on success, otherwise a negative error value
2811  * @retval #CAMERA_ERROR_NONE Successful
2812  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2813  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2814  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
2815  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2816  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2817  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
2818  * @see camera_attr_get_af_mode()
2819  * @see camera_attr_foreach_supported_af_mode()
2820  * @see #camera_attr_af_mode_e
2821  */
2822 int camera_attr_set_af_mode(camera_h camera, camera_attr_af_mode_e mode);
2823
2824 /**
2825  * @brief Gets the auto focus mode.
2826  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2827  * @param[in]  camera The handle to the camera
2828  * @param[out] mode   The auto focus mode
2829  * @return @c 0 on success, otherwise a negative error value
2830  * @retval #CAMERA_ERROR_NONE Successful
2831  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2832  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2833  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2834  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2835  * @see camera_attr_foreach_supported_af_mode()
2836  * @see camera_attr_set_af_mode()
2837  * @see #camera_attr_af_mode_e
2838  */
2839 int camera_attr_get_af_mode(camera_h camera, camera_attr_af_mode_e *mode);
2840
2841 /**
2842  * @brief Sets auto focus area.
2843  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2844  * @remarks This API is invalid in the #CAMERA_ATTR_AF_NONE mode.\n
2845  *          The coordinates are mapped to preview area.
2846  * @param[in] camera The handle to the camera
2847  * @param[in] x      The x coordinates of the focus area
2848  * @param[in] y      The y coordinates of the focus area
2849  * @return @c 0 on success, otherwise a negative error value
2850  * @retval #CAMERA_ERROR_NONE Successful
2851  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2852  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2853  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
2854  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
2855  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2856  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2857  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
2858  * @see camera_attr_set_af_mode()
2859  * @see camera_attr_clear_af_area()
2860  */
2861 int camera_attr_set_af_area(camera_h camera, int x, int y);
2862
2863 /**
2864  * @brief Clears the auto focus area.
2865  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2866  * @remarks The focusing area is set to the center.
2867  * @param[in] camera The handle to the camera
2868  * @return @c 0 on success, otherwise a negative error value
2869  * @retval #CAMERA_ERROR_NONE Successful
2870  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2871  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2872  * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
2873  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2874  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2875  * @see camera_attr_set_af_mode()
2876  * @see camera_attr_set_af_area()
2877  */
2878 int camera_attr_clear_af_area(camera_h camera);
2879
2880 /**
2881  * @}
2882  */
2883
2884 /**
2885  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
2886  * @{
2887  */
2888
2889 /**
2890  * @brief Retrieves all supported auto focus modes by invoking the callback function once for each supported auto focus mode.
2891  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2892  * @param[in] camera    The handle to the camera
2893  * @param[in] callback  The callback function to invoke
2894  * @param[in] user_data The user data to be passed to the callback function
2895  * @return @c 0 on success, otherwise a negative error value
2896  * @retval #CAMERA_ERROR_NONE Successful
2897  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2898  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2899  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2900  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2901  * @post This function invokes camera_attr_supported_af_mode_cb() to get all the supported auto focus modes.
2902  * @see camera_attr_set_af_mode()
2903  * @see camera_attr_get_af_mode()
2904  * @see camera_attr_supported_af_mode_cb()
2905  */
2906 int camera_attr_foreach_supported_af_mode(camera_h camera, camera_attr_supported_af_mode_cb callback, void *user_data);
2907
2908 /**
2909  * @}
2910  */
2911
2912 /**
2913  * @addtogroup CAPI_MEDIA_CAMERA_ATTRIBUTES_MODULE
2914  * @{
2915  */
2916
2917 /**
2918  * @brief Sets the exposure mode.
2919  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2920  * @param[in] camera The handle to the camera
2921  * @param[in] mode   The exposure mode
2922  * @return @c 0 on success, otherwise a negative error value
2923  * @retval #CAMERA_ERROR_NONE Successful
2924  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2925  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2926  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
2927  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2928  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2929  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
2930  * @see camera_attr_get_exposure_mode()
2931  * @see camera_attr_foreach_supported_exposure_mode()
2932  */
2933 int camera_attr_set_exposure_mode(camera_h camera, camera_attr_exposure_mode_e mode);
2934
2935 /**
2936  * @brief Gets the exposure mode.
2937  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2938  * @param[in]  camera The handle to the camera
2939  * @param[out] mode   The exposure mode
2940  * @return @c 0 on success, otherwise a negative error value
2941  * @retval #CAMERA_ERROR_NONE Successful
2942  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2943  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2944  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2945  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2946  * @see camera_attr_set_exposure_mode()
2947  * @see camera_attr_foreach_supported_exposure_mode()
2948  */
2949 int camera_attr_get_exposure_mode(camera_h camera, camera_attr_exposure_mode_e *mode);
2950
2951 /**
2952  * @}
2953  */
2954
2955 /**
2956  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
2957  * @{
2958  */
2959
2960 /**
2961  * @brief Retrieves all supported exposure modes by invoking the callback function once for each supported exposure mode.
2962  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2963  * @param[in] camera    The handle to the camera
2964  * @param[in] callback  The callback function to be invoked
2965  * @param[in] user_data The user data to be passed to the callback function
2966  * @return @c 0 on success, otherwise a negative error value
2967  * @retval #CAMERA_ERROR_NONE Successful
2968  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2969  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2970  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2971  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2972  * @post This function invokes camera_attr_supported_exposure_mode_cb() to get all the supported exposure modes.
2973  * @see camera_attr_set_exposure_mode()
2974  * @see camera_attr_get_exposure_mode()
2975  * @see camera_attr_supported_exposure_mode_cb()
2976  */
2977 int camera_attr_foreach_supported_exposure_mode(camera_h camera, camera_attr_supported_exposure_mode_cb callback, void *user_data);
2978
2979 /**
2980  * @}
2981  */
2982
2983 /**
2984  * @addtogroup CAPI_MEDIA_CAMERA_ATTRIBUTES_MODULE
2985  * @{
2986  */
2987
2988 /**
2989  * @brief Sets the exposure value.
2990  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
2991  * @param[in] camera The handle to the camera
2992  * @param[in] value  The exposure value
2993  * @return @c 0 on success, otherwise a negative error value
2994  * @retval #CAMERA_ERROR_NONE Successful
2995  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
2996  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
2997  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
2998  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
2999  * @see camera_attr_get_exposure()
3000  */
3001 int camera_attr_set_exposure(camera_h camera, int value);
3002
3003 /**
3004  * @brief Gets the exposure value.
3005  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3006  * @param[in]  camera The handle to the camera
3007  * @param[out] value  The exposure value
3008  * @return @c 0 on success, otherwise a negative error value
3009  * @retval #CAMERA_ERROR_NONE Successful
3010  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3011  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3012  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3013  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3014  * @see camera_attr_set_exposure()
3015  */
3016 int camera_attr_get_exposure(camera_h camera, int *value);
3017
3018 /**
3019  * @brief Gets the available exposure value.
3020  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3021  * @remarks If the min value is greater than the max value, it means that this feature is not supported.
3022  * @param[in]  camera The handle to the camera
3023  * @param[out] min    The minimum exposure value
3024  * @param[out] max    The maximum exposure value
3025  * @return @c 0 on success, otherwise a negative error value
3026  * @retval #CAMERA_ERROR_NONE Successful
3027  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3028  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3029  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3030  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3031  * @see camera_attr_set_exposure()
3032  */
3033 int camera_attr_get_exposure_range(camera_h camera, int *min, int *max);
3034
3035 /**
3036  * @brief Sets the ISO level.
3037  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3038  * @param[in] camera The handle to the camera
3039  * @param[in] iso    The ISO level
3040  * @return @c 0 on success, otherwise a negative error value
3041  * @retval #CAMERA_ERROR_NONE Successful
3042  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3043  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3044  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
3045  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3046  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3047  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
3048  * @see camera_attr_get_iso()
3049  * @see camera_attr_foreach_supported_iso()
3050  */
3051 int camera_attr_set_iso(camera_h camera, camera_attr_iso_e iso);
3052
3053 /**
3054  * @brief Gets the ISO level.
3055  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3056  * @param[in]  camera The handle to the camera
3057  * @param[out] iso    The ISO level
3058  * @return @c 0 on success, otherwise a negative error value
3059  * @retval #CAMERA_ERROR_NONE Successful
3060  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3061  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3062  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3063  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3064  * @see camera_attr_set_iso()
3065  * @see camera_attr_foreach_supported_iso()
3066  */
3067 int camera_attr_get_iso(camera_h camera, camera_attr_iso_e *iso);
3068
3069 /**
3070  * @}
3071  */
3072
3073 /**
3074  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
3075  * @{
3076  */
3077
3078 /**
3079  * @brief Retrieves all supported ISO levels by invoking the callback function once for each supported ISO level.
3080  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3081  * @param[in] camera    The handle to the camera
3082  * @param[in] callback  The callback function to be invoked
3083  * @param[in] user_data The user data to be passed to the callback function
3084  * @return @c 0 on success, otherwise a negative error value
3085  * @retval #CAMERA_ERROR_NONE Successful
3086  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3087  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3088  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3089  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3090  * @post This function invokes camera_attr_supported_iso_cb() to get all the supported ISO levels.
3091  * @see camera_attr_set_iso()
3092  * @see camera_attr_get_iso()
3093  * @see camera_attr_supported_iso_cb()
3094  */
3095 int camera_attr_foreach_supported_iso(camera_h camera, camera_attr_supported_iso_cb callback, void *user_data);
3096
3097 /**
3098  * @}
3099  */
3100
3101 /**
3102  * @addtogroup CAPI_MEDIA_CAMERA_ATTRIBUTES_MODULE
3103  * @{
3104  */
3105
3106 /**
3107  * @brief Sets the theater mode.
3108  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3109  * @remarks If you want to display the preview image on the external display with the full screen mode, use this function.
3110  * @param[in] camera The handle to the camera
3111  * @param[in] mode   The theater mode
3112  * @return @c 0 on success, otherwise a negative error value
3113  * @retval #CAMERA_ERROR_NONE Successful
3114  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3115  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3116  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3117  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3118  * @pre This function is valid only when the external display is connected.
3119  * @see camera_attr_get_theater_mode()
3120  */
3121 int camera_attr_set_theater_mode(camera_h camera, camera_attr_theater_mode_e mode);
3122
3123 /**
3124  * @brief Gets the theater mode.
3125  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3126  * @param[in]  camera The handle to the camera
3127  * @param[out] mode   The theater mode
3128  * @return @c 0 on success, otherwise a negative error value
3129  * @retval #CAMERA_ERROR_NONE Successful
3130  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3131  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3132  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3133  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3134  * @see camera_attr_set_theater_mode()
3135  */
3136 int camera_attr_get_theater_mode(camera_h camera, camera_attr_theater_mode_e *mode);
3137
3138 /**
3139  * @}
3140  */
3141
3142 /**
3143  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
3144  * @{
3145  */
3146
3147 /**
3148  * @brief Retrieves all supported theater modes by invoking callback function once for each supported theater modes.
3149  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3150  * @param[in] camera    The handle to the camera
3151  * @param[in] callback  The callback function to be invoked
3152  * @param[in] user_data The user data to be passed to the callback function
3153  * @return @c 0 on success, otherwise a negative error value
3154  * @retval #CAMERA_ERROR_NONE Successful
3155  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3156  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3157  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3158  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3159  * @post This function invokes camera_attr_supported_theater_mode_cb() to get all supported theater modes.
3160  * @see camera_attr_set_theater_mode()
3161  * @see camera_attr_get_theater_mode()
3162  * @see camera_attr_supported_theater_mode_cb()
3163  */
3164 int camera_attr_foreach_supported_theater_mode(camera_h camera, camera_attr_supported_theater_mode_cb callback, void *user_data);
3165
3166 /**
3167  * @}
3168  */
3169
3170
3171 /**
3172  * @addtogroup CAPI_MEDIA_CAMERA_ATTRIBUTES_MODULE
3173  * @{
3174  */
3175
3176 /**
3177  * @brief Sets the brightness level.
3178  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3179  * @remarks If the min value is greater than the max value from camera_attr_get_brightness_range(), \n
3180  *          it means that this feature is not supported.
3181  * @param[in] camera The handle to the camera
3182  * @param[in] level The brightness level
3183  * @return @c 0 on success, otherwise a negative error value
3184  * @retval #CAMERA_ERROR_NONE Successful
3185  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3186  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3187  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
3188  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3189  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3190  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
3191  * @see camera_attr_get_brightness()
3192  * @see camera_attr_get_brightness_range()
3193  */
3194 int camera_attr_set_brightness(camera_h camera, int level);
3195
3196 /**
3197  * @brief Gets the brightness level.
3198  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3199  * @param[in]  camera The handle to the camera
3200  * @param[out] level  The brightness level
3201  * @return @c 0 on success, otherwise a negative error value
3202  * @retval #CAMERA_ERROR_NONE Successful
3203  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3204  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3205  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3206  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3207  * @see camera_attr_set_brightness()
3208  * @see camera_attr_get_brightness_range()
3209  */
3210 int camera_attr_get_brightness(camera_h camera, int *level);
3211
3212 /**
3213  * @brief Gets the available brightness level.
3214  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3215  * @remarks If the min value is greater than the max value, it means that this feature is not supported.
3216  * @param[in]  camera The handle to the camera
3217  * @param[out] min    The minimum brightness level
3218  * @param[out] max    The maximum brightness level
3219  * @return @c 0 on success, otherwise a negative error value
3220  * @retval #CAMERA_ERROR_NONE Successful
3221  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3222  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3223  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3224  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3225  * @see camera_attr_set_brightness()
3226  * @see camera_attr_get_brightness()
3227  */
3228 int camera_attr_get_brightness_range(camera_h camera, int *min, int *max);
3229
3230 /**
3231  * @brief Sets the contrast level.
3232  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3233  * @param[in] camera The handle to the camera
3234  * @param[in] level  The contrast level
3235  * @return @c 0 on success, otherwise a negative error value
3236  * @retval #CAMERA_ERROR_NONE Successful
3237  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3238  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3239  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
3240  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3241  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3242  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
3243  * @see camera_attr_get_contrast()
3244  * @see camera_attr_get_contrast_range()
3245  */
3246 int camera_attr_set_contrast(camera_h camera, int level);
3247
3248 /**
3249  * @brief Gets the contrast level.
3250  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3251  * @param[in]  camera The handle to the camera
3252  * @param[out] level  The contrast level
3253  * @return @c 0 on success, otherwise a negative error value
3254  * @retval #CAMERA_ERROR_NONE Successful
3255  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3256  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3257  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3258  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3259  * @see camera_attr_set_contrast()
3260  * @see camera_attr_get_contrast_range()
3261  */
3262 int camera_attr_get_contrast(camera_h camera, int *level);
3263
3264 /**
3265  * @brief Gets the available contrast level.
3266  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3267  * @remarks If the min value is greater than the max value, it means that this feature is not supported.
3268  * @param[in]  camera The handle to the camera
3269  * @param[out] min    The minimum contrast level
3270  * @param[out] max    The maximum contrast level
3271  * @return @c 0 on success, otherwise a negative error value
3272  * @retval #CAMERA_ERROR_NONE Successful
3273  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3274  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3275  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3276  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3277  * @see camera_attr_set_contrast()
3278  * @see camera_attr_get_contrast()
3279  */
3280 int camera_attr_get_contrast_range(camera_h camera, int *min, int *max);
3281
3282 /**
3283  * @brief Sets the hue level.
3284  * @since_tizen 5.0
3285  * @param[in] camera The handle to the camera
3286  * @param[in] level  The hue level
3287  * @return @c 0 on success, otherwise a negative error value
3288  * @retval #CAMERA_ERROR_NONE Successful
3289  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3290  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3291  * @see camera_attr_get_hue()
3292  * @see camera_attr_get_hue_range()
3293  */
3294 int camera_attr_set_hue(camera_h camera, int level);
3295
3296 /**
3297  * @brief Gets the hue level.
3298  * @since_tizen 5.0
3299  * @param[in]  camera The handle to the camera
3300  * @param[out] level  The hue level
3301  * @return @c 0 on success, otherwise a negative error value
3302  * @retval #CAMERA_ERROR_NONE Successful
3303  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3304  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3305  * @see camera_attr_set_hue()
3306  * @see camera_attr_get_hue_range()
3307  */
3308 int camera_attr_get_hue(camera_h camera, int *level);
3309
3310 /**
3311  * @brief Gets the available hue level.
3312  * @since_tizen 5.0
3313  * @remarks If the min value is greater than the max value, it means that this feature is not supported.
3314  * @param[in]  camera The handle to the camera
3315  * @param[out] min    The minimum hue level
3316  * @param[out] max    The maximum hue level
3317  * @return @c 0 on success, otherwise a negative error value
3318  * @retval #CAMERA_ERROR_NONE Successful
3319  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3320  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3321  * @see camera_attr_set_hue()
3322  * @see camera_attr_get_hue()
3323  */
3324 int camera_attr_get_hue_range(camera_h camera, int *min, int *max);
3325
3326 /**
3327  * @brief Sets the white balance mode.
3328  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3329  * @param[in] camera       The handle to the camera
3330  * @param[in] whitebalance The white balance mode
3331  * @return @c 0 on success, otherwise a negative error value
3332  * @retval #CAMERA_ERROR_NONE Successful
3333  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3334  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3335  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
3336  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3337  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3338  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
3339  * @see camera_attr_foreach_supported_whitebalance()
3340  * @see camera_attr_get_whitebalance()
3341  */
3342 int camera_attr_set_whitebalance(camera_h camera, camera_attr_whitebalance_e whitebalance);
3343
3344 /**
3345  * @brief Gets the white balance mode.
3346  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3347  * @param[in]  camera       The handle to the camera
3348  * @param[out] whitebalance The white balance mode
3349  * @return @c 0 on success, otherwise a negative error value
3350  * @retval #CAMERA_ERROR_NONE Successful
3351  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3352  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3353  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3354  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3355  * @see camera_attr_foreach_supported_whitebalance()
3356  * @see camera_attr_set_whitebalance()
3357  */
3358 int camera_attr_get_whitebalance(camera_h camera, camera_attr_whitebalance_e *whitebalance);
3359
3360 /**
3361  * @}
3362  */
3363
3364 /**
3365  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
3366  * @{
3367  */
3368
3369 /**
3370  * @brief Retrieves all supported white balances by invoking the callback function once for each supported white balance.
3371  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3372  * @param[in] camera    The handle to the camera
3373  * @param[in] callback  The callback function to be invoked
3374  * @param[in] user_data The user data to be passed to the callback function
3375  * @return @c 0 on success, otherwise a negative error value
3376  * @retval #CAMERA_ERROR_NONE Successful
3377  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3378  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3379  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3380  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3381  * @post This function invokes camera_attr_supported_whitebalance_cb() to get all the supported white balances.
3382  * @see camera_attr_set_whitebalance()
3383  * @see camera_attr_get_whitebalance()
3384  * @see camera_attr_supported_whitebalance_cb()
3385  */
3386 int camera_attr_foreach_supported_whitebalance(camera_h camera, camera_attr_supported_whitebalance_cb callback, void *user_data);
3387
3388 /**
3389  * @}
3390  */
3391
3392 /**
3393  * @addtogroup CAPI_MEDIA_CAMERA_ATTRIBUTES_MODULE
3394  * @{
3395  */
3396
3397 /**
3398  * @brief Sets the camera effect mode.
3399  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3400  * @param[in] camera The handle to the camera
3401  * @param[in] effect The camera effect mode
3402  * @return @c 0 on success, otherwise a negative error value
3403  * @retval #CAMERA_ERROR_NONE Successful
3404  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3405  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3406  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
3407  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3408  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3409  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
3410  * @see camera_attr_foreach_supported_effect()
3411  * @see camera_attr_get_effect()
3412  */
3413 int camera_attr_set_effect(camera_h camera, camera_attr_effect_mode_e effect);
3414
3415
3416 /**
3417  * @brief Gets the camera effect mode.
3418  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3419  * @param[in]  camera The handle to the camera
3420  * @param[out] effect The camera effect mode
3421  * @return @c 0 on success, otherwise a negative error value
3422  * @retval #CAMERA_ERROR_NONE Successful
3423  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3424  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3425  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3426  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3427  * @see camera_attr_foreach_supported_effect()
3428  * @see camera_attr_set_effect()
3429  */
3430 int camera_attr_get_effect(camera_h camera, camera_attr_effect_mode_e *effect);
3431
3432 /**
3433  * @}
3434  */
3435
3436 /**
3437  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
3438  * @{
3439  */
3440
3441 /**
3442  * @brief Retrieves all supported effect modes by invoking the callback function once for each supported effect mode.
3443  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3444  * @param[in] camera    The handle to the camera
3445  * @param[in] callback  The callback function to invoke
3446  * @param[in] user_data The user data to be passed to the callback function
3447  * @return @c 0 on success, otherwise a negative error value
3448  * @retval #CAMERA_ERROR_NONE Successful
3449  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3450  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3451  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3452  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3453  * @post This function invokes camera_attr_supported_effect_cb() to get all the supported effect modes.
3454  * @see camera_attr_set_effect()
3455  * @see camera_attr_get_effect()
3456  * @see camera_attr_supported_effect_cb()
3457  */
3458 int camera_attr_foreach_supported_effect(camera_h camera, camera_attr_supported_effect_cb callback, void *user_data);
3459
3460 /**
3461  * @}
3462  */
3463
3464 /**
3465  * @addtogroup CAPI_MEDIA_CAMERA_ATTRIBUTES_MODULE
3466  * @{
3467  */
3468
3469 /**
3470  * @brief Sets the scene mode.
3471  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3472  * @param[in] camera The handle to the camera
3473  * @param[in] mode   The scene mode
3474  * @return @c 0 on success, otherwise a negative error value
3475  * @retval #CAMERA_ERROR_NONE Successful
3476  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3477  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3478  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
3479  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3480  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3481  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
3482  * @see camera_attr_foreach_supported_scene_mode()
3483  * @see camera_attr_get_scene_mode()
3484  */
3485 int camera_attr_set_scene_mode(camera_h camera, camera_attr_scene_mode_e mode);
3486
3487 /**
3488  * @brief Gets the scene mode.
3489  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3490  * @param[in]  camera The handle to the camera
3491  * @param[out] mode   The scene mode
3492  * @return @c 0 on success, otherwise a negative error value
3493  * @retval #CAMERA_ERROR_NONE Successful
3494  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3495  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3496  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3497  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3498  * @see camera_attr_foreach_supported_scene_mode()
3499  * @see camera_attr_set_scene_mode()
3500  */
3501 int camera_attr_get_scene_mode(camera_h camera, camera_attr_scene_mode_e *mode);
3502
3503 /**
3504  * @}
3505  */
3506
3507 /**
3508  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
3509  * @{
3510  */
3511
3512 /**
3513  * @brief Retrieves all supported scene modes by invoking the callback function once for each supported scene mode.
3514  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3515  * @param[in] camera    The handle to the camera
3516  * @param[in] callback  The callback function to invoke
3517  * @param[in] user_data The user data to be passed to the callback function
3518  * @return @c 0 on success, otherwise a negative error value
3519  * @retval #CAMERA_ERROR_NONE Successful
3520  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3521  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3522  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3523  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3524  * @post This function invokes camera_attr_supported_scene_mode_cb() to get all the supported scene modes.
3525  * @see camera_attr_set_scene_mode()
3526  * @see camera_attr_get_scene_mode()
3527  * @see camera_attr_supported_scene_mode_cb()
3528  */
3529 int camera_attr_foreach_supported_scene_mode(camera_h camera, camera_attr_supported_scene_mode_cb callback, void *user_data);
3530
3531 /**
3532  * @}
3533  */
3534
3535 /**
3536  * @addtogroup CAPI_MEDIA_CAMERA_ATTRIBUTES_MODULE
3537  * @{
3538  */
3539
3540 /**
3541  * @brief Enables to write EXIF(Exchangeable image file format) tags in a JPEG file.
3542  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3543  * @param[in] camera The handle to the camera
3544  * @param[in] enable If @c true writing EXIF tags in a JPEG file is enabled, otherwise @c false
3545  * @return @c 0 on success, otherwise a negative error value
3546  * @retval #CAMERA_ERROR_NONE Successful
3547  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3548  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3549  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3550  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3551  * @see         camera_attr_is_enabled_tag()
3552  */
3553 int camera_attr_enable_tag(camera_h camera, bool enable);
3554
3555 /**
3556  * @brief Gets the value that indicates whether writing EXIF(Exchangeable image file format) tags in a JPEG file is enabled.
3557  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3558  * @param[in]  camera   The handle to the camera
3559  * @param[out] enabled  If @c true camera information is enabled, otherwise @c false
3560  * @return @c 0 on success, otherwise a negative error value
3561  * @retval #CAMERA_ERROR_NONE Successful
3562  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3563  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3564  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3565  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3566  * @see         camera_attr_enable_tag()
3567  */
3568 int camera_attr_is_enabled_tag(camera_h camera, bool *enabled);
3569
3570 /**
3571  * @brief Sets the camera image description in the EXIF(Exchangeable image file format) tag.
3572  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3573  * @param[in] camera      The handle to the camera
3574  * @param[in] description The string with description
3575  * @return @c 0 on success, otherwise a negative error value
3576  * @retval #CAMERA_ERROR_NONE Successful
3577  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3578  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3579  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3580  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3581  * @see camera_attr_get_tag_image_description()
3582  */
3583 int camera_attr_set_tag_image_description(camera_h camera, const char *description);
3584
3585 /**
3586  * @brief Gets the camera image description in EXIF(Exchangeable image file format) tag.
3587  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3588  * @remarks You must release @a description using free().
3589  * @param[in]  camera      The handle to the camera
3590  * @param[out] description A pointer to a string
3591  * @return @c 0 on success, otherwise a negative error value
3592  * @retval #CAMERA_ERROR_NONE Successful
3593  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3594  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3595  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3596  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3597  * @see camera_attr_set_tag_image_description()
3598  */
3599 int camera_attr_get_tag_image_description(camera_h camera, char **description);
3600
3601 /**
3602  * @brief Sets the camera orientation in the EXIF(Exchangeable image file format) tag.
3603  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3604  * @param[in] camera      The handle to the camera
3605  * @param[in] orientation The camera orientation
3606  * @return @c 0 on success, otherwise a negative error value
3607  * @retval #CAMERA_ERROR_NONE Successful
3608  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3609  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3610  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3611  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3612  * @see camera_attr_get_tag_orientation()
3613  */
3614 int camera_attr_set_tag_orientation(camera_h camera, camera_attr_tag_orientation_e orientation);
3615
3616 /**
3617  * @brief Gets the camera orientation in the EXIF(Exchangeable image file format) tag.
3618  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3619  * @param[in]  camera      The handle to the camera
3620  * @param[out] orientation The camera orientation
3621  * @return @c 0 on success, otherwise a negative error value
3622  * @retval #CAMERA_ERROR_NONE Successful
3623  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3624  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3625  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3626  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3627  * @see camera_attr_set_tag_orientation()
3628  */
3629 int camera_attr_get_tag_orientation(camera_h camera, camera_attr_tag_orientation_e *orientation);
3630
3631 /**
3632  * @brief Sets the software information in the EXIF(Exchangeable image file format) tag.
3633  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3634  * @param[in] camera   The handle to the camera
3635  * @param[in] software The software information tag
3636  * @return @c 0 on success, otherwise a negative error value
3637  * @retval #CAMERA_ERROR_NONE Successful
3638  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3639  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3640  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3641  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3642  * @see camera_attr_get_tag_software()
3643  */
3644 int camera_attr_set_tag_software(camera_h camera, const char *software);
3645
3646 /**
3647  * @brief Gets the software information in the EXIF(Exchangeable image file format) tag.
3648  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3649  * @remarks You must release @a software using free().
3650  * @param[in]  camera   The handle to the camera
3651  * @param[out] software A pointer to a string
3652  * @return @c 0 on success, otherwise a negative error value
3653  * @retval #CAMERA_ERROR_NONE Successful
3654  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3655  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3656  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3657  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3658  * @see camera_attr_set_tag_software()
3659  */
3660 int camera_attr_get_tag_software(camera_h camera, char **software);
3661
3662 /**
3663  * @brief Sets the geotag(GPS data) in the EXIF(Exchangeable image file format) tag.
3664  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3665  * @param[in] camera    The handle to the camera
3666  * @param[in] latitude  The latitude data
3667  * @param[in] longitude The longitude data
3668  * @param[in] altitude  The altitude data
3669  * @return @c 0 on success, otherwise a negative error value
3670  * @retval #CAMERA_ERROR_NONE Successful
3671  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3672  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3673  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
3674  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3675  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3676  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
3677  * @see camera_attr_get_geotag()
3678  * @see camera_attr_remove_geotag()
3679  */
3680 int camera_attr_set_geotag(camera_h camera, double latitude, double longitude, double altitude);
3681
3682 /**
3683  * @brief Gets the geotag(GPS data) in the EXIF(Exchangeable image file format) tag.
3684  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3685  * @param[in]  camera    The handle to the camera
3686  * @param[out] latitude  The latitude data
3687  * @param[out] longitude The longitude data
3688  * @param[out] altitude  The altitude data
3689  * @return @c 0 on success, otherwise a negative error value
3690  * @retval #CAMERA_ERROR_NONE Successful
3691  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3692  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3693  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3694  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3695  * @see camera_attr_set_geotag()
3696  * @see camera_attr_remove_geotag()
3697  */
3698 int camera_attr_get_geotag(camera_h camera, double *latitude, double *longitude, double *altitude);
3699
3700 /**
3701  * @brief Removes the geotag(GPS data) in the EXIF(Exchangeable image file format) tag.
3702  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3703  * @param[in] camera The handle to the camera
3704  * @return @c 0 on success, otherwise a negative error value
3705  * @retval #CAMERA_ERROR_NONE Successful
3706  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3707  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3708  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
3709  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3710  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3711  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
3712  * @see camera_attr_set_geotag()
3713  * @see camera_attr_get_geotag()
3714  */
3715 int camera_attr_remove_geotag(camera_h camera);
3716
3717 /**
3718  * @brief Sets the camera's flash mode.
3719  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3720  * @remarks Since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif, while setting the flash mode, if the flash was preempted by other APIs,\n
3721  *          then this function returns #CAMERA_ERROR_DEVICE_BUSY error.
3722  * @param[in] camera The handle to the camera
3723  * @param[in] mode   The flash mode
3724  * @return @c 0 on success, otherwise a negative error value
3725  * @retval #CAMERA_ERROR_NONE Successful
3726  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3727  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3728  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
3729  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3730  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3731  * @retval #CAMERA_ERROR_DEVICE_BUSY The flash was preempted by other API
3732  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
3733  * @see camera_attr_foreach_supported_flash_mode()
3734  * @see camera_attr_get_flash_mode()
3735  */
3736 int camera_attr_set_flash_mode(camera_h camera, camera_attr_flash_mode_e mode);
3737
3738 /**
3739  * @brief Gets the camera's flash mode.
3740  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3741  * @param[in]  camera The handle to the camera
3742  * @param[out] mode   The flash mode
3743  * @return @c 0 on success, otherwise a negative error value
3744  * @retval #CAMERA_ERROR_NONE Successful
3745  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3746  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3747  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3748  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3749  * @see camera_attr_foreach_supported_flash_mode()
3750  * @see camera_attr_set_flash_mode()
3751  */
3752 int camera_attr_get_flash_mode(camera_h camera, camera_attr_flash_mode_e *mode);
3753
3754 /**
3755  * @}
3756  */
3757
3758 /**
3759  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
3760  * @{
3761  */
3762
3763 /**
3764  * @brief Retrieves all supported flash modes by invoking the callback function once for each supported flash mode.
3765  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3766  * @param[in] camera    The handle to the camera
3767  * @param[in] callback  The callback function to invoke
3768  * @param[in] user_data The user data passed to the callback registration function
3769  * @return @c 0 on success, otherwise a negative error value
3770  * @retval #CAMERA_ERROR_NONE Successful
3771  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3772  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3773  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3774  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3775  * @post This function invokes camera_attr_supported_flash_mode_cb() to get all supported flash modes.
3776  * @see camera_attr_set_flash_mode()
3777  * @see camera_attr_get_flash_mode()
3778  * @see camera_attr_supported_flash_mode_cb()
3779  */
3780 int camera_attr_foreach_supported_flash_mode(camera_h camera, camera_attr_supported_flash_mode_cb callback, void *user_data);
3781
3782 /**
3783  * @}
3784  */
3785
3786 /**
3787  * @addtogroup CAPI_MEDIA_CAMERA_ATTRIBUTES_MODULE
3788  * @{
3789  */
3790
3791 /**
3792  * @brief Gets the camera len's orientation angle.
3793  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3794  * @param[in]  camera The handle to the camera
3795  * @param[out] angle  The orientation angle
3796  * @return @c 0 on success, otherwise a negative error value
3797  * @retval #CAMERA_ERROR_NONE Successful
3798  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3799  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3800  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3801  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3802  * @see camera_set_display_rotation()
3803  */
3804 int camera_attr_get_lens_orientation(camera_h camera, int *angle);
3805
3806 /**
3807  * @brief Sets the stream rotation.
3808  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3809  * @param[in] camera   The handle to the camera
3810  * @param[in] rotation The stream rotation
3811  * @return @c 0 on success, otherwise a negative error value
3812  * @retval #CAMERA_ERROR_NONE Successful
3813  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3814  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3815  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3816  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3817  * @pre The camera state must be set to #CAMERA_STATE_CREATED.
3818  * @see camera_attr_get_stream_rotation()
3819  */
3820 int camera_attr_set_stream_rotation(camera_h camera, camera_rotation_e rotation);
3821
3822 /**
3823  * @brief Gets the stream rotation.
3824  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3825  * @param[in]  camera   The handle to the camera
3826  * @param[out] rotation The stream rotation
3827  * @return @c 0 on success, otherwise a negative error value
3828  * @retval #CAMERA_ERROR_NONE Successful
3829  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3830  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3831  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3832  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3833  * @pre The camera state must be set to #CAMERA_STATE_CREATED.
3834  * @see camera_attr_set_stream_rotation()
3835  */
3836 int camera_attr_get_stream_rotation(camera_h camera, camera_rotation_e *rotation);
3837
3838 /**
3839  * @}
3840  */
3841
3842 /**
3843  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
3844  * @{
3845  */
3846
3847 /**
3848  * @brief Retrieves all supported stream rotation modes by invoking callback function once for each supported stream rotation mode.
3849  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3850  * @param[in] camera    The handle to the camera
3851  * @param[in] callback  The callback function to invoke
3852  * @param[in] user_data The user data to be passed to the callback function
3853  * @return @c 0 on success, otherwise a negative error value
3854  * @retval #CAMERA_ERROR_NONE Successful
3855  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3856  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3857  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3858  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3859  * @post This function invokes camera_attr_supported_stream_rotation_cb() to get all supported stream rotation mode.
3860  * @see camera_attr_set_stream_rotation()
3861  * @see camera_attr_get_stream_rotation()
3862  * @see camera_attr_supported_stream_rotation_cb()
3863  */
3864 int camera_attr_foreach_supported_stream_rotation(camera_h camera, camera_attr_supported_stream_rotation_cb callback, void *user_data);
3865
3866 /**
3867  * @}
3868  */
3869
3870 /**
3871  * @addtogroup CAPI_MEDIA_CAMERA_ATTRIBUTES_MODULE
3872  * @{
3873  */
3874
3875 /**
3876  * @brief Sets the stream flip.
3877  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3878  * @param[in] camera The handle to the camera
3879  * @param[in] flip   The stream flip
3880  * @return @c 0 on success, otherwise a negative error value
3881  * @retval #CAMERA_ERROR_NONE Successful
3882  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3883  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3884  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
3885  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3886  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3887  * @pre The camera state must be set to #CAMERA_STATE_CREATED.
3888  * @see camera_attr_set_stream_rotation()
3889  */
3890 int camera_attr_set_stream_flip(camera_h camera, camera_flip_e flip);
3891
3892 /**
3893  * @brief Gets the stream flip.
3894  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3895  * @param[in]  camera The handle to the camera
3896  * @param[out] flip   The stream flip
3897  * @return @c 0 on success, otherwise a negative error value
3898  * @retval #CAMERA_ERROR_NONE Successful
3899  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3900  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3901  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3902  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3903  * @pre The camera state must be set to #CAMERA_STATE_CREATED.
3904  * @see camera_attr_set_stream_rotation()
3905  */
3906 int camera_attr_get_stream_flip(camera_h camera, camera_flip_e *flip);
3907
3908 /**
3909  * @}
3910  */
3911
3912 /**
3913  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
3914  * @{
3915  */
3916
3917 /**
3918  * @brief Retrieves all supported stream flip modes by invoking callback function once for each supported stream flip mode.
3919  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3920  * @param[in] camera    The handle to the camera
3921  * @param[in] callback  The callback function to invoke
3922  * @param[in] user_data The user data to be passed to the callback function
3923  * @return @c 0 on success, otherwise a negative error value
3924  * @retval #CAMERA_ERROR_NONE Successful
3925  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3926  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3927  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3928  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3929  * @post This function invokes camera_attr_supported_stream_flip_cb() to get all supported stream flip mode.
3930  * @see camera_attr_set_stream_flip()
3931  * @see camera_attr_get_stream_flip()
3932  * @see camera_attr_supported_stream_flip_cb()
3933  */
3934 int camera_attr_foreach_supported_stream_flip(camera_h camera, camera_attr_supported_stream_flip_cb callback, void *user_data);
3935
3936 /**
3937  * @}
3938  */
3939
3940 /**
3941  * @addtogroup CAPI_MEDIA_CAMERA_ATTRIBUTES_MODULE
3942  * @{
3943  */
3944
3945 /**
3946  * @brief Called when the HDR capture process is updated.
3947  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3948  * @param[in] percent   The progress percentage of HDR capture
3949  * @param[in] user_data The user data passed from the callback registration function
3950  * @pre camera_start_capture() will invoke this callback if you register it using camera_attr_set_hdr_capture_progress_cb().
3951  * @see camera_attr_get_hdr_mode()
3952  * @see camera_attr_set_hdr_capture_progress_cb()
3953  * @see camera_attr_unset_hdr_capture_progress_cb()
3954  * @see camera_attr_is_supported_hdr_capture()
3955  */
3956 typedef void (*camera_attr_hdr_progress_cb)(int percent, void *user_data);
3957
3958 /**
3959  * @brief Sets the mode of HDR (High Dynamic Range) capture.
3960  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3961  * @remarks Taking multiple pictures at different exposure levels and intelligently stitching them together so that we eventually arrive at a picture that is representative in both dark and bright areas.\n
3962  *          If this attribute is set to @c true. camera_attr_hdr_progress_cb() is invoked during capture.\n
3963  *          If you set #CAMERA_ATTR_HDR_MODE_KEEP_ORIGINAL, the capturing callback is invoked twice. The first callback is delivering origin image data. The second callback is delivering improved image data.
3964  * @param[in] camera The handle to the camera
3965  * @param[in] mode   The mode of HDR capture
3966  * @return @c 0 on success, otherwise a negative error value
3967  * @retval #CAMERA_ERROR_NONE Successful
3968  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3969  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3970  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
3971  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3972  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3973  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
3974  * @see camera_attr_get_hdr_mode()
3975  * @see camera_attr_set_hdr_capture_progress_cb()
3976  * @see camera_attr_unset_hdr_capture_progress_cb()
3977  * @see camera_attr_is_supported_hdr_capture()
3978  *
3979  */
3980 int camera_attr_set_hdr_mode(camera_h camera, camera_attr_hdr_mode_e mode);
3981
3982 /**
3983  * @brief Gets the mode of HDR (High Dynamic Range) capture.
3984  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
3985  * @param[in]  camera The handle to the camera
3986  * @param[out] mode   The mode of HDR capture
3987  * @return @c 0 on success, otherwise a negative error value
3988  * @retval #CAMERA_ERROR_NONE Successful
3989  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
3990  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
3991  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
3992  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
3993  * @see camera_attr_set_hdr_mode()
3994  * @see camera_attr_set_hdr_capture_progress_cb()
3995  * @see camera_attr_unset_hdr_capture_progress_cb()
3996  * @see camera_attr_is_supported_hdr_capture()
3997  */
3998 int camera_attr_get_hdr_mode(camera_h camera, camera_attr_hdr_mode_e *mode);
3999
4000 /**
4001  * @brief Registers a callback function to be called when HDR capture is progressing.
4002  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
4003  * @remarks This callback notifies progress of the HDR process.
4004  * @param[in] camera    The handle to the camera
4005  * @param[in] callback  The callback function to invoke
4006  * @param[in] user_data The user data passed to the callback registration function
4007  * @return @c 0 on success, otherwise a negative error value
4008  * @retval #CAMERA_ERROR_NONE Successful
4009  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4010  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4011  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
4012  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4013  * @see camera_attr_set_hdr_mode()
4014  * @see camera_attr_get_hdr_mode()
4015  * @see camera_attr_unset_hdr_capture_progress_cb()
4016  * @see camera_attr_is_supported_hdr_capture()
4017  */
4018 int camera_attr_set_hdr_capture_progress_cb(camera_h camera, camera_attr_hdr_progress_cb callback, void* user_data);
4019
4020 /**
4021  * @brief Unregisters the callback function.
4022  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
4023  * @param[in] camera The handle to the camera
4024  * @return @c 0 on success, otherwise a negative error value
4025  * @retval #CAMERA_ERROR_NONE Successful
4026  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4027  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4028  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
4029  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4030  * @see camera_attr_set_hdr_mode()
4031  * @see camera_attr_get_hdr_mode()
4032  * @see camera_attr_set_hdr_capture_progress_cb()
4033  * @see camera_attr_is_supported_hdr_capture()
4034  */
4035 int camera_attr_unset_hdr_capture_progress_cb(camera_h camera);
4036
4037 /**
4038  * @ingroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
4039  * @brief Gets the support state of HDR capture.
4040  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
4041  * @remarks The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
4042  * @param[in] camera The handle to the camera
4043  * @return @c true if supported, otherwise @c false
4044  * @exception #CAMERA_ERROR_NONE Successful
4045  * @exception #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4046  * @exception #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4047  * @exception #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
4048  * @see camera_attr_set_hdr_mode()
4049  * @see camera_attr_get_hdr_mode()
4050  * @see camera_attr_set_hdr_capture_progress_cb()
4051  * @see camera_attr_unset_hdr_capture_progress_cb()
4052  */
4053 bool camera_attr_is_supported_hdr_capture(camera_h camera);
4054
4055 /**
4056  * @brief Enables/Disables the anti-shake feature.
4057  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
4058  * @remarks This feature is used for image capture.
4059  * @param[in] camera The handle to the camera
4060  * @param[in] enable If @c true the anti-shake feature is enabled, otherwise @c false
4061  * @return @c 0 on success, otherwise a negative error value
4062  * @retval #CAMERA_ERROR_NONE Successful
4063  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4064  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4065  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
4066  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4067  * @see camera_attr_is_enabled_anti_shake()
4068  * @see camera_attr_is_supported_anti_shake()
4069  *
4070  */
4071 int camera_attr_enable_anti_shake(camera_h camera, bool enable);
4072
4073 /**
4074  * @brief Gets the state of the anti-shake feature.
4075  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
4076  * @param[in]  camera  The handle to the camera
4077  * @param[out] enabled The state of anti-shake
4078  * @return @c 0 on success, otherwise a negative error value
4079  * @retval #CAMERA_ERROR_NONE Successful
4080  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4081  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4082  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
4083  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4084  * @see camera_attr_enable_anti_shake()
4085  * @see camera_attr_is_supported_anti_shake()
4086  */
4087 int camera_attr_is_enabled_anti_shake(camera_h camera, bool *enabled);
4088
4089 /**
4090  * @ingroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
4091  * @brief Gets the support state of the anti-shake feature.
4092  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
4093  * @remarks The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
4094  * @param[in] camera The handle to the camera
4095  * @return @c true if supported, otherwise @c false
4096  * @exception #CAMERA_ERROR_NONE Successful
4097  * @exception #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4098  * @exception #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4099  * @exception #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
4100  * @see camera_attr_enable_anti_shake()
4101  * @see camera_attr_is_enabled_anti_shake()
4102  */
4103 bool camera_attr_is_supported_anti_shake(camera_h camera);
4104
4105 /**
4106  * @brief Enables/Disables the video stabilization feature.
4107  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
4108  * @remarks If video stabilization is enabled, zero shutter lag is disabled.\n
4109  *          This feature is used to record a video.
4110  * @param[in] camera The handle to the camera
4111  * @param[in] enable If @c true video stabilization is enabled, otherwise @c false
4112  * @return @c 0 on success, otherwise a negative error value
4113  * @retval #CAMERA_ERROR_NONE Successful
4114  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4115  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4116  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
4117  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4118  * @see camera_attr_is_enabled_video_stabilization()
4119  * @see camera_attr_is_supported_video_stabilization()
4120  *
4121  */
4122 int camera_attr_enable_video_stabilization(camera_h camera, bool enable);
4123
4124 /**
4125  * @brief Gets the state of the video stabilization feature.
4126  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
4127  * @param[in]  camera  The handle to the camera
4128  * @param[out] enabled The state of video stabilization
4129  * @return @c 0 on success, otherwise a negative error value
4130  * @retval #CAMERA_ERROR_NONE Successful
4131  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4132  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4133  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
4134  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4135  * @see camera_attr_enable_video_stabilization()
4136  * @see camera_attr_is_supported_video_stabilization()
4137  */
4138 int camera_attr_is_enabled_video_stabilization(camera_h camera, bool *enabled);
4139
4140 /**
4141  * @ingroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
4142  * @brief Gets the support state of the video stabilization feature.
4143  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
4144  * @remarks The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
4145  * @param[in] camera The handle to the camera
4146  * @return @c true if supported, otherwise @c false
4147  * @exception #CAMERA_ERROR_NONE Successful
4148  * @exception #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4149  * @exception #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4150  * @exception #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
4151  * @see camera_attr_enable_video_stabilization()
4152  * @see camera_attr_is_enabled_video_stabilization()
4153  */
4154 bool camera_attr_is_supported_video_stabilization(camera_h camera);
4155
4156 /**
4157  * @brief Enables/Disables auto contrast.
4158  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
4159  * @param[in] camera The handle to the camera
4160  * @param[in] enable If @c true auto contrast is enabled, otherwise @c false
4161  * @return @c 0 on success, otherwise a negative error value
4162  * @retval #CAMERA_ERROR_NONE Successful
4163  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4164  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4165  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
4166  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
4167  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4168  * @pre The camera state must be set to #CAMERA_STATE_CREATED or #CAMERA_STATE_PREVIEW.
4169  * @see camera_attr_is_enabled_auto_contrast()
4170  */
4171 int camera_attr_enable_auto_contrast(camera_h camera, bool enable);
4172
4173 /**
4174  * @brief Gets the state of auto contrast.
4175  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
4176  * @param[in]  camera  The handle to the camera
4177  * @param[out] enabled The state of auto contrast
4178  * @return @c 0 on success, otherwise a negative error value
4179  * @retval #CAMERA_ERROR_NONE Successful
4180  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4181  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4182  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
4183  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4184  * @see camera_attr_enable_auto_contrast()
4185  */
4186 int camera_attr_is_enabled_auto_contrast(camera_h camera, bool *enabled);
4187
4188 /**
4189  * @}
4190  */
4191
4192 /**
4193  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
4194  * @{
4195  */
4196
4197 /**
4198  * @brief Gets state of support of auto contrast feature.
4199  * @ingroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
4200  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
4201  * @remarks The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
4202  * @param[in] camera The handle to the camera
4203  * @return true on supported, otherwise false
4204  * @exception #CAMERA_ERROR_NONE Successful
4205  * @exception #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4206  * @exception #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4207  * @exception #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
4208  * @see camera_attr_enable_auto_contrast()
4209  * @see camera_attr_is_enabled_auto_contrast()
4210  */
4211 bool camera_attr_is_supported_auto_contrast(camera_h camera);
4212
4213 /**
4214  * @}
4215  */
4216
4217 /**
4218  * @addtogroup CAPI_MEDIA_CAMERA_ATTRIBUTES_MODULE
4219  * @{
4220  */
4221
4222 /**
4223  * @brief Disables shutter sound.
4224  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
4225  * @remarks In some countries, this operation is not permitted.
4226  * @param[in] camera  The handle to the camera
4227  * @param[in] disable If @c true shutter sound is disabled, otherwise @c false
4228  * @return @c 0 on success, otherwise a negative error value
4229  * @retval #CAMERA_ERROR_NONE Successful
4230  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4231  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4232  * @retval #CAMERA_ERROR_INVALID_OPERATION Disabling shutter sound is not permitted
4233  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
4234  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4235  */
4236 int camera_attr_disable_shutter_sound(camera_h camera, bool disable);
4237
4238 /**
4239  * @brief Sets the position to move horizontally.
4240  * @since_tizen 3.0
4241  * @param[in] camera    The handle to the camera
4242  * @param[in] move_type The PTZ(Pan Tilt Zoom) move type
4243  * @param[in] pan_step  The step to move the camera
4244  * @return @c 0 on success, otherwise a negative error value
4245  * @retval #CAMERA_ERROR_NONE Successful
4246  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4247  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
4248  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4249  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
4250  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4251  * @pre The camera state must be set to #CAMERA_STATE_PREVIEW.
4252  * @see camera_attr_get_pan()
4253  * @see camera_attr_get_pan_range()
4254  */
4255 int camera_attr_set_pan(camera_h camera, camera_attr_ptz_move_type_e move_type, int pan_step);
4256
4257 /**
4258  * @brief Gets the current position of the camera.
4259  * @since_tizen 3.0
4260  * @param[in]  camera   The handle to the camera
4261  * @param[out] pan_step The current horizontal distance from the starting point.
4262  * @return @c 0 on success, otherwise a negative error value
4263  * @retval #CAMERA_ERROR_NONE Successful
4264  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4265  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
4266  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4267  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4268  * @see camera_attr_set_pan()
4269  * @see camera_attr_get_pan_range()
4270  */
4271 int camera_attr_get_pan(camera_h camera, int *pan_step);
4272
4273 /**
4274  * @brief Gets lower limit and upper limit for pan position.
4275  * @since_tizen 3.0
4276  * @remarks If the min value is greater than the max value, it means that this feature is not supported.
4277  * @param[in]  camera The handle to the camera
4278  * @param[out] min    The lower limit for pan
4279  * @param[out] max    The upper limit for pan
4280  * @return @c 0 on success, otherwise a negative error value
4281  * @retval #CAMERA_ERROR_NONE Successful
4282  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4283  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
4284  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4285  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4286  * @see camera_attr_set_pan()
4287  * @see camera_attr_get_pan()
4288  */
4289 int camera_attr_get_pan_range(camera_h camera, int *min, int *max);
4290
4291 /**
4292  * @brief Sets the position to move vertically.
4293  * @since_tizen 3.0
4294  * @param[in] camera    The handle to the camera
4295  * @param[in] move_type The PTZ(Pan Tilt Zoom) move type
4296  * @param[in] tilt_step The step to move the camera
4297  * @return @c 0 on success, otherwise a negative error value
4298  * @retval #CAMERA_ERROR_NONE Successful
4299  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4300  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
4301  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4302  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
4303  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4304  * @pre The camera state must be set to #CAMERA_STATE_PREVIEW.
4305  * @see camera_attr_get_tilt()
4306  * @see camera_attr_get_tilt_range()
4307  */
4308 int camera_attr_set_tilt(camera_h camera, camera_attr_ptz_move_type_e move_type, int tilt_step);
4309
4310 /**
4311  * @brief Gets the current position of the camera.
4312  * @since_tizen 3.0
4313  * @param[in]  camera    The handle to the camera
4314  * @param[out] tilt_step The current vertical distance from the starting point.
4315  * @return @c 0 on success, otherwise a negative error value
4316  * @retval #CAMERA_ERROR_NONE Successful
4317  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4318  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
4319  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4320  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4321  * @see camera_attr_set_tilt()
4322  * @see camera_attr_get_tilt_range()
4323  */
4324 int camera_attr_get_tilt(camera_h camera, int *tilt_step);
4325
4326 /**
4327  * @brief Gets lower limit and upper limit for tilt position.
4328  * @since_tizen 3.0
4329  * @remarks If the min value is greater than the max value, it means that this feature is not supported.
4330  * @param[in]  camera The handle to the camera
4331  * @param[out] min    The lower limit for tilt
4332  * @param[out] max    The upper limit for tilt
4333  * @return @c 0 on success, otherwise a negative error value
4334  * @retval #CAMERA_ERROR_NONE Successful
4335  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4336  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
4337  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4338  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4339  * @see camera_attr_set_tilt()
4340  * @see camera_attr_get_tilt()
4341  */
4342 int camera_attr_get_tilt_range(camera_h camera, int *min, int *max);
4343
4344 /**
4345  * @brief Sets the type of PTZ(Pan Tilt Zoom).
4346  * @since_tizen 3.0
4347  * @param[in] camera   The handle to the camera
4348  * @param[in] ptz_type PTZ type
4349  * @return @c 0 on success, otherwise a negative error value
4350  * @retval #CAMERA_ERROR_NONE Successful
4351  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4352  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
4353  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4354  * @retval #CAMERA_ERROR_INVALID_STATE Invalid state
4355  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4356  * @pre The camera state must be set to #CAMERA_STATE_PREVIEW.
4357  * @see camera_attr_get_pan()
4358  * @see camera_attr_set_pan()
4359  * @see camera_attr_get_pan_range()
4360  * @see camera_attr_get_tilt()
4361  * @see camera_attr_set_tilt()
4362  * @see camera_attr_get_tilt_range()
4363  * @see camera_attr_foreach_supported_ptz_type()
4364  */
4365 int camera_attr_set_ptz_type(camera_h camera, camera_attr_ptz_type_e ptz_type);
4366
4367 /**
4368  * @}
4369  */
4370
4371 /**
4372  * @addtogroup CAPI_MEDIA_CAMERA_CAPABILITY_MODULE
4373  * @{
4374  */
4375
4376 /**
4377  * @brief Retrieves all supported PTZ(Pan Tilt Zoom) types by invoking callback function once for each supported ptz type.
4378  * @since_tizen 3.0
4379  * @param[in] camera    The handle to the camera
4380  * @param[in] callback  The callback function to invoke
4381  * @param[in] user_data The user data to be passed to the callback function
4382  * @return @c 0 on success, otherwise a negative error value
4383  * @retval #CAMERA_ERROR_NONE Successful
4384  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4385  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4386  * @retval #CAMERA_ERROR_PERMISSION_DENIED The access to the resources can not be granted
4387  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4388  * @post This function invokes camera_attr_supported_ptz_type_cb() to get all supported ptz type.
4389  * @see camera_attr_set_ptz_type()
4390  */
4391 int camera_attr_foreach_supported_ptz_type(camera_h camera, camera_attr_supported_ptz_type_cb callback, void *user_data);
4392
4393 /**
4394  * @}
4395  */
4396
4397 /**
4398  * @addtogroup CAPI_MEDIA_CAMERA_ATTRIBUTES_MODULE
4399  * @{
4400  */
4401
4402 /**
4403  * @brief Sets the ROI(Region Of Interest) area of display.
4404  * @since_tizen 3.0
4405  * @remarks If no display is set, no operation is performed and
4406  *          the ROI area is valid only in #CAMERA_DISPLAY_MODE_CUSTOM_ROI display mode.
4407  * @remarks The minimum value of width and height are 1.
4408  * @remarks ROI area can be set before setting ROI display mode. (since 4.0)
4409  * @param[in] camera The handle to the camera
4410  * @param[in] x      X coordinate of area
4411  * @param[in] y      Y coordinate of area
4412  * @param[in] width  Width of area
4413  * @param[in] height Height of area
4414  * @return @c 0 on success, otherwise a negative error value
4415  * @retval #CAMERA_ERROR_NONE Successful
4416  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4417  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
4418  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4419  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4420  * @see camera_attr_get_display_roi_area()
4421  */
4422 int camera_attr_set_display_roi_area(camera_h camera, int x, int y, int width, int height);
4423
4424 /**
4425  * @brief Gets the ROI(Region Of Interest) area of display.
4426  * @since_tizen 3.0
4427  * @param[in]  camera The handle to the camera
4428  * @param[out] x      X coordinate of area
4429  * @param[out] y      Y coordinate of area
4430  * @param[out] width  Width of area
4431  * @param[out] height Height of area
4432  * @return @c 0 on success, otherwise a negative error value
4433  * @retval #CAMERA_ERROR_NONE Successful
4434  * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
4435  * @retval #CAMERA_ERROR_INVALID_OPERATION Internal error
4436  * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
4437  * @retval #CAMERA_ERROR_SERVICE_DISCONNECTED The socket to multimedia server is disconnected
4438  * @see camera_attr_set_display_roi_area()
4439  */
4440 int camera_attr_get_display_roi_area(camera_h camera, int *x, int *y, int *width, int *height);
4441
4442 /**
4443  * @}
4444  */
4445 #ifdef __cplusplus
4446 }
4447 #endif
4448
4449 #endif /* __TIZEN_MULTIMEDIA_CAMERA_H__ */