enable dual camera
[platform/framework/native/media.git] / src / FMedia_CameraImpl.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /**
19  * @file                        FMedia_CameraImpl.h
20  * @brief                       This header file contains the declarations of the %_CameraImpl class.
21  *
22  */
23
24 #ifndef _FMEDIA_INTERNAL_CAMERA_IMPL_H_
25 #define _FMEDIA_INTERNAL_CAMERA_IMPL_H_
26
27 #include <unique_ptr.h>
28 #include <camera.h>
29 #include <FBaseColIList.h>
30 #include <FBaseColIListT.h>
31 #include <FBaseObject.h>
32 #include <FBaseColQueue.h>
33 #include <FGrpBufferInfo.h>
34 #include <FGrpDimension.h>
35 #include <FGrpPixelFormat.h>
36 #include <FGrpRectangle.h>
37 #include <FMediaCameraTypes.h>
38 #include <FMediaTypes.h>
39 #include <FMediaIVideoStreamFilter.h>
40 #include "FMedia_CameraTypes.h"
41 #include "FMedia_CapabilityTypes.h"
42 #include "FMedia_ICameraCoordinatorListener.h"
43 #include "FMedia_CameraBuffer.h"
44 #include "FMedia_CamPtrUtil.h"
45
46 namespace Tizen { namespace Media
47 {
48 class Camera;
49 class ICameraEventListener;
50 class _CameraRef;
51 class _CameraEvent;
52 class _CameraCoordinator;
53 class _CameraCapability;
54 class _ImageUtilImpl;
55 class _VideoStreamCoordinator;
56
57 /**
58  * @class       _CameraImpl
59  * @brief       This class implements the APIs of %Camera class.
60  *
61  */
62 class _CameraImpl
63         : public Tizen::Base::Object
64         , public _ICameraCoordinatorListener
65 {
66 public:
67         /**
68          * This is the default constructor for this class.
69          *
70          * @remarks             After creating an instance of this class, the Construct() method must be called explicitly to
71          * initialize this instance.
72          * @see                 Construct()
73          */
74         _CameraImpl(void);
75         /**
76          * This is the destructor for this class. @n
77          * All allocated resources are deallocated by this method. This method should be called in the same thread
78          * where the Construct() method is called.
79          *
80          * @see                 Construct()
81          */
82         virtual ~_CameraImpl(void);
83
84
85         /**
86         * Initializes this instance of Camera with the specified parameters. @n
87         * This method creates an instance of Camera in the subsystem. Only one instance is created at a given time.
88         *
89         * @return               An error code
90         * @param[in]    listener                                An event listener instance
91         * @param[in]    camSel                                  The Camera to be used
92         * @exception    E_SUCCESS                               The method is successful.
93         * @exception    E_SYSTEM                                A system error has occurred.
94         * @exception    E_DEVICE_BUSY                   The device cannot be approached because of other operations.
95         * @exception    E_DEVICE_UNAVAILABLE    The device is unavailable.
96         */
97         result Construct(ICameraEventListener& listener, CameraSelection camSel);
98
99         /**
100         * Powers the camera on.
101         *
102         * @return               An error code
103         * @exception    E_SUCCESS                               The method is successful.
104         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
105         * @exception    E_DEVICE_BUSY                   The device cannot be approached because of other operations.
106         * @exception    E_DEVICE_UNAVAILABLE    The device is unavailable.
107         * @exception    E_DEVICE_FAILED                 The device operation has failed.
108         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
109         * @remarks              The reserved configurations are set in this method.
110         * @see                  PowerOff()
111         */
112         result PowerOn(void);
113
114         /**
115         * Powers the camera off.
116         *
117         * @return               An error code
118         * @exception    E_SUCCESS                               The method is successful.
119         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
120         * @exception    E_DEVICE_BUSY                   The device cannot be approached because of other operations.
121         * @exception    E_DEVICE_UNAVAILABLE    The device is unavailable.
122         * @exception    E_DEVICE_FAILED                 The device operation has failed.
123         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
124         * @see                  PowerOn()
125         */
126         result PowerOff(void);
127
128         /**
129         * Checks whether the camera is powered on.
130         *
131         * @return               @c true if the camera is powered on, @n
132         *                               else @c false
133         * @exception    E_SUCCESS                               The method is successful.
134         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
135         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
136         * @remarks              The specific error code can be accessed using the GetLastResult() method.
137         * @see                  PowerOn(), PowerOff()
138         */
139         bool IsPoweredOn(void) const;
140
141         /**
142         * Starts displaying the preview image on the camera device. @n
143         * If the value of @c pBufferInfo is @c null, no preview image is displayed. In this case, the application can
144         * draw the preview image with the data passed on by the ICameraEventListener::OnCameraPreviewed() method.
145         *
146         * If the value of @c previewedData is @c true, the previewed image data is passed to the
147         * ICameraEventListener::OnCameraPreviewed() method periodically based on the frame-rate, otherwise the
148         * callback is not invoked. The default value of @c previewedData is @c false.
149         *
150         * @return               An error code
151         * @param[in]    pBufferInfo                             The buffer information for the camera preview display
152         * @param[in]    previewedData                   Set to @c true if the previewed data is delivered to the callback method, @n
153         *                                                                               else @false
154         * @exception    E_SUCCESS                               The method is successful.
155         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
156         * @exception    E_UNSUPPORTED_FORMAT    The specified format is not supported.
157         * @exception    E_DEVICE_BUSY                   The device cannot be approached because of other operations.
158         * @exception    E_DEVICE_UNAVAILABLE    The device is unavailable.
159         * @exception    E_DEVICE_FAILED                 The device operation has failed.
160         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
161         * @remarks              The overlay region retrieved by the buffer information should be the topmost window when this method is
162         *                               called.
163         * @remarks              The ICameraEventListener::OnCameraPreviewed() method can be delayed or dropped depending on
164         *                               the system's performance. @n@n
165         *                               For more information on the relationship between this method and the PowerOn() method, and the
166         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
167         ">Launching the Camera</a>.
168
169         * @see                  StopPreview(), ICameraEventListener::OnCameraPreviewed()
170         */
171         result StartPreview(const Tizen::Graphics::BufferInfo* pBufferInfo, bool previewedData = false);
172
173         /**
174         * Stops displaying the preview image on the camera device.
175         *
176         * @return               An error code
177         * @exception    E_SUCCESS                               The method is successful.
178         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
179         * @exception    E_DEVICE_BUSY                   The device cannot be approached because of other operations.
180         * @exception    E_DEVICE_UNAVAILABLE    The device is unavailable.
181         * @exception    E_DEVICE_FAILED                 The device operation has failed.
182         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
183         * @remarks        For more information on the relationship between this method and the PowerOn() method, and the
184         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
185         ">Launching the Camera</a>.
186         * @see                  StartPreview()
187         */
188         result StopPreview(void);
189
190         /**
191         * Captures the current image data from the camera sensor. @n
192         * After capturing the image, the camera's state changes to ::CAMERA_STATE_CAPTURED. @n
193         * The camera's preview should be restarted by calling the StartPreview() method. @n
194         * The captured image is passed through ICameraEventListener::OnCameraCaptured().
195         *
196         * @return               An error code
197         * @exception    E_SUCCESS                                       The method is successful.
198         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
199         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
200         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
201         * @exception    E_DEVICE_FAILED                         The device operation has failed.
202         * @exception    E_UNSUPPORTED_OPERATION  This operation is not supported.
203         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
204         * @remarks        For more information on the relationship between this method and the PowerOn() method, and the
205         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
206         ">Launching the Camera</a>.
207         * @see                  ICameraEventListener::OnCameraCaptured()
208         */
209         result Capture(void);
210
211         /**
212         * Gets the state of the camera in CameraState.
213         *
214         * @return               The current state of the camera
215         * @exception    E_SUCCESS                                       The method is successful.
216         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
217         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
218         * @remarks              The specific error code can be accessed using the GetLastResult() method.
219         * @see                  StartPreview(), StopPreview(), SetAutoFocus(), Capture()
220         */
221         CameraState GetState(void) const;
222
223         /**
224         * Sets the brightness level of the camera input data.
225         *
226         * @return               An error code
227         * @param[in]    brightness                                      The brightness level to set @n
228         *                                                                                       The range of this parameter is from @c 0 to @c 9.
229         * @exception    E_SUCCESS                                       The method is successful.
230         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
231         * @exception    E_OUT_OF_RANGE                          The specified @c brightness is out of range.
232         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
233         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
234         * @exception    E_DEVICE_FAILED                         The device operation has failed.
235         * @exception    E_UNSUPPORTED_OPERATION  This operation is not supported.
236         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
237         * @remarks              The default brightness level is @c 5. @n
238         *                               The device's supported range for the brightness level is from @c 0 to @c 9. @n
239         *                               This method works correctly when PowerOn() is executed. @n@n
240         *                               For more information on the relationship between this method and the PowerOn() method, and the
241         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
242         ">Launching the Camera</a>.
243         * @see                  GetBrightness()
244         */
245         result SetBrightness(int brightness);
246
247         /**
248         * Gets the brightness level of the camera input data.
249         *
250         * @return               The current brightness level @n
251         *                               The returned value ranges from @c 0 to @c 9.
252         * @exception    E_SUCCESS                               The method is successful.
253         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
254         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
255         * @remarks              The specific error code can be accessed using the GetLastResult() method. @n
256         *                               The device's supported range for the brightness level is from @c 0 to @c 9. @n
257         * @see                  SetBrightness()
258         */
259         int GetBrightness(void) const;
260
261         /**
262         * Sets the contrast level of the Camera input data.
263         *
264         * @return               An error code
265         * @param[in]    contrast                                        The contrast level to set @n
266         *                                                                                       The range of this parameter is from @c 0 to @c 9.
267         * @exception    E_SUCCESS                                       The method is successful.
268         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
269         * @exception    E_OUT_OF_RANGE                          The specified contrast is out of range.
270         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
271         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
272         * @exception    E_DEVICE_FAILED                         The device operation has failed.
273         * @exception    E_UNSUPPORTED_OPERATION  This operation is not supported.
274         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
275         * @remarks              The default contrast level is @c 5. @n
276         *                               The device's supported range for the contrast level is from @c 0 to @c 9. @n
277         *                               This method works correctly when PowerOn() is executed. @n@n
278         *                               For more information on the relationship between this method and the PowerOn() method, and the
279         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
280         ">Launching the Camera</a>.
281         * @see                  GetContrast()
282         */
283         result SetContrast(int contrast);
284
285         /**
286         * Gets the contrast level of the camera input data.
287         *
288         * @return               The current contrast level @n
289         *                               The returned value ranges from @c 0 to @c 9.
290         * @exception    E_SUCCESS                               The method is successful.
291         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
292         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
293         * @remarks              The specific error code can be accessed using the GetLastResult() method. @n
294         *                               The device's supported range for the contrast level is from @c 0 to @c 9.
295         * @see                  SetContrast()
296         */
297         int GetContrast(void) const;
298
299         /**
300         * Increases the zoom level of the camera.
301         *
302         * @return               An error code
303         * @exception    E_SUCCESS                                       The method is successful.
304         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
305         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
306         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
307         * @exception    E_DEVICE_FAILED                         The device operation has failed.
308         * @exception    E_UNSUPPORTED_OPERATION  This operation is not supported.
309         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
310         * @remarks              This method returns E_UNSUPPORTED_OPERATION in the emulator.
311         *                               If CameraZoomType supports only ::CAMERA_ZOOM_TYPE_SMART, the zoom ratio can differ according
312         *                               to the preview, capture, and recording resolutions.
313         *                               The supported zoom types can be obtained by using the
314         *                               MediaCapability::GetValueN(CAMERA_PRIMARY_ZOOM_TYPE) method. @n@n
315         *                          For more information on the relationship between this method and the PowerOn() method, and the
316         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
317         ">Launching the Camera</a>.
318         * @see                  ZoomOut(),GetZoomLevel(),GetMaxZoomLevel()
319         */
320         result ZoomIn(void);
321
322         /**
323         * Decreases the zoom level of the camera.
324         *
325         * @return               An error code
326         * @exception    E_SUCCESS                                       The method is successful.
327         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
328         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
329         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
330         * @exception    E_DEVICE_FAILED                         The device operation has failed.
331         * @exception    E_UNSUPPORTED_OPERATION  This operation is not supported.
332         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
333         * @remarks              This method returns E_UNSUPPORTED_OPERATION in the emulator.
334         *                               If CameraZoomType supports only ::CAMERA_ZOOM_TYPE_SMART, zoom ratio can differ according to
335         *                               the preview, capture, and recording resolutions.
336         *                               The supported zoom types can be obtained by using the
337         *                               MediaCapability::GetValueN(CAMERA_PRIMARY_ZOOM_TYPE) method. @n@n
338         *                          For more information on the relationship between this method and the PowerOn() method, and the
339         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
340         ">Launching the Camera</a>.
341         * @see                  ZoomIn(),GetZoomLevel(),GetMaxZoomLevel()
342         */
343         result ZoomOut(void);
344
345         /**
346         * Gets the zoom level of the camera.
347         *
348         * @return               The current zoom level
349         * @exception    E_SUCCESS                               The method is successful.
350         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
351         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
352         * @remarks              The specific error code can be accessed using the GetLastResult() method.
353         * @remarks              The zoom level is different for each camera device.
354         * @remarks              This method throws E_UNSUPPORTED_OPERATION in the emulator.
355         * @see                  ZoomIn(), ZoomOut(),GetMaxZoomLevel()
356         */
357         int GetZoomLevel(void) const;
358
359         /**
360         * Gets the maximum zoom level supported by this Camera.
361         *
362         * @return               The maximum zoom level
363         * @exception    E_SUCCESS                               The method is successful.
364         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
365         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
366         * @remarks              The specific error code can be accessed using the GetLastResult() method.
367         * @remarks              The zoom level is different for each camera device.
368         * @remarks              This method returns E_UNSUPPORTED_OPERATION in the emulator. @n
369         *                               This method works correctly when PowerOn() is executed.
370         * @see                  ZoomIn(), ZoomOut(), GetZoomLevel()
371         */
372         int GetMaxZoomLevel(void) const;
373
374         /**
375         * Changes the current resolution of the preview.
376         *
377         * @return               An error code
378         * @param[in]    resolution                                The preview resolution @n
379         *                                                                                       It should be one of the listed dimensions that are extracted using GetSupportedPreviewResolutionListN().
380         * @exception    E_SUCCESS                                       The method is successful.
381         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
382         * @exception    E_OUT_OF_RANGE                          The position or size is out of range.
383         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
384         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
385         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
386         * @exception    E_UNSUPPORTED_OPERATION         This operation is not supported.
387         * @exception    E_DEVICE_FAILED                         The device operation has failed.
388         * @remarks              This method works in the ::CAMERA_STATE_INITIALIZED state. @n@n
389         *                               For more information on the relationship between this method and the PowerOn() method, and the
390         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
391         ">Launching the Camera</a>.
392         * @see                  GetPreviewResolution()
393         */
394         result SetPreviewResolution(const Tizen::Graphics::Dimension& resolution);
395
396         /**
397         * Retrieves the current resolution of the preview.
398         *
399         * @return               The current preview resolution
400         * @exception    E_SUCCESS                               The method is successful.
401         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
402         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
403         * @remarks              The specific error code can be accessed using the GetLastResult() method.
404         * @see                  SetPreviewResolution()
405         */
406         Tizen::Graphics::Dimension GetPreviewResolution(void) const;
407
408         /**
409         * Retrieves the supported preview resolution list of the Camera class. @n
410         * Each item in the returned list contains a pointer of Tizen::Graphics::Dimension value.
411         *
412         * @return          A list of dimensions that represent the preview resolutions supported by the Camera class,  @n
413         *                               else @c null if no preview resolution is supported or an exception occurs
414         * @exception    E_SUCCESS                               The method is successful.
415         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
416         * @exception    E_SYSTEM                                A system error has occurred.
417         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
418         * @remark               The specific error code can be accessed using the GetLastResult() method. @n
419         *                               The return value and each item in the list must be deleted by the caller. @n
420         *                               This method works correctly when Camera::PowerOn() is executed.
421         * @see                  SetPreviewResolution(), GetPreviewResolution()
422         */
423         Tizen::Base::Collection::IList* GetSupportedPreviewResolutionListN(void) const;
424
425
426         /**
427         * Sets the capturing resolution of the camera. @n
428         * Initially, the default resolution is set using the internal configuration.
429         *
430         * @return               An error code
431         * @param[in]    resolution                                      The display resolution @n
432         *                                                                                       The display resolution should be one of the values extracted using GetSupportedCaptureResolutionListN().
433         * @exception    E_SUCCESS                                       The method is successful.
434         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
435         * @exception    E_SYSTEM                                        A system error has occurred.
436         * @exception    E_OUT_OF_RANGE                          The specified resolution is out of range.
437         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
438         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
439         * @exception    E_DEVICE_FAILED                         The device operation has failed.
440         * @exception    E_UNSUPPORTED_OPERATION  This operation is not supported.
441         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
442         * @remarks                      For more information on the relationship between this method and the PowerOn() method, and the
443         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
444         ">Launching the Camera</a>.
445         * @see                  GetCaptureResolution(), GetSupportedCaptureResolutionListN()
446         */
447         result SetCaptureResolution(const Tizen::Graphics::Dimension& resolution);
448
449         /**
450         * Gets the resolution for capturing the data of the camera.
451         *
452         * @return               The current resolution for capturing the data of the camera
453         * @exception    E_SUCCESS                               The method is successful.
454         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
455         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
456         * @remarks              The specific error code can be accessed using the GetLastResult() method.
457         * @see                  SetCaptureResolution(),GetSupportedCaptureResolutionListN()
458         */
459         Tizen::Graphics::Dimension GetCaptureResolution(void) const;
460
461         /**
462         * Gets a list of the capturing resolutions supported by the Camera class. @n
463         * Each item of the list has a pointer of the Tizen::Graphics::Dimension value.
464         *
465         * @return               A list of the capture resolutions supported by the Camera class @n
466         *                               else @c null if no capture resolution is supported or an exception occurs
467         * @exception    E_SUCCESS                               The method is successful.
468         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
469         * @exception    E_SYSTEM                                A system error has occurred.
470         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
471         * @remark               The specific error code can be accessed using the GetLastResult() method. @n
472         *                               The return value and each item in the list must be deleted by the caller. @n
473         *                               This method works correctly when PowerOn() is executed.
474         * @see                  SetCaptureResolution(), GetCaptureResolution()
475         */
476         Tizen::Base::Collection::IList* GetSupportedCaptureResolutionListN(void) const;
477
478         /**
479         * Sets the effect for the input data of the camera.
480         *
481         * @return               An error code
482         * @param[in]    effect                                          The effect for the input data of the camera
483         * @exception    E_SUCCESS                                       The method is successful.
484         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
485         * @exception    E_INVALID_ARG                           The specified input parameter is invalid.
486         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
487         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
488         * @exception    E_DEVICE_FAILED                         The device operation has failed.
489         * @exception    E_UNSUPPORTED_OPERATION  This operation is not supported.
490         * @exception    E_UNSUPPORTED_TYPE                The effect type is not supported.
491         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
492         * @remarks              The default effect is ::CAMERA_EFFECT_NONE.
493         *                               This method works correctly when PowerOn() is executed. @n@n
494         *                               For more information on the relationship between this method and the PowerOn() method, and the
495         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
496         ">Launching the Camera</a>.
497         * @see                  GetEffect()
498         */
499         result SetEffect(CameraEffect effect);
500
501         /**
502         * Gets the effect for the input data of the camera.
503         *
504         * @return               The effect for the input data of the camera
505         * @exception    E_SUCCESS                                       The method is successful.
506         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
507         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
508         * @remarks              The specific error code can be accessed using the GetLastResult() method.
509         * @see                  SetEffect()
510         */
511         CameraEffect GetEffect(void) const;
512
513         /**
514         * Sets the camera's flash mode.
515         *
516         * @return               An error code
517         * @param[in]    flashMode                                       flash mode to switch on the flash light.
518         * @exception    E_SUCCESS                                       The method is successful.
519         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
520         * @exception    E_INVALID_ARG                           The specified flash mode is invalid.
521         * @exception    E_DEVICE_BUSY                           The camera is under use by other application.
522         * @exception    E_DEVICE_UNAVAILABLE            The camera becomes unavailable.
523         * @exception    E_DEVICE_FAILED                         The device operation has failed.
524         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
525         * @exception    E_UNSUPPORTED_OPERATION     The target device does not support flash configuration feature.
526         * @exception    E_UNSUPPORTED_TYPE          The specified @c flashMode is not supported.
527         * @remarks              Normally the flash splashes before the camera captures a picture. @n
528         *                               ::CAMERA_FLASH_MODE_CONTINUOUS keeps the flash turned on after the method is called until ::CAMERA_FLASH_MODE_OFF is set. @n
529         *                               This method returns E_UNSUPPORTED_OPERATION in the Emulator.
530         * @see                  GetFlashMode()
531         */
532         result SetFlashMode(CameraFlashMode flashMode);
533
534         /**
535         * Gets the flash mode of the camera.
536         *
537         * @return               The flash mode of the camera
538         * @exception    E_SUCCESS                                       The method is successful.
539         * @remarks              The specific error code can be accessed using the GetLastResult() method.
540         *                               If the %Camera doesn't support the flash mode, this method always returns ::CAMERA_FLASH_MODE_OFF.
541         * @see                  SetFlashMode()
542         */
543         CameraFlashMode GetFlashMode(void) const;
544
545         /**
546         * Sets the exposure level of the camera.
547         *
548         * @return               An error code
549         * @param[in]    exposure                                        The camera exposure level @n
550         *                                                                                       The range of this parameter is from @c 0 to @c 9.
551         * @exception    E_SUCCESS                                       The method is successful.
552         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
553         * @exception    E_OUT_OF_RANGE                          The specified exposure level is out of range.
554         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
555         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
556         * @exception    E_DEVICE_FAILED                         The device operation has failed.
557         * @exception    E_UNSUPPORTED_OPERATION  This operation is not supported.
558         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
559         * @remarks              The default exposure level is @c 5.
560         *                               The supported range for exposure level is from @c 0 to @c 9.
561         *                               This method works correctly when PowerOn() is executed. @n@n
562         *                               For more information on the relationship between this method and the PowerOn() method, and the
563         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
564         ">Launching the Camera</a>.
565         * @see                  GetExposure()
566         */
567         result SetExposure(int exposure);
568
569         /**
570         * Gets the exposure level of the camera.
571         *
572         * @return               An integer value representing the exposure level of the camera @n
573         *                               The returned value ranges from @c 0 to @c 9.
574         * @exception    E_SUCCESS                               The method is successful.
575         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
576         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
577         * @remarks              The specific error code can be accessed using the GetLastResult() method. @n
578         *                               The supported range for exposure level is from @c 0 to @c 9.
579         * @see                  SetExposure()
580         */
581         int GetExposure(void) const;
582
583         /**
584         * Sets the white balance level of the camera.
585         *
586         * @return               An error code
587         * @param[in]    whiteBalance                            The camera white balance level
588         * @exception    E_SUCCESS                                       The method is successful.
589         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
590         * @exception    E_INVALID_ARG                           The specified input parameter is invalid.
591         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
592         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
593         * @exception    E_DEVICE_FAILED                         The device operation has failed.
594         * @exception    E_UNSUPPORTED_OPERATION  This operation is not supported.
595         * @exception    E_UNSUPPORTED_TYPE                The @c whiteBalance type is not supported.
596         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
597         * @remarks              The default white balance is ::CAMERA_WHITE_BALANCE_AUTO.
598         *                               This method works correctly when PowerOn() is executed. @n@n
599         *                               For more information on the relationship between this method and the PowerOn() method, and the
600         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
601         ">Launching the Camera</a>.
602         * @see                  GetWhiteBalance()
603         */
604
605         result SetWhiteBalance(CameraWhiteBalance whiteBalance);
606
607         /**
608         * Gets the white balance level of the camera.
609         *
610         * @return               The white balance level of the camera
611         * @exception    E_SUCCESS                               The method is successful.
612         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
613         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
614         * @remarks              The specific error code can be accessed using the GetLastResult() method.
615         * @see                  SetWhiteBalance()
616         */
617         CameraWhiteBalance GetWhiteBalance(void) const;
618
619         /**
620         * Sets the capturing quality of the camera.
621         *
622         * @return               An error code
623         * @param[in]    quality                                         The camera's quality level
624         * @exception    E_SUCCESS                                       The method is successful.
625         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
626         * @exception    E_INVALID_ARG                           The specified @c quality is not supported.
627         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
628         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
629         * @exception    E_DEVICE_FAILED                         The device operation has failed.
630         * @exception    E_UNSUPPORTED_OPERATION         This operation is not supported.
631         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
632         * @remarks              The default quality is ::CAMERA_QUALITY_NORMAL.
633         *                               This method works correctly when PowerOn() is executed. @n@n
634         *                               For more information on the relationship between this method and the PowerOn() method, and the
635         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
636         ">Launching the Camera</a>.
637         * @see                  GetQuality()
638         */
639         result SetQuality(CameraQuality quality);
640
641         /**
642         * Gets the capturing quality of the camera.
643         *
644         * @return               The Camera quality level
645         * @exception    E_SUCCESS                                       The method is successful.
646         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
647         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
648         * @remarks              The specific error code can be accessed using the GetLastResult() method.
649         * @see                  SetQuality()
650         */
651         CameraQuality GetQuality(void) const;
652
653         /**
654         * Sets the focus mode of the camera.
655         *
656         * @return               An error code
657         * @param[in]    focusMode                               focus mode
658         * @exception    E_SUCCESS                                       The method is successful.
659         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
660         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
661         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
662         * @exception    E_DEVICE_FAILED                         The device operation has failed.
663         * @exception    E_UNSUPPORTED_OPERATION  This operation is not supported.
664         * @exception    E_UNSUPPORTED_TYPE                The @c focusMode type is not supported.
665         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
666         * @remarks      ::CAMERA_FOCUS_MODE_NONE always throws E_INVALID_ARG.
667         * @see          GetFocusMode()
668         */
669         result SetFocusMode(CameraFocusMode focusMode);
670
671         /**
672         * Gets the focus mode of the camera.
673         *
674         * @return               The %Camera focus mode
675         * @see          SetFocusMode()
676         */
677         CameraFocusMode GetFocusMode(void) const;
678
679         /**
680         * Enables or disables the auto focus mode of the camera.
681         *
682         * @return               An error code
683         * @param[in]    callback                                        Set to @c true to enable auto focus callback, @n
684         *                                                                                       else @c false
685         * @exception    E_SUCCESS                                       The method is successful.
686         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
687         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
688         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
689         * @exception    E_DEVICE_FAILED                         The device operation has failed.
690         * @exception    E_UNSUPPORTED_OPERATION  This operation is not supported.
691         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
692         * @remarks              If @c callback is set to @c false, the ICameraEventListener::OnCameraAutoFocused() method is not called.
693         *                               This method throws E_UNSUPPORTED_OPERATION in the emulator. @n@n
694         *                          For more information on the relationship between this method and the PowerOn() method, and the
695         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
696         ">Launching the Camera</a>.
697         * @see                  ICameraEventListener::OnCameraAutoFocused()
698         */
699         result SetAutoFocus(bool callback);
700
701         /**
702         * Check the object is ready to call the auto focus callback or not.
703         *
704         * @return               true if it calls the callback, otherwise false.
705         */
706         bool ReadyToAutoFocusCallback(void) const;
707
708         /**
709         * Sets the auto focus point list.
710         *
711         * @return           An error code
712         * @param[in]        pointList                                          auto focus point list which consists of Tizen::Graphics::Point pointers
713         * @exception        E_SUCCESS                                                                The method is successful.
714         * @exception        E_INVALID_STATE                                           This instance is in an invalid state for this method.
715         * @exception        E_DEVICE_BUSY                                             The device cannot be approached because of other operations.
716         * @exception        E_DEVICE_UNAVAILABLE                    The device is unavailable.
717         * @exception        E_DEVICE_FAILED                                           The device operation has failed.
718         * @exception        E_INVALID_ARG                               The specified input parameter is invalid.
719         * @exception        E_UNSUPPORTED_OPERATION         The device does not support the focus point.
720         * @exception        E_UNSUPPORTED_TYPE                        This method is not supported for the current focus mode.
721         * @exception        E_OUT_OF_MEMORY                                                    The memory is insufficient.
722         * @remarks              This method works fine when the current focus mode is CAMERA_FOCUS_MODE_NORMAL or CAMRA_FOCUS_MODE_MACRO.
723         * @see                 GetAutoFocusPointN()
724         */
725         result SetAutoFocusPoint(const Tizen::Base::Collection::IList& pointList);
726
727         /**
728         * Gets the auto focus point list. @n
729         * Each item of the list has a pointer of the Tizen::Graphics::Point value.
730         *
731         * @return               A list of dimensions that represent the auto focus point, @n
732         *                               else @c null if no auto focus point is set or an exception occurs
733         * @exception    E_SUCCESS                                                                The method is successful.
734         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
735         * @remarks           The specific error code can be accessed using the GetLastResult() method. @n
736         *                                       The return value and each item in the list must be deleted by the caller.
737         * @see                 SetAutoFocusPoint()
738         */
739         Tizen::Base::Collection::IList* GetAutoFocusPointN(void) const;
740
741         /**
742         * Sets the capturing format of the camera. @n
743         * Initially, the default format is set using the internal configuration.
744         *
745         * @return               An error code
746         * @param[in]    format                                          The camera's capture format @n
747         *                                                                                       It should be one of the pixel formats extracted using GetSupportedCaptureFormatListN().
748         * @exception    E_SUCCESS                                       The method is successful.
749         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
750         * @exception    E_SYSTEM                                        A system error has occurred.
751         * @exception    E_UNSUPPORTED_FORMAT            The specified format is not supported.
752         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
753         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
754         * @exception    E_DEVICE_FAILED                         The device operation has failed.
755         * @exception    E_UNSUPPORTED_OPERATION  This operation is not supported.
756         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
757         * @remarks              This method works correctly when PowerOn() is executed.
758         * @see                  GetCaptureFormat(), GetSupportedCaptureFormatListN()
759         */
760         result SetCaptureFormat(const Tizen::Graphics::PixelFormat format);
761
762         /**
763         * Gets the capturing format of the camera.
764         *
765         * @return               The capturing format of the camera
766         * @exception    E_SUCCESS                               The method is successful.
767         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
768         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
769         * @remarks              The specific error code can be accessed using the GetLastResult() method.
770         * @see                  SetCaptureFormat(), GetSupportedCaptureFormatListN()
771         */
772         Tizen::Graphics::PixelFormat GetCaptureFormat(void) const;
773
774         /**
775         * Gets the supported capturing format list for the Camera class. @n
776         * Each list item has a Tizen::Graphics::PixelFormat value.
777         *
778         * @return               A list of the formats supported by the Camera class, @n
779         *                               else @c null if no capture format is supported or an exception occurs
780         * @exception    E_SUCCESS                               The method is successful.
781         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
782         * @exception    E_SYSTEM                                A system error has occurred.
783         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
784         * @remark               The specific error code can be accessed using the GetLastResult() method. @n
785         *                               The return value must be deleted. @n
786         *                               This method works correctly when PowerOn() is executed.
787         * @see                  SetCaptureFormat(), GetCaptureFormat()
788         */
789         Tizen::Base::Collection::IListT<Tizen::Graphics::PixelFormat>* GetSupportedCaptureFormatListN(void) const;
790
791         /**
792         * Sets the preview format of the camera. @n
793         * Initially, the default format is set using the internal configuration.
794         *
795         * @return               An error code
796         * @param[in]    format                                          The camera's preview format @n
797         *                                                                                       It should be one of the pixel formats extracted using GetSupportedPreviewFormatListN().
798         * @exception    E_SUCCESS                                       The method is successful.
799         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
800         * @exception    E_SYSTEM                                        A system error has occurred.
801         * @exception    E_UNSUPPORTED_FORMAT            The specified format is not supported.
802         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
803         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
804         * @exception    E_DEVICE_FAILED                         The device operation has failed.
805         * @exception    E_UNSUPPORTED_OPERATION  This operation is not supported.
806         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
807         * @remarks              This method works in ::CAMERA_STATE_INITIALIZED state. @n@n
808         *                               For more information on the relationship between this method and the PowerOn() method, and the
809         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
810         ">Launching the Camera</a>.
811         * @see                  GetPreviewFormat(), GetSupportedPreviewFormatListN()
812         */
813         result SetPreviewFormat(const Tizen::Graphics::PixelFormat format);
814
815         /**
816         * Gets the preview format of the camera.
817         *
818         * @return               The preview format of the camera
819         * @exception    E_SUCCESS                               The method is successful.
820         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
821         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
822         * @remarks              The specific error code can be accessed using the GetLastResult() method.
823         * @see                  SetPreviewFormat(), GetSupportedPreviewFormatListN()
824         */
825         Tizen::Graphics::PixelFormat GetPreviewFormat(void) const;
826
827         /**
828         * Gets the supported preview format list for the Camera class. @n
829         * Each list item has a Tizen::Graphics::PixelFormat value.
830         *
831         * @return               A list of the preview format supported by the Camera class, @n
832         *                               else @c null if no preview format is supported or an exception occurs
833         * @exception    E_SUCCESS                               The method is successful.
834         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
835         * @exception    E_SYSTEM                                A system error has occurred.
836         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
837         * @remark               The specific error code can be accessed using the GetLastResult() method. @n
838         *                               The return value must be deleted. @n
839         *                               This method works correctly when PowerOn() is executed.
840         * @see                  SetPreviewFormat(), GetPreviewFormat()
841         */
842         Tizen::Base::Collection::IListT<Tizen::Graphics::PixelFormat>* GetSupportedPreviewFormatListN(void) const;
843
844
845         /**
846         * Sets the ISO level of the camera.
847         *
848         * @return               An error code
849         * @param[in]    isoLevel                                        The camera's ISO level @n
850         *                                                                                       The default ISO level is set from the internal configuration.
851         * @exception    E_SUCCESS                                       The method is successful.
852         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
853         * @exception    E_OUT_OF_RANGE                          The specified ISO level is out of range.
854         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
855         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
856         * @exception    E_DEVICE_FAILED                         The device operation has failed.
857         * @exception    E_UNSUPPORTED_OPERATION         This operation is not supported.
858         * @exception    E_UNSUPPORTED_TYPE                The specified @c isoLevel is not supported.
859         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
860         * @remarks              In some devices this method works in the ::CAMERA_STATE_PREVIEW state.
861         *                               This method throws E_UNSUPPORTED_OPERATION in the emulator. @n@n
862         *                               For more information on the relationship between this method and the PowerOn() method, and the
863         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
864         ">Launching the Camera</a>.
865         * @see                  GetIsoLevel()
866         */
867         result SetIsoLevel(CameraIsoLevel isoLevel);
868
869         /**
870         * Gets the ISO level of the camera.
871         *
872         * @return               The ISO level of the camera
873         * @exception    E_SUCCESS                               The method is successful.
874         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
875         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
876         * @remarks              The specific error code can be accessed using the GetLastResult() method.
877         * @see                  SetIsoLevel()
878         */
879         CameraIsoLevel GetIsoLevel(void) const;
880
881         /**
882         * Sets the preview frame rate of the camera. @n
883         * Initially, the default frame rate is set using the internal configuration.
884         *
885         * @return               An error code
886         * @param[in]    fps                                                     The frame rate per second
887         * @exception    E_SUCCESS                                       The method is successful.
888         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
889         * @exception    E_OUT_OF_RANGE                          The specified @c fps is out of range on this device.
890         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
891         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
892         * @exception    E_DEVICE_FAILED                         The device operation has failed.
893         * @exception    E_UNSUPPORTED_OPERATION         This operation is not supported.
894         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
895         * @remarks              This method works in ::CAMERA_STATE_INITIALIZED state. @n@n
896         *                               For more information on the relationship between this method and the PowerOn() method, and the
897         *                          state transition caused by this method, see <a href="../com.osp.cppprogramming.help/html/dev_guide/media/launching_camera.htm
898         ">Launching the Camera</a>.
899         * @see                  GetPreviewFrameRate(), GetSupportedPreviewFrameRateListN(), FRAME_RATE_AUTO
900         */
901         result SetPreviewFrameRate(int fps);
902
903         /**
904         * Retrieves the frame rate of the camera.
905         *
906         * @return               The frame rate of the camera @n
907         *                          If the frame rate is not set using SetPreviewFrameRate(), the system-dependent default frame rate is returned.
908         * @exception    E_SUCCESS                               The method is successful.
909         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
910         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
911         * @remarks              The specific error code can be accessed using the GetLastResult() method.
912         * @see                  SetPreviewFrameRate(), GetSupportedPreviewFrameRateListN()
913         */
914         int GetPreviewFrameRate(void) const;
915
916         /**
917         * Gets the supported preview frame rate list for the Camera class. @n
918         * Each list item has an integer value.
919         *
920         * @return               A list of the preview frame rate supported by the Camera class, @n
921         *                               else @c null if no frame rate is supported or an exception occurs
922         * @exception    E_SUCCESS                               The method is successful.
923         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
924         * @exception    E_SYSTEM                                A system error has occurred.
925         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
926         * @remark               The specific error code can be accessed using the GetLastResult() method. @n
927         *                               The return value must be deleted by the caller. @n
928         *                               This method works correctly when PowerOn() is executed. @n
929         *                               This method returns fps list that can be supported by all resolutions.
930         * @see                  SetPreviewFrameRate(), GetPreviewFrameRate(), FRAME_RATE_AUTO
931         * @see                  GetSupportedPreviewFrameRateListN(const Tizen::Graphics::Dimension& dim) const
932         */
933         Tizen::Base::Collection::IListT<int>* GetSupportedPreviewFrameRateListN(void) const;
934
935         /**
936         * Gets the supported preview frame rate list of the input resolution of the Camera class. @n
937         * Each item of the list has an integer value.
938         *
939         * @return               A list of the preview frame rate of the input preview resolution, @n
940         *                               else @c null if no frame rate is supported or an exception occurs
941         * @param[in]    dim                                             The preview resolution of the camera
942         * @exception    E_SUCCESS                               The method is successful.
943         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
944         * @exception    E_INVALID_ARG                   The specified input resolution is invalid.
945         * @exception    E_SYSTEM                                A system error has occurred.
946         * @exception    E_OUT_OF_MEMORY                 The memory is insufficient.
947         * @remark               The specific error code can be accessed using the GetLastResult() method. @n
948         *                               The return value must be deleted by the caller. @n
949         *                               This method works correctly when PowerOn() is executed.
950         * @see                  SetPreviewFrameRate(), GetPreviewFrameRate()
951         * @see                  GetSupportedPreviewFrameRateListN(void) const
952         */
953         Tizen::Base::Collection::IListT<int>* GetSupportedPreviewFrameRateListN(const Tizen::Graphics::Dimension& dim) const;
954
955         /**
956         * Sets the orientation value in the Exchangeable Image File Format (EXIF) field of the captured data.
957         *
958         * @return               An error code
959         * @param[in]    orientation                                     The orientation value to set in EXIF
960         * @exception    E_SUCCESS                                       The method is successful.
961         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
962         * @exception    E_OUT_OF_RANGE                          The input value is out of range.
963         * @exception    E_UNSUPPORTED_OPERATION         This operation is not supported.
964         * @exception    E_SYSTEM                                        A system error has occurred.
965         * @remarks              The default value of orientation is CAMERA_EXIF_ORIENTATION_TOP_LEFT. @n
966         *                               This method works correctly when PowerOn() is executed. The orientation value set by this method can be obtained using the
967         *                               Tizen::Content::ImageData::GetOrientation() method after writing the captured data to a file.
968         */
969         result SetExifOrientation(CameraExifOrientation orientation);
970
971         /**
972         * Sets the orientation of the camera.
973         *
974         * @return               An error code
975         * @param[in]    orientation                     The orientation of the camera
976         * @exception    E_SUCCESS                       The method is successful.
977         * @exception    E_INVALID_STATE         This method is invalid for the current state of this instance.
978         * @exception    E_INVALID_ARG           The specified @c rotation is not supported.
979         */
980         result SetExifOrientationAttr(CameraExifOrientation orientation);
981
982         /**
983         * Sets the GPS coordinates in the Exchangeable Image File Format (EXIF) field for the captured data.
984         *
985         * @return               An error code
986         * @param[in]    latitude                                        The latitude value to be set in EXIF @n
987         *                                                                                       The valid range is [-90.0, 90.0].
988         * @param[in]    longitude                                       The longitude value to be set in EXIF @n
989         *                                                                                       The valid range is [-180.0, 180.0]
990         * @param[in]    altitude                                        The altitude value to be set in EXIF
991         * @exception    E_SUCCESS                                       The method is successful.
992         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
993         * @exception    E_OUT_OF_RANGE                          The input value is out of range.
994         * @exception    E_UNSUPPORTED_OPERATION         This operation is not supported.
995         * @exception    E_SYSTEM                                        A system error has occurred.
996         * @remarks              This method sets the GPS coordinates and enables entering the coordinates into the Exchangeable Image File Format (EXIF).
997         * @remarks              By default, the GPS coordinates are not entered in JPEG's EXIF.
998         * @remarks              The GPS coordinates that are set using this method are entered in every call to the
999         *                               Capture() method, until DisableExifGpsCoordinates() is called or this instance is destroyed. @n
1000         *                               This method works correctly when PowerOn() is executed. @n
1001         *                               The values set by this method can result in an error as compared to the values stored in the Exchangeable Image File Format (EXIF) field.
1002         * @see                  DisableExifGpsCoordinates()
1003         */
1004         result SetExifGpsCoordinates(double latitude, double longitude, float altitude);
1005
1006         /**
1007         * Disables the insertion of the GPS coordinates in the Exchangeable Image File Format (EXIF) field for the captured data.
1008         *
1009         * @return               An error code
1010         * @exception    E_SUCCESS                                       The method is successful.
1011         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
1012         * @exception    E_OUT_OF_RANGE                          The input value is out of range.
1013         * @exception    E_UNSUPPORTED_OPERATION  This operation is not supported.
1014         * @exception    E_SYSTEM                                        A system error has occurred.
1015         * @see            SetExifGpsCoordinates()
1016         */
1017         result DisableExifGpsCoordinates(void);
1018
1019         /**
1020         * Sets the flip type for the previewed and captured data.
1021         *
1022         * @return               An error code
1023         * @param[in]    flip                                            The camera flip type
1024         * @exception    E_SUCCESS                                       The method is successful.
1025         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
1026         * @exception    E_INVALID_ARG                           The input value is out of range.
1027         * @exception    E_UNSUPPORTED_OPERATION  This operation is not supported.
1028         * @exception    E_UNSUPPORTED_TYPE                The specified flip type is not supported.
1029         * @exception    E_SYSTEM                                        A system error has occurred.
1030         * @remarks              This method works in the ::CAMERA_STATE_INITIALIZED state.
1031         * @remarks              Finally the last specified type is applied even with the several types applicable.
1032         * @see            GetFlip()
1033         */
1034         result SetFlip(CameraFlipType flip);
1035
1036         /**
1037         * Gets the flip type for the previewed and captured data.
1038         *
1039         * @return               The Camera flip type
1040         * @exception    E_SUCCESS                               The method is successful.
1041         * @exception    E_INVALID_STATE                 This instance is in an invalid state for this method.
1042         * @see    SetFlip()
1043         */
1044         CameraFlipType GetFlip(void) const;
1045
1046         /**
1047         * Sets the rotation for the previewed data.
1048         *
1049         * @return                  An error code
1050         * @param[in] rotation                                                                     The camera rotation
1051         * @exception E_SUCCESS                                                     The method is successful.
1052         * @exception E_INVALID_STATE                                             This instance is in an invalid state for this method.
1053         * @exception E_INVALID_ARG                                      The input value is out of range.
1054         * @exception E_UNSUPPORTED_OPERATION     This operation is not supported.
1055         * @exception E_UNSUPPORTED_TYPE                    The specified rotation type is not supported.
1056         * @exception E_SYSTEM                                                           A system error has occurred.
1057         * @remarks   This method works in the ::CAMERA_STATE_INITIALIZED state.
1058         * @remarks   The last specified type is applied even with the several types applicable.
1059         * @remarks   This method rotates the preview and recording data but not the captured image. @n
1060         *                       The captured image's orientation is always following the physical rotation.
1061         * @remarks   When the preview is rotated, the preview callback data's width and height can be changed. @n
1062         *                       Thus the application should recognize these changes when it uses the preview data in ICameraEventListener::OnCameraPreviewed() callback.
1063         * @remarks   For the intended view of preview, Tizen::Ui::Controls::OverlayRegion::OVERLAY_REGION_TYPE_NORMAL should be selected when Tizen::Ui::Controls::OverlayRegion is created.
1064         * @see                                   GetPreviewRotation()
1065         *
1066         */
1067         result SetPreviewRotation(CameraRotation rotation);
1068
1069         /**
1070         *
1071         * Gets the rotation for the previewed data.
1072         *
1073         * @return                  The camera rotation
1074         * @exception E_SUCCESS                                          The method is successful.
1075         * @exception E_INVALID_STATE                              This instance is in an invalid state for this method.
1076         * @see                    SetPreviewRotation()
1077         *
1078         */
1079         CameraRotation GetPreviewRotation(void) const;
1080
1081         /**
1082         * Sets the metering mode of the camera.
1083         *
1084         * @return               An error code
1085         * @param[in]    meteringMode                            metering mode
1086         * @exception    E_SUCCESS                                       The method is successful.
1087         * @exception    E_INVALID_STATE                         This instance is in an invalid state for this method.
1088         * @exception    E_DEVICE_BUSY                           The device cannot be approached because of other operations.
1089         * @exception    E_DEVICE_UNAVAILABLE            The device is unavailable.
1090         * @exception    E_DEVICE_FAILED                         The device operation has failed.
1091         * @exception    E_UNSUPPORTED_OPERATION  This operation is not supported.
1092         * @exception    E_UNSUPPORTED_TYPE                The @c meteringMode type is not supported.
1093         * @exception    E_OUT_OF_MEMORY                         The memory is insufficient.
1094         * @remarks      ::CAMERA_METERING_MODE_NONE always throws E_INVALID_ARG.
1095         * @see          GetMeteringMode()
1096         */
1097         result SetMeteringMode(CameraMeteringMode meteringMode);
1098
1099         /**
1100         * Gets the metering mode of the camera.
1101         *
1102         * @return               The %Camera metering mode
1103         * @see          SetMeteringMode()
1104         */
1105         CameraMeteringMode GetMeteringMode(void) const;
1106
1107         /**
1108          * Sets the scene mode of the camera.
1109          *
1110          * @return             An error code
1111          * @param[in]       sceneMode                                                  The scene mode
1112          * @exception       E_SUCCESS                                                               The method is successful.
1113          * @exception       E_INVALID_STATE                                         This instance is in an invalid state for this method.
1114          * @exception       E_DEVICE_BUSY                                            The camera is under use by other application.
1115          * @exception       E_DEVICE_UNAVAILABLE                  The camera becomes unavailable.
1116          * @exception       E_DEVICE_FAILED                                         The device operation has failed.
1117          * @exception       E_INVALID_ARG                                            The specified scene mode is invalid.
1118          * @exception       E_UNSUPPORTED_OPERATION         The target device does not support scene mode configuration feature.
1119          * @exception       E_UNSUPPORTED_TYPE                      The specified @c sceneMode is not supported.
1120          * @remarks             In a specific scene mode, camera's attributes such as brightness, metering mode, iso level, white balance, flash and focus  are changed to the ones which are pre-defined by each scene mode.@n
1121          *                         In a specific scene mode, if an application sets any attribute which is related to the scene, the mode can be changed to ::CAMERA_SCENE_OFF.@n
1122          *                         Thus it is recommended that the application checks the current scene mode after setting the attributes.@n
1123          *                         In case that the scene mode is changed to ::CAMERA_SCENE_OFF, all the attributes set by the application are re-loaded.@n
1124          */
1125          result SetSceneMode(CameraSceneMode sceneMode);
1126
1127          /**
1128          * Adds the stream filter to process the video stream data while previewing or recording.
1129          *
1130          * @return               An error code
1131          * @param[in]    filter                  An instance of IVideoStreamFilter
1132          * @exception    E_SUCCESS                       The method is successful.
1133          * @exception    E_OBJ_ALREADY_EXIST     The filter already exists.
1134          * @exception    E_OUT_OF_MEMORY         The memory is insufficient.
1135          * @remarks IVideoStreamFilter::ProcessVideoStream() will be called when the video frame is ready.
1136          */
1137          result AddVideoStreamFilter(IVideoStreamFilter& filter);
1138
1139          /**
1140          * Removes the stream filter to stop receiving the video stream data.
1141          *
1142          * @return               An error code
1143          * @param[in]    filter                  An instance of IVideoStreamFilter
1144          * @exception    E_SUCCESS                       The method is successful.
1145          * @exception    E_OBJ_NOT_FOUND                The filter is not found.
1146          */
1147          result RemoveVideoStreamFilter(IVideoStreamFilter& filter);
1148
1149          /**
1150          * Gets the scene mode of the camera.
1151          *
1152          * @return                         The %Camera scene mode
1153          */
1154          CameraSceneMode GetSceneMode(void) const;
1155
1156         /**
1157         * Gets the camera's state.
1158         *
1159         * @return                  The state
1160         */
1161         camera_state_e GetMmState(void) const;
1162
1163         /**
1164         * Sets the state.
1165         *
1166         * @param[in]    state                   _AudioRecorderImpl's state
1167         */
1168         void SetState(CameraState state);
1169
1170         /**
1171         * Get the camera selection.
1172         *
1173         * @return          The camera selection.
1174         */
1175         CameraSelection GetSelection(void) const;
1176
1177         /**
1178         * Enqueues the preview or captured data.
1179         *
1180         * @return          An error code
1181         * @exception    E_SUCCESS                                               The method is successful.
1182         * @exception    E_INVALID_ARG                   A specified input parameter is invalid.
1183         * @param[in]    cameraBuffer            The data prepared for enqueing.
1184         * @remarks      The preview and capture data is delivered by callback. _CameraImpl class should keep the data using Queue and consume the data in the event listener. @n
1185         *                       Preview frame skip is controled in this method.
1186         */
1187         result EnqueueData(_CameraBuffer& cameraBuffer);
1188
1189         /**
1190         * Dequeues the preview or captured data.
1191         *
1192         * @return          A buffer data
1193         * @param[in]    bufferType              The buffer type
1194         * @remarks      The preview and capture data is delivered by callback. _CameraImpl class should keep the data using Queue and consume the data in the event listener. @n
1195         *                       Preview frame skip is controled in this method. @n
1196         *                       The return value must be deleted. @n
1197         *                       The return value cannot be null.
1198         */
1199         _CameraBuffer* DequeueDataN(_CameraBufferType bufferType);
1200
1201         /**
1202         * Gets the camera coordinator.
1203         *
1204         * @return          camera coordinator
1205         */
1206         _CameraCoordinator* GetCoordinator(void);
1207
1208         /**
1209         * Gets the camera's zero shutter lag capability
1210         *
1211         * @return          Zero shutter lag capability
1212         */
1213         bool IsZeroShutterLag(void) const;
1214
1215
1216         /**
1217         * Gets the camera's recommened preview format
1218         *
1219         * @return          recommened preview format
1220         */
1221         Tizen::Graphics::PixelFormat GetDeviceRecommendPreviewFormat(void) const;
1222
1223         /**
1224         * Called when the event is received from the %_ICameraCoordinatorListener object.
1225         *
1226         * @return               An error code
1227         * @param[in]     message        message id
1228         * @param[in]     state          camera state
1229         * @param[in]     pParam0        Extra data0
1230         */
1231         result OnCamcorderCoordinatorEventReceived(camera_state_e previous, camera_state_e current, bool byPolicy);
1232
1233         /**
1234         * Called when the mode is prepared to change.
1235         *
1236         * @return               An error code
1237         * @param[in]     mode           camcorder mode
1238         */
1239         result OnCameraCoordinatorModeChangePrepared(_CameraMode mode);
1240
1241         /**
1242         * Called when the mode is changed.
1243         *
1244         * @return               An error code
1245         * @param[in]     mode           camcorder mode
1246         */
1247         result OnCameraCoordinatorModeChanged(_CameraMode mode);
1248
1249         /**
1250         * Called when the other module is removed
1251         *
1252         * @return               An error code
1253         */
1254         result OnCameraCoordinatorOtherRemoved(void);
1255
1256         /**
1257          *      Function definition for start capture.
1258          *
1259          *      @return         This function returns 0 on success, else on failure.
1260          *      @param[in]      mmHandle                The camcorder handle
1261          */
1262         static int StartMmCapture(_CameraHandle mmHandle);
1263
1264         /**
1265          *      Function definition for state chnaged callback.
1266          *
1267          *      @param[in]      previous                        Previous state
1268          *      @param[in]      current                 Current state
1269          *      @param[in]      byPolicy                        The flag which says the state was chnaged from the policy.
1270          *      @param[in]      pUserData               User parameter which is received from user when callback function was set
1271          *      @remarks        This function is called in the camera created thread.
1272          */
1273         static void StateChangedCb(camera_state_e previous, camera_state_e current, bool byPolicy, void *pUserData);
1274
1275         /**
1276          *      Function definition for image capture callback.
1277          *
1278          *      @param[in]      pImage                  Reference pointer to captured image data
1279          *      @param[in]      pPostview               Reference pointer to post view image data
1280          *      @param[in]      pThumbnail              Reference pointer to thumbnail data
1281          *      @param[in]      pUserData               User parameter which is received from user when callback function was set
1282          *      @remarks        This function is issued in the context of gstreamer (video src thread).
1283          */
1284         static void CaptureCb(camera_image_data_s* pImage, camera_image_data_s *pPostview, camera_image_data_s* pThumbnail, void* pUserData);
1285
1286         /**
1287          *      Function definition for capture completion callback.
1288          *
1289          *      @param[in]      pUserData               User parameter which is received from user when callback function was set
1290          *      @remarks        This function is issued in the context of gstreamer (video src thread).
1291          */
1292         static void CaptureCompletedCb(void *pUserData);
1293
1294         /**
1295          *      Function definition for preview stream callback.
1296          *
1297          *      @param[in]      pFrame                  frame data structure for stream
1298          *      @param[in]      pUserData                       User parameter which is received from user when callback function was set
1299          *      @remarks        This function is issued in the context of gstreamer (video src thread).
1300          */
1301         static void PreviewCb(camera_preview_data_s *pFrame, void *pUSerData);
1302
1303         /**
1304          *      Function definition for interrupted callback.
1305          *
1306          *      @param[in]      policy                  The policy which made the interruption
1307          *      @param[in]      previous                        Previous state
1308          *      @param[in]      current                 Current state
1309          *      @param[in]      pUserData               User parameter which is received from user when callback function was set
1310          *      @remarks        This function is called in the camera created thread.
1311          */
1312         static void InterruptedCb(camera_policy_e policy, camera_state_e previous, camera_state_e current, void *pUserData);
1313
1314
1315         /**
1316          *      Function definition for error callback.
1317          *
1318          *      @param[in]      error                   The cause which made the error
1319          *      @param[in]      current                 Current state
1320          *      @param[in]      pUserData               User parameter which is received from user when callback function was set
1321          *      @remarks        This function is called in the camera created thread.
1322          */
1323         static void ErrorCb(camera_error_e error, camera_state_e current, void *pUserData);
1324
1325         /**
1326          *      Function definition for focus changed callback.
1327          *
1328          *      @param[in]      state                   focus state
1329          *      @param[in]      pUserData               User parameter which is received from user when callback function was set
1330          *      @remarks        This function is called in the camera created thread.
1331          */
1332         static void FocusStateChangedCb(camera_focus_state_e state, void *pUserData);
1333
1334         /**
1335          * Gets the Impl instance.
1336          *
1337          * @return              The pointer to %_CameraImpl
1338          * @param[in]   pCamera         The %Camera pointer
1339          */
1340         static _CameraImpl* GetInstance(Camera *pCamera);
1341
1342         /**
1343          * Gets the Impl instance.
1344          *
1345          * @return              The pointer to %_CameraImpl
1346          * @param[in]   pCamera         The %Camera pointer
1347          */
1348         static const _CameraImpl* GetInstance(const Camera *pCamera);
1349
1350 private:
1351         /**
1352         * Converts the error from camera.
1353         *
1354         * @return          An error code
1355         * @param[in]    err                      camera error
1356         */
1357         result ConvertResult(int err) const;
1358
1359         /**
1360         * Set the property.
1361         *
1362         * @return          An error code
1363         * @param[in]    operation                  camcorder's operation type
1364         * @param[in]    min                                      min value
1365         * @param[in]    max                              max value
1366         * @param[in]    value                      value to be set
1367         */
1368         result SetProperty(_CameraOperationType operation, int min, int max, int value);
1369
1370         /**
1371         * Get the property.
1372         *
1373         * @return          An error code
1374         * @param[in]    operation                  camcorder's operation type
1375         * @param[out]   mmMin                              min value
1376         * @param[out]   mmMax                      max value
1377         */
1378         result GetProperty(_CameraOperationType operation, int& mmMin, int& mmMax) const;
1379
1380         /**
1381         * Get the property list.
1382         *
1383         * @return          The property list
1384         * @param[in]    operation                  camcorder's operation type
1385         * @param[in]    itemQueryType      item type for verifying the list
1386         * @remarks      If the list's item type and itemQueryType parameter are not same, it returns null.
1387         */
1388         Tizen::Base::Collection::IList* GetPropertyListN(_CameraOperationType operation, _ResultType itemQueryType) const;
1389
1390         /**
1391         * Get the property list.
1392         *
1393         * @return          The property list
1394         * @param[in]    key                key name
1395         */
1396         Tizen::Base::Collection::IList* GetPropertyListN(const Tizen::Base::String& key) const;
1397
1398         /**
1399         * Re-load configuration.
1400         *
1401         * @return          An error code
1402         * @param[in]    reload                            reload configuration field
1403         * @exception    E_SUCCESS                               The method is successful.
1404         * @exception    E_SYSTEM                                A system error has occurred.
1405         * @remarks      Multiple configuration field can be set using reload parameter appending.
1406         */
1407         result ReloadConfiguration(int reload);
1408
1409         /**
1410         * Load default configuration.
1411         *
1412         * @return          An error code
1413         * @param[in]    reload                            reload configuration field
1414         * @exception    E_SUCCESS                               The method is successful.
1415         * @exception    E_SYSTEM                                A system error has occurred.
1416         */
1417         result LoadDefaultConfiguration(int reload);
1418
1419         /**
1420         * Change the focus state.
1421         *
1422         * @return       An error code
1423         * @param[in]    focusMode             focus' destinationed mode
1424         * @exception    E_SUCCESS                               The method is successful.
1425         * @exception    E_SYSTEM                                A system error has occurred.
1426         */
1427         result ChangeFocusModeTo(CameraFocusMode focusMode);
1428
1429         /**
1430         * Handle the auto focus operations.
1431         *
1432         * @return       An error code
1433         * @param[in]    currentMode             focus' current mode
1434         * @exception    E_SUCCESS                               The method is successful.
1435         * @exception    E_SYSTEM                                A system error has occurred.
1436         */
1437         result HandleAutoFocus(CameraFocusMode currentMode);
1438
1439         /**
1440          * Sets the scene mode off.
1441          *
1442          * @return             An error code
1443          * @param[in]       reload                                                  The reload flag
1444          * @exception       E_SUCCESS                                                               The method is successful.
1445          * @exception       E_DEVICE_FAILED                                         The device operation has failed.
1446          * @exception   E_SYSTEM                                A system error has occurred.
1447          */
1448         result SetSceneModeOff(int reload);
1449
1450         _CameraImpl(const _CameraImpl& camera);
1451         _CameraImpl& operator =(const _CameraImpl& camera);
1452
1453         _CameraDeviceType __deviceType;
1454         _CameraCoordinator* __pCoordinator;
1455         _CameraCapability* __pCameraCapability;
1456
1457         CameraState __state;
1458         _CameraHandle __handle;
1459
1460         std::unique_ptr <_CameraRef> __pCameraRef;
1461         std::unique_ptr <_CameraEvent> __pCameraEvent;
1462         std::unique_ptr <_VideoStreamCoordinator> __pVideoStreamCoordinator;
1463         ICameraEventListener* __pCameraEventListener;
1464         std::unique_ptr <Tizen::Base::Collection::Queue, _ListPtrUtil::Remover> __pCaptureBufferQueue;
1465         std::unique_ptr <Tizen::Base::Collection::Queue, _ListPtrUtil::Remover> __pPreviewBufferQueue;
1466
1467         bool __isConstructed;
1468         bool __isPoweredOn;
1469         CameraSelection __selection;
1470         int __brightness;
1471         int __contrast;
1472         int __exposure;
1473         int __zoomLevel;
1474         int __minZoomLevel;
1475         int __maxZoomLevel;
1476         CameraEffect __effect;
1477         CameraWhiteBalance __wb;
1478         CameraQuality __quality;
1479         CameraIsoLevel __isoLevel;
1480         CameraFlashMode __flashMode;
1481         bool __zeroShutterLag;
1482         CameraMeteringMode __meteringMode;
1483         CameraSceneMode __sceneMode;
1484         bool __focusCallback;
1485         bool __isFocusAreaSet;
1486
1487         Tizen::Graphics::Dimension __previewResolution;
1488         Tizen::Graphics::Dimension __deviceDefaultPreviewResolution;    // device default
1489         Tizen::Graphics::Dimension __captureResolution;
1490         Tizen::Graphics::Dimension __deviceDefaultCaptureResolution;    // device default
1491
1492         Tizen::Graphics::PixelFormat __previewFormat;
1493         Tizen::Graphics::PixelFormat __deviceDefaultPreviewFormat;              // device default
1494         Tizen::Graphics::PixelFormat __captureFormat;
1495         Tizen::Graphics::PixelFormat __deviceDefaultCaptureFormat;              // device default
1496
1497         CameraExifOrientation __exifOrientation;
1498         static const CameraExifOrientation CAMERA_EXIF_ORIENTATION_NONE = (CameraExifOrientation)-1;
1499         double __exifLatitude;
1500         double __exifLongitude;
1501         float   __exifAltitude;
1502
1503         CameraFlipType __flip;
1504         CameraRotation __previewRotation;
1505         int __fps;
1506         CameraFocusMode __focusMode;
1507         CameraFocusMode __currentFocusMode;
1508
1509         int __previewProcessing;
1510         Tizen::Graphics::Rectangle __previewRegionRect;
1511         int __previewRegionHandle;
1512         camera_display_type_e __previewDisplayType;
1513         CameraRotation __displayRotationType;
1514         CameraDirection __physicalDirection;
1515         CameraRotation __physicalRotation;
1516         static const int MAX_FOCUS_POINT = 10;
1517         int __focusPoints[2][MAX_FOCUS_POINT];
1518         int __supportedFocusPointCount;
1519
1520         static const int MAX_CAMERA_PLANE_COUNT = 4;
1521 };
1522
1523 }}// Tizen::Media
1524
1525 #endif