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