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