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