2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
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
9 // http://www.apache.org/licenses/LICENSE-2.0
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.
19 * @file FMedia_CameraImpl.h
20 * @brief This header file contains the declarations of the %_CameraImpl class.
24 #ifndef _FMEDIA_INTERNAL_CAMERA_IMPL_H_
25 #define _FMEDIA_INTERNAL_CAMERA_IMPL_H_
27 #include <unique_ptr.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"
46 namespace Tizen { namespace Media
49 class ICameraEventListener;
52 class _CameraCoordinator;
53 class _CameraCapability;
55 class _VideoStreamCoordinator;
59 * @brief This class implements the APIs of %Camera class.
63 : public Tizen::Base::Object
64 , public _ICameraCoordinatorListener
68 * This is the default constructor for this class.
70 * @remarks After creating an instance of this class, the Construct() method must be called explicitly to
71 * initialize this instance.
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.
82 virtual ~_CameraImpl(void);
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.
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.
97 result Construct(ICameraEventListener& listener, CameraSelection camSel);
100 * Powers the camera on.
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.
112 result PowerOn(void);
115 * Powers the camera off.
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.
126 result PowerOff(void);
129 * Checks whether the camera is powered on.
131 * @return @c true if the camera is powered on, @n
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()
139 bool IsPoweredOn(void) const;
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.
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.
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
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
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>.
169 * @see StopPreview(), ICameraEventListener::OnCameraPreviewed()
171 result StartPreview(const Tizen::Graphics::BufferInfo* pBufferInfo, bool previewedData = false);
174 * Stops displaying the preview image on the camera device.
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()
188 result StopPreview(void);
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().
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()
209 result Capture(void);
212 * Gets the state of the camera in CameraState.
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()
221 CameraState GetState(void) const;
224 * Sets the brightness level of the camera input data.
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()
245 result SetBrightness(int brightness);
248 * Gets the brightness level of the camera input data.
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()
259 int GetBrightness(void) const;
262 * Sets the contrast level of the Camera input data.
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>.
283 result SetContrast(int contrast);
286 * Gets the contrast level of the camera input data.
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.
297 int GetContrast(void) const;
300 * Increases the zoom level of the camera.
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()
323 * Decreases the zoom level of the camera.
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()
343 result ZoomOut(void);
346 * Gets the zoom level of the camera.
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()
357 int GetZoomLevel(void) const;
360 * Gets the maximum zoom level supported by this Camera.
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()
372 int GetMaxZoomLevel(void) const;
375 * Changes the current resolution of the preview.
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()
394 result SetPreviewResolution(const Tizen::Graphics::Dimension& resolution);
397 * Retrieves the current resolution of the preview.
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()
406 Tizen::Graphics::Dimension GetPreviewResolution(void) const;
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.
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()
423 Tizen::Base::Collection::IList* GetSupportedPreviewResolutionListN(void) const;
427 * Sets the capturing resolution of the camera. @n
428 * Initially, the default resolution is set using the internal configuration.
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()
447 result SetCaptureResolution(const Tizen::Graphics::Dimension& resolution);
450 * Gets the resolution for capturing the data of the camera.
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()
459 Tizen::Graphics::Dimension GetCaptureResolution(void) const;
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.
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()
476 Tizen::Base::Collection::IList* GetSupportedCaptureResolutionListN(void) const;
479 * Sets the effect for the input data of the camera.
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>.
499 result SetEffect(CameraEffect effect);
502 * Gets the effect for the input data of the camera.
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.
511 CameraEffect GetEffect(void) const;
514 * Sets the camera's flash mode.
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()
532 result SetFlashMode(CameraFlashMode flashMode);
535 * Gets the flash mode of the camera.
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()
543 CameraFlashMode GetFlashMode(void) const;
546 * Sets the exposure level of the camera.
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>.
567 result SetExposure(int exposure);
570 * Gets the exposure level of the camera.
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.
581 int GetExposure(void) const;
584 * Sets the white balance level of the camera.
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()
605 result SetWhiteBalance(CameraWhiteBalance whiteBalance);
608 * Gets the white balance level of the camera.
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()
617 CameraWhiteBalance GetWhiteBalance(void) const;
620 * Sets the capturing quality of the camera.
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>.
639 result SetQuality(CameraQuality quality);
642 * Gets the capturing quality of the camera.
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.
651 CameraQuality GetQuality(void) const;
654 * Sets the focus mode of the camera.
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()
669 result SetFocusMode(CameraFocusMode focusMode);
672 * Gets the focus mode of the camera.
674 * @return The %Camera focus mode
675 * @see SetFocusMode()
677 CameraFocusMode GetFocusMode(void) const;
680 * Enables or disables the auto focus mode of the camera.
682 * @return An error code
683 * @param[in] callback Set to @c true to enable auto focus callback, @n
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()
699 result SetAutoFocus(bool callback);
702 * Check the object is ready to call the auto focus callback or not.
704 * @return true if it calls the callback, otherwise false.
706 bool ReadyToAutoFocusCallback(void) const;
709 * Sets the auto focus point list.
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()
725 result SetAutoFocusPoint(const Tizen::Base::Collection::IList& pointList);
728 * Gets the auto focus point list. @n
729 * Each item of the list has a pointer of the Tizen::Graphics::Point value.
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()
739 Tizen::Base::Collection::IList* GetAutoFocusPointN(void) const;
742 * Sets the capturing format of the camera. @n
743 * Initially, the default format is set using the internal configuration.
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()
760 result SetCaptureFormat(const Tizen::Graphics::PixelFormat format);
763 * Gets the capturing format of the camera.
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()
772 Tizen::Graphics::PixelFormat GetCaptureFormat(void) const;
775 * Gets the supported capturing format list for the Camera class. @n
776 * Each list item has a Tizen::Graphics::PixelFormat value.
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()
789 Tizen::Base::Collection::IListT<Tizen::Graphics::PixelFormat>* GetSupportedCaptureFormatListN(void) const;
792 * Sets the preview format of the camera. @n
793 * Initially, the default format is set using the internal configuration.
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()
813 result SetPreviewFormat(const Tizen::Graphics::PixelFormat format);
816 * Gets the preview format of the camera.
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()
825 Tizen::Graphics::PixelFormat GetPreviewFormat(void) const;
828 * Gets the supported preview format list for the Camera class. @n
829 * Each list item has a Tizen::Graphics::PixelFormat value.
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()
842 Tizen::Base::Collection::IListT<Tizen::Graphics::PixelFormat>* GetSupportedPreviewFormatListN(void) const;
846 * Sets the ISO level of the camera.
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>.
867 result SetIsoLevel(CameraIsoLevel isoLevel);
870 * Gets the ISO level of the camera.
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.
879 CameraIsoLevel GetIsoLevel(void) const;
882 * Sets the preview frame rate of the camera. @n
883 * Initially, the default frame rate is set using the internal configuration.
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
901 result SetPreviewFrameRate(int fps);
904 * Retrieves the frame rate of the camera.
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()
914 int GetPreviewFrameRate(void) const;
917 * Gets the supported preview frame rate list for the Camera class. @n
918 * Each list item has an integer value.
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
933 Tizen::Base::Collection::IListT<int>* GetSupportedPreviewFrameRateListN(void) const;
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.
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
953 Tizen::Base::Collection::IListT<int>* GetSupportedPreviewFrameRateListN(const Tizen::Graphics::Dimension& dim) const;
956 * Sets the orientation value in the Exchangeable Image File Format (EXIF) field of the captured data.
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.
969 result SetExifOrientation(CameraExifOrientation orientation);
972 * Sets the orientation of the camera.
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.
980 result SetExifOrientationAttr(CameraExifOrientation orientation);
983 * Sets the GPS coordinates in the Exchangeable Image File Format (EXIF) field for the captured data.
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()
1004 result SetExifGpsCoordinates(double latitude, double longitude, float altitude);
1007 * Disables the insertion of the GPS coordinates in the Exchangeable Image File Format (EXIF) field for the captured data.
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()
1017 result DisableExifGpsCoordinates(void);
1020 * Sets the flip type for the previewed and captured data.
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.
1034 result SetFlip(CameraFlipType flip);
1037 * Gets the flip type for the previewed and captured data.
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.
1044 CameraFlipType GetFlip(void) const;
1047 * Sets the rotation for the previewed data.
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()
1067 result SetPreviewRotation(CameraRotation rotation);
1071 * Gets the rotation for the previewed data.
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()
1079 CameraRotation GetPreviewRotation(void) const;
1082 * Sets the metering mode of the camera.
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()
1097 result SetMeteringMode(CameraMeteringMode meteringMode);
1100 * Gets the metering mode of the camera.
1102 * @return The %Camera metering mode
1103 * @see SetMeteringMode()
1105 CameraMeteringMode GetMeteringMode(void) const;
1108 * Sets the scene mode of the camera.
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
1125 result SetSceneMode(CameraSceneMode sceneMode);
1128 * Adds the stream filter to process the video stream data while previewing or recording.
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.
1137 result AddVideoStreamFilter(IVideoStreamFilter& filter);
1140 * Removes the stream filter to stop receiving the video stream data.
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.
1147 result RemoveVideoStreamFilter(IVideoStreamFilter& filter);
1150 * Gets the scene mode of the camera.
1152 * @return The %Camera scene mode
1154 CameraSceneMode GetSceneMode(void) const;
1157 * Gets the camera's state.
1161 camera_state_e GetMmState(void) const;
1166 * @param[in] state _AudioRecorderImpl's state
1168 void SetState(CameraState state);
1171 * Get the camera selection.
1173 * @return The camera selection.
1175 CameraSelection GetSelection(void) const;
1178 * Enqueues the preview or captured data.
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.
1187 result EnqueueData(_CameraBuffer& cameraBuffer);
1190 * Dequeues the preview or captured data.
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.
1199 _CameraBuffer* DequeueDataN(_CameraBufferType bufferType);
1202 * Gets the camera coordinator.
1204 * @return camera coordinator
1206 _CameraCoordinator* GetCoordinator(void);
1209 * Gets the camera's zero shutter lag capability
1211 * @return Zero shutter lag capability
1213 bool IsZeroShutterLag(void) const;
1217 * Gets the camera's recommened preview format
1219 * @return recommened preview format
1221 Tizen::Graphics::PixelFormat GetDeviceRecommendPreviewFormat(void) const;
1224 * Called when the event is received from the %_ICameraCoordinatorListener object.
1226 * @return An error code
1227 * @param[in] message message id
1228 * @param[in] state camera state
1229 * @param[in] pParam0 Extra data0
1231 result OnCamcorderCoordinatorEventReceived(camera_state_e previous, camera_state_e current, bool byPolicy);
1234 * Called when the mode is prepared to change.
1236 * @return An error code
1237 * @param[in] mode camcorder mode
1239 result OnCameraCoordinatorModeChangePrepared(_CameraMode mode);
1242 * Called when the mode is changed.
1244 * @return An error code
1245 * @param[in] mode camcorder mode
1247 result OnCameraCoordinatorModeChanged(_CameraMode mode);
1250 * Called when the other module is removed
1252 * @return An error code
1254 result OnCameraCoordinatorOtherRemoved(void);
1257 * Function definition for start capture.
1259 * @return This function returns 0 on success, else on failure.
1260 * @param[in] mmHandle The camcorder handle
1262 static int StartMmCapture(_CameraHandle mmHandle);
1265 * Function definition for state chnaged callback.
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.
1273 static void StateChangedCb(camera_state_e previous, camera_state_e current, bool byPolicy, void *pUserData);
1276 * Function definition for image capture callback.
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).
1284 static void CaptureCb(camera_image_data_s* pImage, camera_image_data_s *pPostview, camera_image_data_s* pThumbnail, void* pUserData);
1287 * Function definition for capture completion callback.
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).
1292 static void CaptureCompletedCb(void *pUserData);
1295 * Function definition for preview stream callback.
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).
1301 static void PreviewCb(camera_preview_data_s *pFrame, void *pUSerData);
1304 * Function definition for interrupted callback.
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.
1312 static void InterruptedCb(camera_policy_e policy, camera_state_e previous, camera_state_e current, void *pUserData);
1316 * Function definition for error callback.
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.
1323 static void ErrorCb(camera_error_e error, camera_state_e current, void *pUserData);
1326 * Function definition for focus changed callback.
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.
1332 static void FocusStateChangedCb(camera_focus_state_e state, void *pUserData);
1335 * Gets the Impl instance.
1337 * @return The pointer to %_CameraImpl
1338 * @param[in] pCamera The %Camera pointer
1340 static _CameraImpl* GetInstance(Camera *pCamera);
1343 * Gets the Impl instance.
1345 * @return The pointer to %_CameraImpl
1346 * @param[in] pCamera The %Camera pointer
1348 static const _CameraImpl* GetInstance(const Camera *pCamera);
1352 * Converts the error from camera.
1354 * @return An error code
1355 * @param[in] err camera error
1357 result ConvertResult(int err) const;
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
1368 result SetProperty(_CameraOperationType operation, int min, int max, int value);
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
1378 result GetProperty(_CameraOperationType operation, int& mmMin, int& mmMax) const;
1381 * Get the property list.
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.
1388 Tizen::Base::Collection::IList* GetPropertyListN(_CameraOperationType operation, _ResultType itemQueryType) const;
1391 * Get the property list.
1393 * @return The property list
1394 * @param[in] key key name
1396 Tizen::Base::Collection::IList* GetPropertyListN(const Tizen::Base::String& key) const;
1399 * Re-load configuration.
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.
1407 result ReloadConfiguration(int reload);
1410 * Load default configuration.
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.
1417 result LoadDefaultConfiguration(int reload);
1420 * Change the focus state.
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.
1427 result ChangeFocusModeTo(CameraFocusMode focusMode);
1430 * Handle the auto focus operations.
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.
1437 result HandleAutoFocus(CameraFocusMode currentMode);
1440 * Sets the scene mode off.
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.
1448 result SetSceneModeOff(int reload);
1450 _CameraImpl(const _CameraImpl& camera);
1451 _CameraImpl& operator =(const _CameraImpl& camera);
1453 _CameraDeviceType __deviceType;
1454 _CameraCoordinator* __pCoordinator;
1455 _CameraCapability* __pCameraCapability;
1457 CameraState __state;
1458 _CameraHandle __handle;
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;
1467 bool __isConstructed;
1469 CameraSelection __selection;
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;
1487 Tizen::Graphics::Dimension __previewResolution;
1488 Tizen::Graphics::Dimension __deviceDefaultPreviewResolution; // device default
1489 Tizen::Graphics::Dimension __captureResolution;
1490 Tizen::Graphics::Dimension __deviceDefaultCaptureResolution; // device default
1492 Tizen::Graphics::PixelFormat __previewFormat;
1493 Tizen::Graphics::PixelFormat __deviceDefaultPreviewFormat; // device default
1494 Tizen::Graphics::PixelFormat __captureFormat;
1495 Tizen::Graphics::PixelFormat __deviceDefaultCaptureFormat; // device default
1497 CameraExifOrientation __exifOrientation;
1498 static const CameraExifOrientation CAMERA_EXIF_ORIENTATION_NONE = (CameraExifOrientation)-1;
1499 double __exifLatitude;
1500 double __exifLongitude;
1501 float __exifAltitude;
1503 CameraFlipType __flip;
1504 CameraRotation __previewRotation;
1506 CameraFocusMode __focusMode;
1507 CameraFocusMode __currentFocusMode;
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;
1520 static const int MAX_CAMERA_PLANE_COUNT = 4;