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.cpp
20 * @brief This file contains the implementation of the %_CameraImpl class.
24 #include <unique_ptr.h>
26 #include <FBaseInteger.h>
27 #include <FBaseSysLog.h>
28 #include <FBaseColArrayList.h>
29 #include <FGrpDimension.h>
30 #include <FGrpPoint.h>
31 #include <FGrp_BufferInfoImpl.h>
32 #include <FMediaTypes.h>
33 #include <FMediaImageTypes.h>
34 #include <FMediaCamera.h>
35 #include <FMediaICameraEventListener.h>
36 #include <FMediaCapabilityTypes.h>
37 #include "FMedia_CameraImpl.h"
38 #include "FMedia_CameraEvent.h"
39 #include "FMedia_CameraUtil.h"
40 #include "FMedia_CameraCapability.h"
41 #include "FMedia_CameraCoordinator.h"
42 #include "FMedia_CapabilityImpl.h"
43 #include "FMedia_CamPtrUtil.h"
45 #define _CAMERA_EVAS_PIXMAP_ 1
47 using namespace Tizen::Base;
48 using namespace Tizen::Base::Collection;
49 using namespace Tizen::Graphics;
51 namespace Tizen { namespace Media
53 static const int _RELOAD_BRIGHTNESS = 0x1;
54 static const int _RELOAD_CONTRAST = 0x1 << 1;
55 static const int _RELOAD_EXPOSURE = 0x1 << 2;
56 static const int _RELOAD_MAX_ZOOM_LEVEL = 0x1 << 3;
57 static const int _RELOAD_ZOOM_LEVEL = 0x1 << 4;
58 static const int _RELOAD_PREVIEW_RESOLUTION = 0x1 << 5;
59 static const int _RELOAD_CAPTURE_RESOLUTION = 0x1 << 6;
60 static const int _RELOAD_PREVIEW_FORMAT = 0x1 << 7;
61 static const int _RELOAD_CAPTURE_FORMAT = 0x1 << 8;
62 static const int _RELOAD_EFFECT = 0x1 << 9;
63 static const int _RELOAD_WB = 0x1 << 10;
64 static const int _RELOAD_QUALITY = 0x1 << 11;
65 static const int _RELOAD_ISO = 0x1 << 12;
66 static const int _RELOAD_FLASH = 0x1 << 13;
67 static const int _RELOAD_EXIF_ORIENTATION = 0x1 << 14;
68 static const int _RELOAD_EXIF_GPS_COORDINATES = 0x1 << 15;
69 static const int _RELOAD_FLIP = 0x1 << 16;
70 static const int _RELOAD_PREVIEW_ROTATION = 0x1 << 17;
71 static const int _RELOAD_FPS = 0x1 << 18;
72 static const int _RELOAD_PREVIEW_PREPARE = 0x1 << 19;
73 static const int _RELOAD_INTERNAL_PREVIEW_FORMAT = 0x1 << 20;
74 static const int _RELOAD_FOCUS_MODE = 0x1 << 21;
75 static const int _RELOAD_ZERO_SHUTTER_LAG = 0x1 << 22;
76 static const int _RELOAD_METERING_MODE = 0x1 << 23;
77 static const int _RELOAD_EXTRA = 0x1 << 24;
79 static const int _PREVIEW_PRE_PROCESSING = 0x01;
80 static const int _PREVIEW_POST_PROCESSING = 0x01 << 1;
82 static const double _CAMERA_EXIF_GPS_INVALID_LATITUDE = 90.1;
83 static const double _CAMERA_EXIF_GPS_INVALID_LONGITUDE = 180.1;
85 static const int _MAX_CAPTURE_BUFFER_COUNT = 10;
86 static const int _MAX_PREVIEW_BUFFER_COUNT = 2;
87 static const int _MIN_PROPERTY = 0;
88 static const int _MAX_PROPERTY = 9;
89 static const int _INVALID_FOCUS_COORDINATE = -1;
91 bool _CameraImpl::__isUsed = false;
93 enum _FocusModeOperation
96 _FOCUS_MODE_OP_CONTINUOUS,
97 _FOCUS_MODE_OP_CANCEL,
102 CameraFocusMode currentMode;
103 _FocusModeOperation focusOperation0;
104 CameraFocusMode destMode;
105 _FocusModeOperation focusOperation1;
106 } _CameraFocusModeTransitTable;
108 static const _CameraFocusModeTransitTable _CAMERA_FOCUS_MODE_TRANSIT[] =
110 {CAMERA_FOCUS_MODE_NONE, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_NONE, _FOCUS_MODE_OP_NONE},
111 {CAMERA_FOCUS_MODE_NONE, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_NORMAL, _FOCUS_MODE_OP_NONE},
112 {CAMERA_FOCUS_MODE_NONE, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_MACRO, _FOCUS_MODE_OP_NONE},
113 {CAMERA_FOCUS_MODE_NONE, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_CONTINUOUS_AUTO, _FOCUS_MODE_OP_CONTINUOUS},
114 {CAMERA_FOCUS_MODE_NONE, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_INFINITE, _FOCUS_MODE_OP_NONE},
116 {CAMERA_FOCUS_MODE_NORMAL, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_NONE, _FOCUS_MODE_OP_NONE},
117 {CAMERA_FOCUS_MODE_NORMAL, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_NORMAL, _FOCUS_MODE_OP_NONE},
118 {CAMERA_FOCUS_MODE_NORMAL, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_MACRO, _FOCUS_MODE_OP_NONE},
119 {CAMERA_FOCUS_MODE_NORMAL, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_CONTINUOUS_AUTO, _FOCUS_MODE_OP_CONTINUOUS},
120 {CAMERA_FOCUS_MODE_NORMAL, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_INFINITE, _FOCUS_MODE_OP_NONE},
122 {CAMERA_FOCUS_MODE_MACRO, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_NONE, _FOCUS_MODE_OP_NONE},
123 {CAMERA_FOCUS_MODE_MACRO, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_NORMAL, _FOCUS_MODE_OP_NONE},
124 {CAMERA_FOCUS_MODE_MACRO, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_MACRO, _FOCUS_MODE_OP_NONE},
125 {CAMERA_FOCUS_MODE_MACRO, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_CONTINUOUS_AUTO, _FOCUS_MODE_OP_CONTINUOUS},
126 {CAMERA_FOCUS_MODE_MACRO, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_INFINITE, _FOCUS_MODE_OP_NONE},
128 {CAMERA_FOCUS_MODE_CONTINUOUS_AUTO, _FOCUS_MODE_OP_CANCEL, CAMERA_FOCUS_MODE_NONE, _FOCUS_MODE_OP_NONE},
129 {CAMERA_FOCUS_MODE_CONTINUOUS_AUTO, _FOCUS_MODE_OP_CANCEL, CAMERA_FOCUS_MODE_NORMAL, _FOCUS_MODE_OP_NONE},
130 {CAMERA_FOCUS_MODE_CONTINUOUS_AUTO, _FOCUS_MODE_OP_CANCEL, CAMERA_FOCUS_MODE_MACRO, _FOCUS_MODE_OP_NONE},
131 {CAMERA_FOCUS_MODE_CONTINUOUS_AUTO, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_CONTINUOUS_AUTO, _FOCUS_MODE_OP_NONE},
132 {CAMERA_FOCUS_MODE_CONTINUOUS_AUTO, _FOCUS_MODE_OP_CANCEL, CAMERA_FOCUS_MODE_INFINITE, _FOCUS_MODE_OP_NONE},
134 {CAMERA_FOCUS_MODE_INFINITE, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_NONE, _FOCUS_MODE_OP_NONE},
135 {CAMERA_FOCUS_MODE_INFINITE, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_NORMAL, _FOCUS_MODE_OP_NONE},
136 {CAMERA_FOCUS_MODE_INFINITE, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_MACRO, _FOCUS_MODE_OP_NONE},
137 {CAMERA_FOCUS_MODE_INFINITE, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_CONTINUOUS_AUTO, _FOCUS_MODE_OP_CONTINUOUS},
138 {CAMERA_FOCUS_MODE_INFINITE, _FOCUS_MODE_OP_NONE, CAMERA_FOCUS_MODE_INFINITE, _FOCUS_MODE_OP_NONE},
149 CameraFocusMode currentMode;
150 _FocusOperation focusOperation;
152 } _CameraFocusOperationTable;
154 static const _CameraFocusOperationTable _CAMERA_FOCUS_OPERATIONT[] =
156 // {CAMERA_FOCUS_MODE_NONE, _FOCUS_OP_NONE, (CameraState)-1,},
157 {CAMERA_FOCUS_MODE_NORMAL, _FOCUS_OP_ONCE, CAMERA_STATE_AUTO_FOCUSING,},
158 {CAMERA_FOCUS_MODE_MACRO, _FOCUS_OP_ONCE, CAMERA_STATE_AUTO_FOCUSING,},
159 {CAMERA_FOCUS_MODE_CONTINUOUS_AUTO,_FOCUS_OP_NONE, (CameraState)-1,}, //no state change in the continuous mode
160 // {CAMERA_FOCUS_MODE_INFINITE, _FOCUS_OP_NONE, (CameraState)-1,},
163 _CameraImpl::_CameraImpl(void)
164 : __deviceType(_CAMERA_DEVICE_NONE)
165 , __pCoordinator(null)
166 , __pCameraCapability(null)
167 , __state(CAMERA_STATE_INITIALIZED)
168 , __handle(MM_INVALID_HANDLE)
169 , __pCameraEvent(null)
170 , __pCameraEventListener(null)
171 , __pCaptureBufferQueue(null)
172 , __pPreviewBufferQueue(null)
173 , __isConstructed(false)
174 , __isPoweredOn(false)
175 , __selection(CAMERA_PRIMARY)
176 , __brightness(DEFAULT_CAMERA_BRIGHTNESS)
177 , __contrast(DEFAULT_CAMERA_CONTRAST)
178 , __exposure(DEFAULT_CAMERA_EXPOSURE)
182 , __effect(CAMERA_EFFECT_NONE)
183 , __wb(CAMERA_WHITE_BALANCE_AUTO )
184 , __quality(CAMERA_QUALITY_NORMAL)
185 , __isoLevel(CAMERA_ISO_DEFAULT)
186 , __flashMode(CAMERA_FLASH_MODE_OFF)
187 , __zeroShutterLag(false)
188 , __meteringMode(CAMERA_METERING_MODE_NONE)
189 , __focusCallback(false)
190 , __isFocusAreaSet(false)
191 , __exifOrientation(CAMERA_EXIF_ORIENTATION_NONE)
192 , __exifLatitude(_CAMERA_EXIF_GPS_INVALID_LATITUDE)
193 , __exifLongitude(_CAMERA_EXIF_GPS_INVALID_LONGITUDE)
195 , __flip(CAMERA_FLIP_NONE)
196 , __previewRotation(CAMERA_ROTATION_NONE)
197 #if defined(_OSP_EMUL_)
200 , __fps(DEFAULT_CAMERA_PREVIEW_FPS)
202 , __focusMode(CAMERA_FOCUS_MODE_NONE)
203 , __previewProcessing(0)
204 , __previewRegionHandle(_BufferInfoImpl::INVALID_BUFFER_HANDLE)
205 , __previewDisplayType(::CAMERA_DISPLAY_TYPE_NONE)
206 , __displayRotationType(CAMERA_ROTATION_NONE)
207 , __physicalDirection(CAMERA_DIRECTION_BACK)
208 , __physicalRotation(CAMERA_ROTATION_NONE)
209 , __supportedFocusPointCount(0)
210 , __pPreProcessCbFunc(null)
211 , __pPreProcessUserData(null)
213 __previewResolution.width = 0;
214 __previewResolution.height = 0;
215 __deviceDefaultPreviewResolution.width = 0;
216 __deviceDefaultPreviewResolution.height = 0;
218 __captureResolution.width = 0;
219 __captureResolution.height = 0;
220 __deviceDefaultCaptureResolution.width = 0;
221 __deviceDefaultCaptureResolution.height = 0;
223 __previewFormat = PIXEL_FORMAT_YCbCr420_PLANAR;
224 __deviceDefaultPreviewFormat = PIXEL_FORMAT_YCbCr420_PLANAR;
226 __captureFormat = PIXEL_FORMAT_JPEG;
227 __deviceDefaultCaptureFormat = PIXEL_FORMAT_JPEG;
229 for(int i = 0; i < MAX_FOCUS_POINT; i++)
231 __focusPoints[0][i] = _INVALID_FOCUS_COORDINATE;
232 __focusPoints[1][i] = _INVALID_FOCUS_COORDINATE;
236 _CameraImpl::~_CameraImpl(void)
238 if (__handle != MM_INVALID_HANDLE)
240 int err = MM_SUCCESS;
241 err = camera_unset_state_changed_cb(__handle);
242 err = camera_unset_interrupted_cb(__handle);
243 err = camera_unset_focus_changed_cb(__handle);
244 err = camera_unset_preview_cb(__handle);
245 __handle = MM_INVALID_HANDLE;
247 if (__pCoordinator != null)
249 __pCoordinator->RemoveCameraCoordinatorListener(*this);
256 _CameraCoordinator::Release(__deviceType);
259 if (__pCameraCapability != null)
261 _CameraCapability::Release(__deviceType);
264 if (__pCameraEvent != null)
266 delete __pCameraEvent;
269 if (__pCaptureBufferQueue != null)
271 __pCaptureBufferQueue->RemoveAll(true);
272 delete __pCaptureBufferQueue;
275 if (__pPreviewBufferQueue != null)
277 __pPreviewBufferQueue->RemoveAll(true);
278 delete __pPreviewBufferQueue;
281 if ( __isConstructed )
286 SysLog(NID_MEDIA, "Destroyed");
290 _CameraImpl::Construct(ICameraEventListener& listener, CameraSelection camSel)
292 result r = E_SUCCESS;
293 int err = MM_SUCCESS;
294 SysLog(NID_MEDIA, "Enter. camSel:%d", camSel);
296 SysTryReturn(NID_MEDIA, !__isUsed, E_DEVICE_BUSY, E_DEVICE_BUSY, "[E_DEVICE_BUSY] A camera device is already used.");
297 SysTryReturn(NID_MEDIA, !__isConstructed, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] _CameraImpl is in an invalid state. A camera device is already constructed.");
298 SysTryReturn(NID_MEDIA, camSel >= CAMERA_PRIMARY && camSel <= CAMERA_SECONDARY, E_DEVICE_UNAVAILABLE, E_DEVICE_UNAVAILABLE, "[E_DEVICE_UNAVAILABLE] The camsel(%d) is invalid.", camSel);
300 // _CapablityImpl object should be created before the camera_create() is called to get the recorder capability without problem. camera c-api.
301 // _CapabilityImpl is not deleted until the application exits.
303 _CapabilityImpl* pCapabilityImpl = _CapabilityImpl::GetInstance();
304 SysTryReturn(NID_MEDIA, pCapabilityImpl != null, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Capability is not obtained.");
306 r = pCapabilityImpl->GetValue(L"Camera.Count", cameraCount);
307 SysTryReturn(NID_MEDIA, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Number of Camera was not obtained.");
308 SysTryReturn(NID_MEDIA, camSel < cameraCount, E_DEVICE_UNAVAILABLE, E_DEVICE_UNAVAILABLE, "[E_DEVICE_UNAVAILABLE] The camSel(%d) is not available.", camSel);
309 __selection = camSel;
311 // Get the _CameraCapability.
312 // This is just for the performance enhancement by incrementing ref counts of _CameraCapability.
313 // It forbiddens creating and deleting the _CameraCapability object repeatedly.
314 __deviceType = (camSel == CAMERA_PRIMARY ? _CAMERA_DEVICE_PRIMARY : _CAMERA_DEVICE_SECONDARY);
315 __pCameraCapability = _CameraCapability::AddInstance(__deviceType);
316 SysTryReturn(NID_MEDIA, __pCameraCapability != null, E_OBJ_NOT_FOUND, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] Capability instance is not available.");
321 r = pCapabilityImpl->GetValue(camSel == CAMERA_PRIMARY ? String(L"Camera.Primary.Direction") : String(L"Camera.Secondary.Direction"), direction);
322 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
324 r = pCapabilityImpl->GetValue(camSel == CAMERA_PRIMARY ? String(L"Camera.Primary.Rotation") : String(L"Camera.Secondary.Rotation"), rotation);
325 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
327 __physicalDirection = static_cast<CameraDirection>(direction);
328 __physicalRotation = static_cast<CameraRotation>(rotation);
330 r = pCapabilityImpl->GetValue(camSel == CAMERA_PRIMARY ? String(L"Camera.Primary.FocusPoint") : String(L"Camera.Secondary.FocusPoint"), focusPoint);
331 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
332 __supportedFocusPointCount = focusPoint;
335 __pCameraEvent = new (std::nothrow) _CameraEvent();
336 SysTryReturn(NID_MEDIA, __pCameraEvent != null, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed. The object is not created.");
338 r = __pCameraEvent->Construct(*this);
339 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
341 r = __pCameraEvent->AddListener(listener);
342 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
343 __pCameraEventListener = &listener;
345 // Prepare captured buffer list
346 __pCaptureBufferQueue = new (std::nothrow) Tizen::Base::Collection::Queue();
347 SysTryCatch(NID_MEDIA, __pCaptureBufferQueue != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed. The object is not created.");
349 r = __pCaptureBufferQueue->Construct(_MAX_CAPTURE_BUFFER_COUNT); // For async panorama shot.
350 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
352 // Prepare preview buffer list
353 __pPreviewBufferQueue = new (std::nothrow) Tizen::Base::Collection::Queue();
354 SysTryCatch(NID_MEDIA, __pPreviewBufferQueue != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed. The object is not created.");
356 r = __pPreviewBufferQueue->Construct(_MAX_PREVIEW_BUFFER_COUNT); // For async preview data.
357 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
359 // Get the _CameraCoordinator
360 __pCoordinator = _CameraCoordinator::AddInstance(__deviceType);
362 SysTryCatch(NID_MEDIA, __pCoordinator != null, , r, "[E_OBJ_NOT_FOUND] _CameraCoordinator instance is not available.");
364 // Add this to _CameraCoordinator
365 r = __pCoordinator->AddCameraCoordinatorListener(*this);
366 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
368 __handle = __pCoordinator->GetCameraHandle();
370 err = camera_set_state_changed_cb(__handle, StateChangedCb, this);
371 r = ConvertResult(err);
372 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
374 err = camera_set_interrupted_cb(__handle, InterruptedCb, this);
375 r = ConvertResult(err);
376 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
378 err = camera_set_focus_changed_cb(__handle, FocusStateChangedCb, this);
379 r = ConvertResult(err);
380 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Failed to set the focus changed callback.", GetErrorMessage(r));
382 // Get the default properties
383 r = LoadDefaultConfiguration(_RELOAD_PREVIEW_RESOLUTION | _RELOAD_CAPTURE_RESOLUTION | _RELOAD_PREVIEW_FORMAT | _RELOAD_CAPTURE_FORMAT
384 | _RELOAD_FOCUS_MODE |_RELOAD_ZERO_SHUTTER_LAG | _RELOAD_METERING_MODE);
385 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
387 SetState(CAMERA_STATE_INITIALIZED);
388 __isConstructed = true;
395 err = camera_unset_state_changed_cb(__handle);
396 err = camera_unset_interrupted_cb(__handle);
397 err = camera_unset_focus_changed_cb(__handle);
400 if (__pCoordinator != null)
402 __pCoordinator->RemoveCameraCoordinatorListener(*this);
405 if (__pCameraEventListener != null)
407 __pCameraEvent->RemoveListener(*__pCameraEventListener);
408 __pCameraEventListener = null;
411 if (__pCameraEvent != null)
413 delete __pCameraEvent;
414 __pCameraEvent = null;
417 if (__pCaptureBufferQueue != null)
419 __pCaptureBufferQueue->RemoveAll(true);
420 delete __pCaptureBufferQueue;
421 __pCaptureBufferQueue = null;
428 _CameraImpl::PowerOn(void)
430 result r = E_SUCCESS;
431 CameraState state = CAMERA_STATE_ERROR;
432 int err = MM_SUCCESS;
433 SysLog(NID_MEDIA, "Camera powerON");
435 SysTryReturn(NID_MEDIA, __isPoweredOn == false, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. Camera was already powered on.");
438 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state(%d), Camera is not in initialized state.", state);
440 __isPoweredOn = true;
442 err = camera_set_display(__handle, ::CAMERA_DISPLAY_TYPE_NONE, null);
443 r = ConvertResult(err);
444 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Temporarily forbidden the preview callback.", GetErrorMessage(r));
446 // re-configuration for new camera handle. active conf.
447 r = ReloadConfiguration(_RELOAD_BRIGHTNESS | _RELOAD_CONTRAST | _RELOAD_EXPOSURE | _RELOAD_MAX_ZOOM_LEVEL
448 | _RELOAD_PREVIEW_RESOLUTION | _RELOAD_CAPTURE_RESOLUTION | _RELOAD_PREVIEW_FORMAT
449 | _RELOAD_CAPTURE_FORMAT | _RELOAD_FPS | _RELOAD_EFFECT | _RELOAD_WB | _RELOAD_QUALITY | _RELOAD_ISO
450 | _RELOAD_EXIF_ORIENTATION | _RELOAD_EXIF_GPS_COORDINATES
451 | _RELOAD_FLIP | _RELOAD_PREVIEW_ROTATION | _RELOAD_FLASH
453 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera reload configuration failed", GetErrorMessage(r));
457 __isPoweredOn = false;
462 _CameraImpl::PowerOff(void)
464 result r = E_SUCCESS;
465 camera_state_e mmState = ::CAMERA_STATE_NONE;
466 SysLog(NID_MEDIA, "Camera powerOFF");
468 SysTryReturn(NID_MEDIA, __isPoweredOn == true, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. Camera was not powered on.");
470 mmState = GetMmState();
473 case ::CAMERA_STATE_PREVIEW:
474 r = __pCoordinator->StopMmPreview();
475 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
478 case ::CAMERA_STATE_CAPTURING:
479 // Camera's destroy while capturing should be done by waiting until the state is changed to CAPTURED..
481 const int timeoutCount = 100;
482 const long sleepTime = 50;
484 while (GetMmState() == ::CAMERA_STATE_CAPTURING && ( i++ < timeoutCount) )
486 r = Tizen::Base::Runtime::Thread::Sleep(sleepTime);
487 SysTryCatch(NID_MEDIA, r == E_SUCCESS, r = E_DEVICE_FAILED, E_DEVICE_FAILED, "[E_DEVICE_FAILED] Sleep failed while waiting the state changing to CAPTURED.");
488 SysLog(NID_MEDIA, "Sleep try %dst", i);
490 SysTryCatch(NID_MEDIA, i < timeoutCount, r = E_DEVICE_BUSY, E_DEVICE_BUSY, "[E_DEVICE_BUSY] Sleep failed while waiting the state changing to CAPTURED.");
491 SysLog(NID_MEDIA, "PowerOff succeeded from capturing state in %d msec.", (int)sleepTime*i);
493 mmState = GetMmState();
494 // The captured buffer inserted via CaptureCb should be deleted.
495 ByteBuffer* pBuffer = null;
496 while ((pBuffer = DequeueDataN(_CAMERA_BUFFER_CAPTURE)) != null)
502 //The state is changed synchronously
503 SetState(CAMERA_STATE_CAPTURED);
505 r = __pCoordinator->StartMmPreview();
506 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
508 r = __pCoordinator->StopMmPreview();
509 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
512 case ::CAMERA_STATE_CAPTURED:
513 r = __pCoordinator->StartMmPreview();
514 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
516 r = __pCoordinator->StopMmPreview();
517 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
520 case ::CAMERA_STATE_CREATED:
522 case ::CAMERA_STATE_NONE:
526 SysLogException(NID_MEDIA, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. mmState:%d", mmState);
531 __isPoweredOn = false;
533 SetState(CAMERA_STATE_INITIALIZED);
541 _CameraImpl::IsPoweredOn(void) const
543 return __isPoweredOn;
547 _CameraImpl::StartPreview(const Tizen::Graphics::BufferInfo* pBufferInfo, bool previewedData)
549 result r = E_SUCCESS;
550 int err = MM_SUCCESS;
551 camera_state_e mmState = ::CAMERA_STATE_NONE;
552 CameraState state = CAMERA_STATE_ERROR;
553 Rectangle tempDisplayRect;
554 int tempDisplayHandle = _BufferInfoImpl::INVALID_BUFFER_HANDLE;
555 CameraRotation tempDisplayRotationType = CAMERA_ROTATION_NONE;
556 camera_display_type_e tempDisplayType = ::CAMERA_DISPLAY_TYPE_NONE;
558 SysLog(NID_MEDIA, "Camera StartPreview. pBufferInfo:%d, previewedData:%d", (int) pBufferInfo, previewedData);
559 SysTryReturn(NID_MEDIA, __isPoweredOn == true, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. Camera was not powered on");
562 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_CAPTURED
563 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. Camera state[%d] is not ready to start preview.", state);
565 // Set preview callback
566 if (previewedData || (__previewProcessing & _PREVIEW_PRE_PROCESSING))
568 err = camera_set_preview_cb(__handle, PreviewCb, this);
572 err = camera_unset_preview_cb(__handle);
574 r = ConvertResult(err);
575 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
577 mmState = GetMmState();
579 if ( pBufferInfo != null )
581 const _BufferInfoImpl* pBufferInfoImpl = null;
582 int displayHandle = _BufferInfoImpl::INVALID_BUFFER_HANDLE;
584 camera_display_type_e displayType = CAMERA_DISPLAY_TYPE_NONE;
586 pBufferInfoImpl = _BufferInfoImpl::GetInstance(*pBufferInfo);
587 SysTryCatch(NID_MEDIA, pBufferInfoImpl != null, r = E_SYSTEM, r, "[E_SYSTEM] A system error has been occurred. BufferInfo is not found.");
588 if (pBufferInfoImpl->GetHandle(_BufferInfoImpl::HANDLE_TYPE_OVERLAY_REGION))
590 displayHandle = pBufferInfoImpl->GetHandle(_BufferInfoImpl::HANDLE_TYPE_OVERLAY_REGION);
591 displayType = ::CAMERA_DISPLAY_TYPE_X11;
593 else if (pBufferInfoImpl->GetHandle(_BufferInfoImpl::HANDLE_TYPE_CANVAS_TEXTURE))
595 displayHandle = pBufferInfoImpl->GetHandle(_BufferInfoImpl::HANDLE_TYPE_CANVAS_TEXTURE);
596 displayType = ::CAMERA_DISPLAY_TYPE_X11;
598 else if (pBufferInfoImpl->GetHandle(_BufferInfoImpl::HANDLE_TYPE_VE_SURFACE))
600 displayHandle = pBufferInfoImpl->GetHandle(_BufferInfoImpl::HANDLE_TYPE_VE_SURFACE);
601 displayType = ::CAMERA_DISPLAY_TYPE_EVAS;
603 SysTryCatch(NID_MEDIA, displayHandle != _BufferInfoImpl::INVALID_BUFFER_HANDLE, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. displayHandle:%d is wrong", displayHandle);
605 if ((displayHandle != __previewRegionHandle) || (state != CAMERA_STATE_CAPTURED))
607 rect = pBufferInfoImpl->GetBounds();
609 err = camera_set_display(__handle, displayType, (camera_display_h)displayHandle);
610 r = ConvertResult(err);
611 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Camera set display failed. displayHandle:%d, previewedData:%d", GetErrorMessage(r), displayHandle, previewedData);
613 if ( displayType == ::CAMERA_DISPLAY_TYPE_X11 )
615 err = camera_set_x11_display_mode(__handle, ::CAMERA_DISPLAY_MODE_FULL);
616 r = ConvertResult(err);
617 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Camera set display mode failed. displayHandle:%d, previewedData:%d", GetErrorMessage(r), displayHandle, previewedData);
619 err = camera_set_x11_display_visible(__handle, true);
620 r = ConvertResult(err);
621 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Camera enabling display visible failed. displayHandle:%d, previewedData:%d", GetErrorMessage(r), displayHandle, previewedData);
623 #if defined (_CAMERA_EVAS_PIXMAP_)
624 SysLog(NID_MEDIA, "Evas pixamp buffer is used. It doesn't rotate the display.");
626 err = camera_set_x11_display_rotation(__handle, ::CAMERA_ROTATION_NONE); // No rotation.
627 r = ConvertResult(err);
628 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Camera rotate display 0 failed. displayHandle:%d, previewedData:%d", GetErrorMessage(r), displayHandle, previewedData);
629 tempDisplayRotationType = CAMERA_ROTATION_NONE;
631 //Only for h/w back buffer. Currently not used.
632 CameraRotation displayRotation = CAMERA_ROTATION_NONE;
633 _BufferInfoImpl::Rotation bufferInfoRotation = pBufferInfoImpl->GetRotation();
634 SysLog(NID_MEDIA, "X11. BufferInfo's rotation is %d", bufferInfoRotation);
636 _BufferInfoImpl::Orientation orientation = pBufferInfoImpl->GetOrientation();
637 SysLog(NID_MEDIA, "X11. Orientation is %d", orientation);
639 // Rotate the display corresponding the LCD orientationation.
640 // This makes the unity of preview shape and the preview callback. This is osp camera concept.
641 if ( bufferInfoRotation == _BufferInfoImpl::ROTATION_0 ) // If the OverlayRegion type is NORMAL
643 r = _CameraUtil::GetDisplayRotation(__physicalDirection, orientation, displayRotation);
644 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Camera display rotation failed in normal mode. physicalDirection:%d, orientationation:%d"
645 , GetErrorMessage(r), __physicalDirection, orientation);
647 else // If the OverlayRegion type is AUTO
649 r = _CameraUtil::GetDisplayRotation(__physicalDirection, __physicalRotation, orientation, displayRotation);
650 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Camera display rotation failed in automatic mode. physicalDirection:%d, physicalRotation:%d, orientationation:%d"
651 , GetErrorMessage(r), __physicalDirection, __physicalRotation, orientation);
654 camera_rotation_e mmRotation = ::CAMERA_ROTATION_NONE;
655 r = _CameraUtil::GetMmRotation( displayRotation, mmRotation);
656 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
658 SysLog(NID_MEDIA, "X11. Try rotation Rotation MM value : %d", mmRotation);
659 err = camera_set_x11_display_rotation(__handle, mmRotation); // Auto adjust rotation - Primary Camera 270, Secondary Camera 90
660 r = ConvertResult(err);
661 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera rotate display failed. displayHandle:%d, previewedData:%d", GetErrorMessage(r), displayHandle, previewedData);
663 tempDisplayRotationType = displayRotation;
666 tempDisplayRect = rect;
667 tempDisplayHandle = displayHandle;
668 tempDisplayType = displayType;
670 __previewRegionRect = tempDisplayRect; //currently not used.
671 __previewRegionHandle = tempDisplayHandle;
672 __previewDisplayType = tempDisplayType;
673 __displayRotationType = tempDisplayRotationType;
678 err = camera_set_display(__handle, ::CAMERA_DISPLAY_TYPE_NONE, null);
679 r = ConvertResult(err);
680 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera set display(null) failed. previewedData:%d", GetErrorMessage(r), previewedData);
681 __previewRegionHandle = _BufferInfoImpl::INVALID_BUFFER_HANDLE;
686 case ::CAMERA_STATE_CREATED:
687 case ::CAMERA_STATE_CAPTURED:
688 r = __pCoordinator->StartMmPreview();
689 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera start.", GetErrorMessage(r));
693 SysTryCatch(NID_MEDIA, false, r = E_INVALID_STATE , E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. The mmState is %d:", mmState);
699 __previewProcessing = __previewProcessing | _PREVIEW_POST_PROCESSING;
703 __previewProcessing = __previewProcessing & (~_PREVIEW_POST_PROCESSING);
707 SetState(CAMERA_STATE_PREVIEW);
711 err = camera_unset_preview_cb(__handle);
712 __previewRegionHandle = _BufferInfoImpl::INVALID_BUFFER_HANDLE;
713 __previewDisplayType = ::CAMERA_DISPLAY_TYPE_NONE;
714 __displayRotationType = CAMERA_ROTATION_NONE;
719 _CameraImpl::StopPreview(void)
721 result r = E_SUCCESS;
722 CameraState state = CAMERA_STATE_ERROR;
723 SysLog(NID_MEDIA, "Camera stop preview");
724 SysTryReturn(NID_MEDIA, __isPoweredOn == true, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. Camera was not powered on.");
727 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_PREVIEW, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state(%d). Camera is not in preview state.", state);
729 r = __pCoordinator->StopMmPreview();
730 SysTryReturn(NID_MEDIA, r == E_SUCCESS, r, r, "[%s] camera stop preview.");
732 if(__previewDisplayType == CAMERA_DISPLAY_TYPE_EVAS)
734 if(__previewRegionHandle != _BufferInfoImpl::INVALID_BUFFER_HANDLE)
736 evas_object_image_data_set((Evas_Object*)__previewRegionHandle, null);
740 SetState(CAMERA_STATE_INITIALIZED);
745 _CameraImpl::Capture(void)
747 result r = E_SUCCESS;
748 CameraState state = CAMERA_STATE_ERROR;
749 SysLog(NID_MEDIA, "Camera Capture");
750 SysTryReturn(NID_MEDIA, __isPoweredOn == true, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. Camera was not powered on.");
753 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_PREVIEW, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state(%d). Camera is not in preview state.", state);
755 if ( __pCoordinator->GetMode() != _CAMERA_MODE_IMAGE )
757 r = __pCoordinator->ChangeMode(_CAMERA_MODE_IMAGE, true);
758 SysTryReturn(NID_MEDIA, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
761 r = __pCoordinator->StartCapture(CaptureCb, CaptureCompletedCb, this);
762 SysTryReturn(NID_MEDIA, r == E_SUCCESS, r, r, "[%s] Start capture failed.", GetErrorMessage(r));
764 SetState(CAMERA_STATE_CAPTURING);
769 _CameraImpl::GetState(void) const
771 if (__state == CAMERA_STATE_PREVIEW || __state == CAMERA_STATE_AUTO_FOCUSING || __state == CAMERA_STATE_CAPTURING)
773 camera_state_e mmState = GetMmState();
774 if (mmState == ::CAMERA_STATE_CREATED) // If the preview is stopped by some internal policy.
776 return CAMERA_STATE_INITIALIZED;
783 _CameraImpl::SetBrightness(int brightness)
785 result r = E_SUCCESS;
786 _CameraOperationType operation = _COP_NONE;
787 CameraState state = CAMERA_STATE_ERROR;
788 SysLog(NID_MEDIA, "Enter. brightness:%d", brightness);
791 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_PREVIEW || state == CAMERA_STATE_CAPTURED
792 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
794 SysTryReturn(NID_MEDIA, (brightness >= MIN_CAMERA_BRIGHTNESS && brightness <= MAX_CAMERA_BRIGHTNESS), E_OUT_OF_RANGE, E_OUT_OF_RANGE,
795 "[E_OUT_OF_RANGE] The brightness(%d) is out of range. The brightness must be in the range between 0 ~ 9.", brightness);
799 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_BRIGHTNESS : _COP_SECONDARY_BRIGHTNESS);
800 r = SetProperty(operation, _MIN_PROPERTY, _MAX_PROPERTY, brightness);
801 SysTryReturn(NID_MEDIA, r == E_SUCCESS, r, r, "[%s] Propagating. brightness:%d", GetErrorMessage(r), brightness);
804 __brightness = brightness;
809 _CameraImpl::GetBrightness(void) const
815 _CameraImpl::SetContrast(int contrast)
817 result r = E_SUCCESS;
818 _CameraOperationType operation = _COP_NONE;
819 CameraState state = CAMERA_STATE_ERROR;
820 SysLog(NID_MEDIA, "Enter. contrast:%d", contrast);
823 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_PREVIEW || state == CAMERA_STATE_CAPTURED
824 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
826 SysTryReturn(NID_MEDIA, contrast >= MIN_CAMERA_CONTRAST && contrast <= MAX_CAMERA_CONTRAST, E_OUT_OF_RANGE, E_OUT_OF_RANGE,
827 "[E_OUT_OF_RANGE] The contrast(%d) is out of range. The contrast must be in the range between 0 ~ 9.", contrast);
831 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_CONTRAST : _COP_SECONDARY_CONTRAST);
832 r = SetProperty(operation, _MIN_PROPERTY, _MAX_PROPERTY, contrast);
833 SysTryReturn(NID_MEDIA, r == E_SUCCESS, r, r, "[%s] Propagating. contrast:%d", GetErrorMessage(r), contrast);
836 __contrast = contrast;
841 _CameraImpl::GetContrast(void) const
847 _CameraImpl::ZoomIn(void)
849 result r = E_SUCCESS;
851 CameraState state = CAMERA_STATE_ERROR;
852 _CameraOperationType operation = _COP_NONE;
853 SysLog(NID_MEDIA, "Camera zoomIn");
854 SysTryReturn(NID_MEDIA, __isPoweredOn == true, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. Camera was not powered on.");
857 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_PREVIEW
858 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
860 bool supported = false;
861 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_ZOOM_LEVEL : _COP_SECONDARY_ZOOM_LEVEL);
862 supported = _CameraCapability::IsSupported(operation);
863 SysTryReturn(NID_MEDIA, supported == true, E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] The operation:%d is not supported.", operation);
865 zoomLevel = __zoomLevel + 1;
866 SysTryReturn(NID_MEDIA, zoomLevel <= __maxZoomLevel && zoomLevel >= __minZoomLevel ,
867 E_DEVICE_FAILED, E_DEVICE_FAILED, "[E_DEVICE_FAILED] No more ZoomIn. zoomLevel:%d", zoomLevel);
869 r = SetProperty(operation, __minZoomLevel, __maxZoomLevel, zoomLevel);
871 SysTryReturn(NID_MEDIA, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
873 __zoomLevel = zoomLevel;
878 _CameraImpl::ZoomOut(void)
880 result r = E_SUCCESS;
882 CameraState state = CAMERA_STATE_ERROR;
883 _CameraOperationType operation = _COP_NONE;
884 SysLog(NID_MEDIA, "Camera zoomOut");
885 SysTryReturn(NID_MEDIA, __isPoweredOn == true, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. Camera was not powered on.");
888 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_PREVIEW
889 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
891 bool supported = false;
892 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_ZOOM_LEVEL : _COP_SECONDARY_ZOOM_LEVEL);
893 supported = _CameraCapability::IsSupported(operation);
894 SysTryReturn(NID_MEDIA, supported == true, E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] The operation:%d is not supported.", operation);
896 zoomLevel = __zoomLevel - 1;
897 SysTryReturn(NID_MEDIA, zoomLevel <= __maxZoomLevel, E_DEVICE_FAILED, E_DEVICE_FAILED, "[E_DEVICE_FAILED] No more ZoomOut. zoomLevel:%d", zoomLevel);
898 SysTryReturn(NID_MEDIA, zoomLevel >= __minZoomLevel, E_DEVICE_FAILED, E_DEVICE_FAILED, "[E_DEVICE_FAILED] No more ZoomIn. ZoomOut:%d", zoomLevel);
900 r = SetProperty(operation, __minZoomLevel, __maxZoomLevel, zoomLevel);
902 SysTryReturn(NID_MEDIA, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
904 __zoomLevel = zoomLevel;
909 _CameraImpl::GetMaxZoomLevel(void) const
911 result r = E_SUCCESS;
912 int returnMaxZoomLevel = 0;
915 _CameraOperationType operation = _COP_NONE;
916 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_ZOOM_LEVEL : _COP_SECONDARY_ZOOM_LEVEL);
917 r = GetProperty(operation, minZoom, maxZoom);
918 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. minZoom:%d, maxZoom:%d", GetErrorMessage(r), minZoom, maxZoom);
920 returnMaxZoomLevel = maxZoom - minZoom;
921 SysTryCatch(NID_MEDIA, returnMaxZoomLevel > 0, , E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Retrived zoom values are wrong. minZoom:%d, maxZoom:%d", GetErrorMessage(r), minZoom, maxZoom);
923 SysLog(NID_MEDIA, "Max zoom level is %d", returnMaxZoomLevel);
924 return returnMaxZoomLevel;
927 return MEDIA_INVALID_VALUE;
931 _CameraImpl::GetZoomLevel(void) const
937 _CameraImpl::SetPreviewResolution(const Tizen::Graphics::Dimension& resolution)
939 result r = E_SUCCESS;
940 CameraState state = CAMERA_STATE_ERROR;
941 int err = MM_SUCCESS;
942 SysLog(NID_MEDIA, "Enter. resolution(%d,%d)", resolution.width, resolution.height);
945 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED, E_INVALID_STATE, E_INVALID_STATE,
946 "[E_INVALID_STATE] Camera is in an invalid state. This method is working in CAMERA_STATE_INITIALIZED state. Current state is :%d", state);
948 std::unique_ptr <IList, _ListPtrUtil::Remover> pList (GetSupportedPreviewResolutionListN(), _ListPtrUtil::remover);
949 SysTryCatch(NID_MEDIA, pList.get() != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Getting the supported list was failed.\n");
950 SysTryCatch(NID_MEDIA, pList->Contains(resolution), r = E_OUT_OF_RANGE, E_OUT_OF_RANGE,
951 "[E_OUT_OF_RANGE]The resolution(%d,%d) is out of range. This resolution is not supported in the device.\n", resolution.width, resolution.height);
953 err = camera_set_preview_resolution(__handle, resolution.width, resolution.height);
954 r = ConvertResult(err);
955 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
957 __previewResolution.width = resolution.width;
958 __previewResolution.height = resolution.height;
964 Tizen::Graphics::Dimension
965 _CameraImpl::GetPreviewResolution(void) const
967 return __previewResolution;
970 Tizen::Base::Collection::IList*
971 _CameraImpl::GetSupportedPreviewResolutionListN(void) const
973 result r = E_SUCCESS;
974 _CameraOperationType operation = _COP_NONE;
976 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_PREVIEW_RESOLUTION : _COP_SECONDARY_PREVIEW_RESOLUTION);
977 std::unique_ptr <IList, _ListPtrUtil::Remover> pResolutionList (GetPropertyListN(operation, _RESULT_DIMENSION_LIST), _ListPtrUtil::remover);
978 SysTryCatch(NID_MEDIA, pResolutionList.get() != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Supported list was wrong.");
979 SysTryCatch(NID_MEDIA, pResolutionList->GetCount() > 0, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. The list was empty.");
981 return pResolutionList.release();
988 _CameraImpl::SetCaptureResolution(const Tizen::Graphics::Dimension& resolution)
990 result r = E_SUCCESS;
991 CameraState state = CAMERA_STATE_ERROR;
992 int err = MM_SUCCESS;
993 SysLog(NID_MEDIA, "Enter. resolution(%d,%d)", resolution.width, resolution.height);
996 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_PREVIEW || state == CAMERA_STATE_CAPTURED
997 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
999 std::unique_ptr <IList, _ListPtrUtil::Remover> pList (GetSupportedCaptureResolutionListN(), _ListPtrUtil::remover);
1000 SysTryCatch(NID_MEDIA, pList.get() != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Getting the supported list was failed.\n");
1001 SysTryCatch(NID_MEDIA, pList->Contains(resolution), r = E_OUT_OF_RANGE, E_OUT_OF_RANGE,
1002 "[E_OUT_OF_RANGE]. This resolution(%d,%d)is out of range. This resolution is not supported in the device.\n", resolution.width, resolution.height);
1004 err = camera_set_capture_resolution(__handle, resolution.width, resolution.height);
1005 r = ConvertResult(err);
1006 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1008 __captureResolution.width = resolution.width;
1009 __captureResolution.height = resolution.height;
1016 Tizen::Graphics::Dimension
1017 _CameraImpl::GetCaptureResolution(void) const
1019 return __captureResolution;
1023 Tizen::Base::Collection::IList*
1024 _CameraImpl::GetSupportedCaptureResolutionListN(void) const
1026 result r = E_SUCCESS;
1027 _CameraOperationType operation = _COP_NONE;
1029 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_CAPTURE_RESOLUTION : _COP_SECONDARY_CAPTURE_RESOLUTION);
1030 std::unique_ptr <IList, _ListPtrUtil::Remover> pResolutionList (GetPropertyListN(operation, _RESULT_DIMENSION_LIST), _ListPtrUtil::remover);
1031 SysTryCatch(NID_MEDIA, pResolutionList.get() != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Supported list was wrong.");
1032 SysTryCatch(NID_MEDIA, pResolutionList->GetCount() > 0, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. The list was empty.");
1034 return pResolutionList.release();
1041 _CameraImpl::SetEffect(CameraEffect effect)
1043 result r = E_SUCCESS;
1044 CameraState state = CAMERA_STATE_ERROR;
1045 int err = MM_SUCCESS;
1046 _ResultType itemType = _RESULT_INTEGER_LIST;
1048 SysLog(NID_MEDIA, "Enter. effect:%d", effect);
1051 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_PREVIEW || state == CAMERA_STATE_CAPTURED
1052 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
1054 SysTryReturn(NID_MEDIA, effect >= CAMERA_EFFECT_NONE && effect <= CAMERA_EFFECT_NIGHT, E_INVALID_ARG, E_INVALID_ARG
1055 , "[E_INVALID_ARG] Invalid argument(effect) is used. effect=%d.", effect);
1059 _CameraOperationType operation = _COP_NONE;
1061 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_EFFECT : _COP_SECONDARY_EFFECT);
1063 std::unique_ptr <IList, _ListPtrUtil::Remover> pEffectList (GetPropertyListN(operation, itemType), _ListPtrUtil::remover);
1064 SysTryCatch(NID_MEDIA, pEffectList.get() != null, r = E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] The operation:%d is not supported.", operation);
1065 SysTryCatch(NID_MEDIA, pEffectList->GetCount() > 0, r = E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION]");
1066 SysTryCatch(NID_MEDIA, pEffectList->Contains(Integer(effect)), r = E_UNSUPPORTED_TYPE, E_UNSUPPORTED_TYPE, "[E_UNSUPPORTED_TYPE]. This effect(%d) is not supported in the device.\n", effect);
1068 camera_attr_effect_mode_e attr = ::CAMERA_ATTR_EFFECT_NONE;
1069 r = _CameraUtil::GetMmEffect(effect, attr);
1070 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. effect:%d", GetErrorMessage(r), effect);
1072 err = camera_attr_set_effect(__handle, attr);
1073 r = ConvertResult(err);
1074 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. effect:%d", GetErrorMessage(r), effect);
1084 _CameraImpl::GetEffect(void) const
1090 _CameraImpl::SetFlashMode(CameraFlashMode flashMode)
1092 result r = E_SUCCESS;
1093 CameraState state = CAMERA_STATE_ERROR;
1094 int err = MM_SUCCESS;
1095 _ResultType itemType = _RESULT_INTEGER_LIST;
1096 SysLog(NID_MEDIA, "Enter. flashMode:%d", flashMode);
1098 SysTryReturn(NID_MEDIA, __isPoweredOn == true, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. Camera was not powered on.");
1101 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_PREVIEW || state == CAMERA_STATE_CAPTURED
1102 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
1104 _CameraOperationType operation = _COP_NONE;
1105 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_FLASH_MODE : _COP_SECONDARY_FLASH_MODE);
1106 camera_attr_flash_mode_e attr = ::CAMERA_ATTR_FLASH_MODE_OFF;
1108 std::unique_ptr <IList, _ListPtrUtil::Remover> pFlashModeList (GetPropertyListN(operation, itemType), _ListPtrUtil::remover);
1109 SysTryCatch(NID_MEDIA, pFlashModeList.get() != null, r = E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] The operation:%d is not supported.", operation);
1110 SysTryCatch(NID_MEDIA, pFlashModeList->GetCount() > 0, r = E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION]");
1111 SysTryCatch(NID_MEDIA, pFlashModeList->Contains(Integer(flashMode)) || flashMode == CAMERA_FLASH_MODE_OFF,
1112 r = E_UNSUPPORTED_TYPE, E_UNSUPPORTED_TYPE, "[E_UNSUPPORTED_TYPE]. This flashMode(%d) is not supported in the device.\n", flashMode);
1114 r = _CameraUtil::GetMmFlashMode(flashMode, attr);
1115 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. flashMode:%d", GetErrorMessage(r), flashMode);
1117 err = camera_attr_set_flash_mode(__handle, attr);
1118 r = ConvertResult(err);
1119 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. flashMode:%d", GetErrorMessage(r), flashMode);
1121 __flashMode = flashMode;
1129 _CameraImpl::GetFlashMode(void) const
1135 _CameraImpl::SetExposure(int exposure)
1137 result r = E_SUCCESS;
1138 CameraState state = CAMERA_STATE_ERROR;
1139 _CameraOperationType operation = _COP_NONE;
1140 SysLog(NID_MEDIA, "Enter. exposure:%d", exposure);
1143 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_PREVIEW || state == CAMERA_STATE_CAPTURED
1144 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
1146 SysTryReturn(NID_MEDIA, exposure >= MIN_CAMERA_EXPOSURE && exposure <= MAX_CAMERA_EXPOSURE, E_OUT_OF_RANGE, E_OUT_OF_RANGE
1147 , "[E_OUT_OF_RANGE] This exposure(%d)is out of range. The exposure MUST be in the range between 0 ~ 9.", exposure);
1151 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_EXPOSURE : _COP_SECONDARY_EXPOSURE);
1152 r = SetProperty(operation, _MIN_PROPERTY, _MAX_PROPERTY, exposure);
1153 SysTryReturn(NID_MEDIA, r == E_SUCCESS, r, r, "[%s] Propagating. exposure:%d", GetErrorMessage(r), exposure);
1156 __exposure = exposure;
1161 _CameraImpl::GetExposure(void) const
1167 _CameraImpl::SetWhiteBalance(CameraWhiteBalance whiteBalance)
1169 result r = E_SUCCESS;
1170 CameraState state = CAMERA_STATE_ERROR;
1171 int err = MM_SUCCESS;
1172 _ResultType itemType = _RESULT_INTEGER_LIST;
1173 SysLog(NID_MEDIA, "Enter. whiteBalance:%d", whiteBalance);
1176 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_PREVIEW || state == CAMERA_STATE_CAPTURED
1177 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
1179 SysTryReturn(NID_MEDIA, whiteBalance >= CAMERA_WHITE_BALANCE_AUTO && whiteBalance <= CAMERA_WHITE_BALANCE_TUNGSTEN,
1180 E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(whiteBalance) is used. whiteBalance:%d", whiteBalance);
1184 _CameraOperationType operation = _COP_NONE;
1185 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_WHITE_BALANCE : _COP_SECONDARY_WHITE_BALANCE);
1187 std::unique_ptr <IList, _ListPtrUtil::Remover> pWbList (GetPropertyListN(operation, itemType), _ListPtrUtil::remover);
1188 SysTryCatch(NID_MEDIA, pWbList.get() != null, r = E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] The operation:%d is not supported.", operation);
1189 SysTryCatch(NID_MEDIA, pWbList->GetCount() > 0, r = E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION]");
1190 SysTryCatch(NID_MEDIA, pWbList->Contains(Integer(whiteBalance)), r = E_UNSUPPORTED_TYPE, E_UNSUPPORTED_TYPE, "[E_UNSUPPORTED_TYPE]. This whiteBalance(%d) is not supported in the device.\n", whiteBalance);
1192 camera_attr_whitebalance_e attr = ::CAMERA_ATTR_WHITE_BALANCE_NONE;
1193 r = _CameraUtil::GetMmWhiteBalance(whiteBalance, attr);
1194 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. whiteBalance:%d", GetErrorMessage(r), whiteBalance);
1196 err = camera_attr_set_whitebalance(__handle, attr);
1197 r = ConvertResult(err);
1198 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. whiteBalance:%d", GetErrorMessage(r), whiteBalance);
1200 __wb = whiteBalance;
1207 _CameraImpl::GetWhiteBalance(void) const
1213 _CameraImpl::SetQuality(CameraQuality quality)
1215 result r = E_SUCCESS;
1216 CameraState state = CAMERA_STATE_ERROR;
1217 int err = MM_SUCCESS;
1218 SysLog(NID_MEDIA, "Enter. quality:%d", quality);
1221 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_PREVIEW || state == CAMERA_STATE_CAPTURED
1222 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state.This method is not working in this state. Current state is :%d", state);
1224 SysTryReturn(NID_MEDIA, quality >= CAMERA_QUALITY_NORMAL && quality <= CAMERA_QUALITY_MAX, E_OUT_OF_RANGE, E_OUT_OF_RANGE
1225 , "[E_OUT_OF_RANGE] This quality(%d)is out of range.", quality);
1230 r = _CameraUtil::GetMmQuality(quality, attr);
1231 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. quality:%d", GetErrorMessage(r), quality);
1233 err = camera_attr_set_image_quality(__handle, attr);
1234 r = ConvertResult(err);
1235 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. quality:%d", GetErrorMessage(r), quality);
1237 __quality = quality;
1246 _CameraImpl::GetQuality(void) const
1252 _CameraImpl::SetFocusMode(CameraFocusMode focusMode)
1254 result r = E_SUCCESS;
1255 CameraState state = CAMERA_STATE_ERROR;
1256 String key = (__selection == CAMERA_PRIMARY ? CAMERA_PRIMARY_FOCUS_MODE : CAMERA_SECONDARY_FOCUS_MODE);
1257 SysLog(NID_MEDIA, "Enter. focusMode:%d", focusMode);
1259 SysTryReturn(NID_MEDIA, __isPoweredOn == true, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. Camera was not powered on.");
1262 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_PREVIEW || state == CAMERA_STATE_CAPTURED
1263 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
1264 SysTryReturn(NID_MEDIA, focusMode > CAMERA_FOCUS_MODE_NONE, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(focusMode) is used. focusMode=%d", focusMode);
1266 std::unique_ptr <IList, _ListPtrUtil::Remover> pSupportedList (GetPropertyListN(key), _ListPtrUtil::remover);
1267 SysTryCatch(NID_MEDIA, pSupportedList.get() != null, r = E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION]");
1268 SysTryCatch(NID_MEDIA, pSupportedList->GetCount() > 0, r = E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION]");
1269 SysTryCatch(NID_MEDIA, pSupportedList->Contains(Integer(focusMode))
1270 , r = E_UNSUPPORTED_TYPE, E_UNSUPPORTED_TYPE, "[E_UNSUPPORTED_TYPE]. This mode(%d) is not supported in the device.\n", focusMode);
1272 // Set the __focusCallback to false not to call the focus callback in case of CAF.
1273 r = ChangeFocusModeTo(__focusMode, focusMode);
1274 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. current focus mode is %d, new focus mode is %d", GetErrorMessage(r), __focusMode, focusMode);
1276 __focusCallback = false;
1277 __focusMode = focusMode;
1284 _CameraImpl::GetFocusMode(void) const
1290 _CameraImpl::SetAutoFocus(bool callback)
1292 result r = E_SUCCESS;
1293 CameraState state = CAMERA_STATE_ERROR;
1294 SysLog(NID_MEDIA, "Enter. callback:%d, focus mode:%d", callback, __focusMode);
1296 SysTryReturn(NID_MEDIA, __isPoweredOn == true, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. Camera was not powered on.");
1297 SysTryReturn(NID_MEDIA, __focusMode >= CAMERA_FOCUS_MODE_NORMAL && __focusMode <= CAMERA_FOCUS_MODE_CONTINUOUS_AUTO
1298 , E_DEVICE_FAILED, E_DEVICE_FAILED, "[E_DEVICE_FAILED] In the focus mode:%d, this method is not working.", __focusMode);
1301 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_PREVIEW, E_INVALID_STATE, E_INVALID_STATE,
1302 "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
1304 r = HandleAutoFocus(__focusMode);
1305 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. focus mode is %d, callback:%s", GetErrorMessage(r), __focusMode, callback);
1307 __focusCallback = callback;
1315 _CameraImpl::ReadyToAutoFocusCallback(void) const
1317 return __focusCallback;
1321 _CameraImpl::SetAutoFocusPoint(const Tizen::Base::Collection::IList& pointList)
1323 result r = E_SUCCESS;
1324 int err = MM_SUCCESS;
1325 CameraState state = CAMERA_STATE_ERROR;
1328 pointCount = pointList.GetCount();
1329 SysLog(NID_MEDIA, "Enter. pointList count :%d", pointCount);
1331 SysTryReturn(NID_MEDIA, __isPoweredOn == true, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. Camera was not powered on.");
1334 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_PREVIEW
1335 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
1337 SysTryReturn(NID_MEDIA, __focusMode == CAMERA_FOCUS_MODE_NORMAL || __focusMode == CAMERA_FOCUS_MODE_MACRO
1338 , E_UNSUPPORTED_TYPE, E_UNSUPPORTED_TYPE , "[E_UNSUPPORTED_TYPE ] The method is not supported in the current focus mode(%d).", __focusMode);
1340 SysTryCatch(NID_MEDIA, pointCount >= 0 && pointCount <= __supportedFocusPointCount
1341 , r = E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(pointCount) is used. pointCount=%d");
1345 // Total input points
1346 while (i < pointCount && i < MAX_FOCUS_POINT)
1348 Object* pObj = null;
1349 Point* pPoint = null;
1351 pObj = const_cast<Object*>(pointList.GetAt(i));
1352 SysTryCatch(NID_MEDIA, pObj != null, r = E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(item) is used. %d item is not found.", i);
1354 pPoint = dynamic_cast<Point*>(pObj);
1355 SysTryCatch(NID_MEDIA, pPoint != null, r = E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(item's format) is used. %d item's format is invalid.", i);
1357 err = camera_attr_set_af_area(__handle, pPoint->x, pPoint->y);
1358 r = ConvertResult(err);
1359 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1360 SysLog(NID_MEDIA, "%dst af area(%d, %d) was set successfully", i, pPoint->x, pPoint->y);
1362 // Preserve the points
1363 __focusPoints[0][i] = pPoint->x;
1364 __focusPoints[1][i] = pPoint->y;
1369 if ( i < MAX_FOCUS_POINT )
1371 __focusPoints[0][i] = _INVALID_FOCUS_COORDINATE;
1372 __focusPoints[1][i] = _INVALID_FOCUS_COORDINATE;
1375 __isFocusAreaSet = true;
1377 else //If pointCount is zero, Set focus point to defualt area.
1379 if (__isFocusAreaSet)
1381 err = camera_attr_clear_af_area(__handle);
1382 r = ConvertResult(err);
1383 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1384 SysLog(NID_MEDIA, "the focus area is changed to the center.");
1386 for(int j = 0; j < MAX_FOCUS_POINT; j++)
1388 __focusPoints[0][j] = _INVALID_FOCUS_COORDINATE;
1389 __focusPoints[1][j] = _INVALID_FOCUS_COORDINATE;
1391 __isFocusAreaSet = false;
1400 Tizen::Base::Collection::IList*
1401 _CameraImpl::GetAutoFocusPointN(void) const
1403 result r = E_SUCCESS;
1407 std::unique_ptr <_MediaSafeArrayList, _ListPtrUtil::Remover> pFocusPointList (new (std::nothrow) _MediaSafeArrayList(), _ListPtrUtil::remover);
1408 SysTryCatch(NID_MEDIA, pFocusPointList.get() != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed. The object is not created.");
1410 r = pFocusPointList->Construct();
1411 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1413 while (__focusPoints[0][i] != _INVALID_FOCUS_COORDINATE && __focusPoints[1][i] != _INVALID_FOCUS_COORDINATE)
1415 std::unique_ptr <Object> pPoint (new (std::nothrow) Point(__focusPoints[0][i], __focusPoints[1][i]));
1416 SysTryCatch(NID_MEDIA, pPoint.get() != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
1418 r = pFocusPointList->AddPtr(std::move(pPoint));
1419 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1422 return pFocusPointList.release();
1429 _CameraImpl::SetCaptureFormat(const Tizen::Graphics::PixelFormat format)
1431 result r = E_SUCCESS;
1432 int err = MM_SUCCESS;
1433 CameraState state = CAMERA_STATE_ERROR;
1434 camera_pixel_format_e attr = ::CAMERA_PIXEL_FORMAT_INVALID;
1435 SysLog(NID_MEDIA, "Enter. format:%d", format);
1438 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_PREVIEW || state == CAMERA_STATE_CAPTURED
1439 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
1441 std::unique_ptr <IListT<Tizen::Graphics::PixelFormat>, _ListPtrUtil::Remover> pList (GetSupportedCaptureFormatListN(), _ListPtrUtil::remover);
1442 SysTryCatch(NID_MEDIA, pList.get() != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Getting the supported list was failed.\n");
1443 SysTryCatch(NID_MEDIA, pList->Contains(format), r = E_UNSUPPORTED_FORMAT, E_UNSUPPORTED_FORMAT, "[E_UNSUPPORTED_FORMAT]. This format(%d) is not supported in the device.\n", format);
1445 r = _CameraUtil::GetMmPixelFormat(format, attr);
1446 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. pixel format:%d", GetErrorMessage(r), format);
1448 err = camera_set_capture_format(__handle, attr);
1449 r = ConvertResult(err);
1450 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1452 __captureFormat = format;
1458 Tizen::Graphics::PixelFormat
1459 _CameraImpl::GetCaptureFormat(void) const
1461 return __captureFormat;
1465 Tizen::Base::Collection::IListT<Tizen::Graphics::PixelFormat>*
1466 _CameraImpl::GetSupportedCaptureFormatListN(void) const
1468 result r = E_SUCCESS;
1469 _CameraOperationType operation = _COP_NONE;
1471 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_CAPTURE_FORMAT : _COP_SECONDARY_CAPTURE_FORMAT);
1472 std::unique_ptr <IList, _ListPtrUtil::Remover> pIntegerList (GetPropertyListN(operation, _RESULT_INTEGER_LIST), _ListPtrUtil::remover);
1473 SysTryReturn(NID_MEDIA, pIntegerList.get() != null, null, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Supported list was wrong.");
1474 SysTryReturn(NID_MEDIA, pIntegerList->GetCount() > 0, null, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. The list was empty.");
1476 std::unique_ptr <Tizen::Base::Collection::ArrayListT<Tizen::Graphics::PixelFormat>, _ListPtrUtil::Remover> pFormatList (new (std::nothrow) ArrayListT<Tizen::Graphics::PixelFormat>(), _ListPtrUtil::remover);
1477 SysTryReturn(NID_MEDIA, pFormatList.get() != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed. The object is not created.");
1479 r = pFormatList->Construct();
1480 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1482 for (int i = 0; i < pIntegerList->GetCount(); i++)
1484 Object* pObj = null;
1485 Integer* pInteger = null;
1486 pObj = pIntegerList->GetAt(i);
1487 SysTryCatch(NID_MEDIA, pObj != null, r = E_OBJ_NOT_FOUND, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] Object instance is not available. %d item is not found.", i);
1489 pInteger = dynamic_cast<Integer*>(pObj);
1490 SysTryCatch(NID_MEDIA, pInteger != null, r = E_INVALID_FORMAT, E_INVALID_FORMAT, "[E_INVALID_FORMAT] %d item's format is invalid.", i);
1492 r = pFormatList->Add((Tizen::Graphics::PixelFormat)pInteger->ToInt());
1493 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1494 SysLog(NID_MEDIA, "Pixel format : %d was added.", pInteger->ToInt());
1497 return pFormatList.release();
1504 _CameraImpl::SetPreviewFormat(const Tizen::Graphics::PixelFormat format)
1506 result r = E_SUCCESS;
1507 CameraState state = CAMERA_STATE_ERROR;
1508 camera_pixel_format_e attr = ::CAMERA_PIXEL_FORMAT_INVALID;
1509 SysLog(NID_MEDIA, "Enter. format:%d", format);
1512 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_CAPTURED , E_INVALID_STATE, E_INVALID_STATE,
1513 "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
1515 std::unique_ptr <IListT<Tizen::Graphics::PixelFormat>, _ListPtrUtil::Remover> pList (GetSupportedPreviewFormatListN(), _ListPtrUtil::remover);
1516 SysTryCatch(NID_MEDIA, pList.get() != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Getting the supported list was failed.\n");
1517 SysTryCatch(NID_MEDIA, pList->Contains(format), r = E_UNSUPPORTED_FORMAT, E_UNSUPPORTED_FORMAT,
1518 "[E_UNSUPPORTED_FORMAT]. This format(%d) is not supported in the device.\n", format);
1520 r = _CameraUtil::GetMmPixelFormat(format, attr);
1521 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. pixel format:%d", GetErrorMessage(r), format);
1523 r = __pCoordinator->SetCameraSourceFormat(attr);
1524 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1526 __previewFormat = format;
1532 Tizen::Graphics::PixelFormat
1533 _CameraImpl::GetPreviewFormat(void) const
1535 return __previewFormat;
1539 Tizen::Base::Collection::IListT<Tizen::Graphics::PixelFormat>*
1540 _CameraImpl::GetSupportedPreviewFormatListN(void) const
1542 result r = E_SUCCESS;
1543 _CameraOperationType operation = _COP_NONE;
1545 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_PREVIEW_FORMAT : _COP_SECONDARY_PREVIEW_FORMAT);
1546 std::unique_ptr <IList, _ListPtrUtil::Remover> pIntegerList (GetPropertyListN(operation, _RESULT_INTEGER_LIST), _ListPtrUtil::remover);
1547 SysTryReturn(NID_MEDIA, pIntegerList.get() != null, null, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Supported list was wrong.");
1548 SysTryReturn(NID_MEDIA, pIntegerList->GetCount() > 0, null, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. The list was empty.");
1550 std::unique_ptr <Tizen::Base::Collection::ArrayListT<Tizen::Graphics::PixelFormat>, _ListPtrUtil::Remover> pFormatList (new (std::nothrow) ArrayListT<Tizen::Graphics::PixelFormat>(), _ListPtrUtil::remover);
1551 SysTryReturn(NID_MEDIA, pFormatList.get() != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed. The object is not created.");
1553 r = pFormatList->Construct();
1554 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1556 for (int i = 0; i < pIntegerList->GetCount(); i++)
1558 Object* pObj = null;
1559 Integer* pInteger = null;
1560 pObj = pIntegerList->GetAt(i);
1561 SysTryCatch(NID_MEDIA, pObj != null, r = E_OBJ_NOT_FOUND, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] Object instance is not available. %d item is not found.", i);
1563 pInteger = dynamic_cast<Integer*>(pObj);
1564 SysTryCatch(NID_MEDIA, pInteger != null, r = E_INVALID_FORMAT, E_INVALID_FORMAT, "[E_INVALID_FORMAT] %d item's format is invalid.", i);
1566 r = pFormatList->Add((Tizen::Graphics::PixelFormat)pInteger->ToInt());
1567 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1568 SysLog(NID_MEDIA, "Pixel format : %d was added.", pInteger->ToInt());
1571 return pFormatList.release();
1578 _CameraImpl::SetIsoLevel(CameraIsoLevel isoLevel)
1580 result r = E_SUCCESS;
1581 CameraState state = CAMERA_STATE_ERROR;
1582 int err = MM_SUCCESS;
1583 _ResultType itemType = _RESULT_INTEGER_LIST;
1585 camera_attr_iso_e attr = ::CAMERA_ATTR_ISO_AUTO;
1586 SysLog(NID_MEDIA, "Enter. isoLevel:%d", isoLevel);
1589 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_PREVIEW || state == CAMERA_STATE_CAPTURED
1590 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
1592 SysTryReturn(NID_MEDIA, isoLevel >= CAMERA_ISO_DEFAULT && isoLevel <= CAMERA_ISO_MAX , E_OUT_OF_RANGE, E_OUT_OF_RANGE
1593 , "[E_OUT_OF_RANGE] This isoLevel(%d) is out of range.", isoLevel);
1597 _CameraOperationType operation = _COP_NONE;
1598 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_ISO_LEVEL : _COP_SECONDARY_ISO_LEVEL);
1600 std::unique_ptr <IList, _ListPtrUtil::Remover> pIsoList (GetPropertyListN(operation, itemType), _ListPtrUtil::remover);
1601 SysTryCatch(NID_MEDIA, pIsoList.get() != null, r = E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] The operation:%d is not supported.", operation);
1602 SysTryCatch(NID_MEDIA, pIsoList->GetCount() > 0, r = E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION]");
1603 SysTryCatch(NID_MEDIA, pIsoList->Contains(Integer(isoLevel)) || isoLevel == CAMERA_ISO_DEFAULT || isoLevel == CAMERA_ISO_MIN
1604 || isoLevel == CAMERA_ISO_MAX, r = E_UNSUPPORTED_TYPE, E_UNSUPPORTED_TYPE, "[E_UNSUPPORTED_TYPE]. This isoLevel(%d) is not supported in the device.\n", isoLevel);
1606 r = _CameraUtil::GetMmIso(isoLevel, attr);
1607 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. isoLevel :%d", GetErrorMessage(r), isoLevel);
1609 err = camera_attr_set_iso(__handle, attr);
1610 r = ConvertResult(err);
1611 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. isoLevel :%d", GetErrorMessage(r), isoLevel);
1613 __isoLevel = isoLevel;
1621 _CameraImpl::GetIsoLevel(void) const
1627 _CameraImpl::SetPreviewFrameRate(int fps)
1629 result r = E_SUCCESS;
1630 CameraState state = CAMERA_STATE_ERROR;
1631 int err = MM_SUCCESS;
1632 camera_attr_fps_e attr = ::CAMERA_ATTR_FPS_AUTO;
1633 SysLog(NID_MEDIA, "Enter. fps:%d", fps);
1636 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED, E_INVALID_STATE, E_INVALID_STATE,
1637 "[E_INVALID_STATE] Camera is in an invalid state. This method is working in CAMERA_STATE_INITIALIZED state. Current state is :%d", (
1640 std::unique_ptr <IListT<int>, _ListPtrUtil::Remover> pList (GetSupportedPreviewFrameRateListN(), _ListPtrUtil::remover);
1641 SysTryCatch(NID_MEDIA, pList.get() != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Getting the supported list was failed.\n");
1642 SysTryCatch(NID_MEDIA, pList->Contains(fps), r = E_OUT_OF_RANGE, E_OUT_OF_RANGE,
1643 "[E_OUT_OF_RANGE]. This fps(%d) is out of range.", fps);
1645 r = _CameraUtil::GetMmFps(fps, attr);
1646 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. fps:%d", GetErrorMessage(r), fps);
1648 err = camera_attr_set_preview_fps(__handle, attr);
1649 r = ConvertResult(err);
1650 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1659 _CameraImpl::GetPreviewFrameRate(void) const
1664 Tizen::Base::Collection::IListT <int>*
1665 _CameraImpl::GetSupportedPreviewFrameRateListN(void) const
1667 result r = E_SUCCESS;
1668 _CameraOperationType operation = _COP_NONE;
1670 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_PREVIEW_FRAMERATE : _COP_SECONDARY_PREVIEW_FRAMERATE);
1671 std::unique_ptr <IList, _ListPtrUtil::Remover> pIntegerList (GetPropertyListN(operation, _RESULT_INTEGER_LIST), _ListPtrUtil::remover);
1672 SysTryReturn(NID_MEDIA, pIntegerList.get() != null, null, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Supported list was wrong.");
1673 SysTryReturn(NID_MEDIA, pIntegerList->GetCount() > 0, null, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. The list was empty.");
1675 std::unique_ptr <Tizen::Base::Collection::ArrayListT<int>, _ListPtrUtil::Remover> pListT (new (std::nothrow) ArrayListT<int>(), _ListPtrUtil::remover);
1676 SysTryReturn(NID_MEDIA, pListT.get() != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed. The object is not created.");
1678 r = pListT->Construct();
1679 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1681 for (int i = 0; i < pIntegerList->GetCount(); i++)
1683 Object* pObj = null;
1684 Integer* pInteger = null;
1685 pObj = pIntegerList->GetAt(i);
1686 SysTryCatch(NID_MEDIA, pObj != null, r = E_OBJ_NOT_FOUND, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] Object instance is not available. %d item is not found.", i);
1688 pInteger = dynamic_cast<Integer*>(pObj);
1689 SysTryCatch(NID_MEDIA, pInteger != null, r = E_INVALID_FORMAT, E_INVALID_FORMAT, "[E_INVALID_FORMAT] %d item's fps is invalid.", i);
1691 r = pListT->Add(pInteger->ToInt());
1692 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1693 SysLog(NID_MEDIA, "FPS : %d was added.", pInteger->ToInt());
1696 return pListT.release();
1702 Tizen::Base::Collection::IListT<int>*
1703 _CameraImpl::GetSupportedPreviewFrameRateListN(const Tizen::Graphics::Dimension& dim) const
1705 result r = E_SUCCESS;
1706 Object *pObj = null;
1707 _CameraDeviceType device = _CAMERA_DEVICE_NONE;
1708 _ResultType itemType = _RESULT_NONE;
1710 device = (__selection == CAMERA_PRIMARY ? _CAMERA_DEVICE_PRIMARY : _CAMERA_DEVICE_SECONDARY);
1711 pObj = _CameraCapability::GetSupportedPreviewFrameRateN(device, _QUERY_LIST, dim, itemType);
1712 std::unique_ptr <ArrayList, _ListPtrUtil::Remover> pIntegerList (dynamic_cast<ArrayList*>(pObj), _ListPtrUtil::remover);
1713 SysTryReturn(NID_MEDIA, pIntegerList.get() != null, null, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. Supported list was wrong.");
1714 SysTryReturn(NID_MEDIA, pIntegerList->GetCount() > 0, null, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. The list was empty.");
1716 std::unique_ptr <Tizen::Base::Collection::ArrayListT<int>, _ListPtrUtil::Remover> pListT (new (std::nothrow) ArrayListT<int>(), _ListPtrUtil::remover);
1717 SysTryCatch(NID_MEDIA, pListT.get() != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed. The object is not created.");
1719 r = pListT->Construct();
1720 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1722 for (int i = 0; i < pIntegerList->GetCount(); i++)
1724 Object* pObj = null;
1725 Integer* pInteger = null;
1726 pObj = pIntegerList->GetAt(i);
1727 SysTryCatch(NID_MEDIA, pObj != null, r = E_OBJ_NOT_FOUND, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] Object instance is not available. %d item is not found.", i);
1729 pInteger = dynamic_cast<Integer*>(pObj);
1730 SysTryCatch(NID_MEDIA, pInteger != null, r = E_INVALID_FORMAT, E_INVALID_FORMAT, "[E_INVALID_FORMAT] %d item's fps is invalid.", i);
1732 r = pListT->Add(pInteger->ToInt());
1733 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1734 SysLog(NID_MEDIA, "FPS : %d was added.", pInteger->ToInt());
1737 return pListT.release();
1744 _CameraImpl::SetExifOrientation(CameraExifOrientation orientation)
1746 result r = E_SUCCESS;
1747 CameraState state = CAMERA_STATE_ERROR;
1748 SysLog(NID_MEDIA, "Enter. orientation:%d", orientation);
1751 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_PREVIEW || state == CAMERA_STATE_CAPTURED
1752 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
1754 SysTryCatch(NID_MEDIA, CAMERA_EXIF_ORIENTATION_TOP_LEFT <= orientation && orientation <= CAMERA_EXIF_ORIENTATION_LEFT_BOTTOM,
1755 r = E_OUT_OF_RANGE, r, "[E_OUT_OF_RANGE] This orientation(%d) is out of range.", orientation);
1757 if ( __isPoweredOn )
1759 __pCoordinator->SetCameraOrientation(orientation);
1761 __exifOrientation = orientation;
1769 _CameraImpl::SetExifGpsCoordinates(double latitude, double longitude, float altitude)
1771 result r = E_SUCCESS;
1772 CameraState state = CAMERA_STATE_ERROR;
1773 int err = MM_SUCCESS;
1774 SysLog(NID_MEDIA, "Enter. latitude:%f, longitude:%f, altitude:%f", latitude, longitude, altitude);
1777 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_PREVIEW || state == CAMERA_STATE_CAPTURED
1778 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
1780 SysTryCatch(NID_MEDIA, -90.0 <= latitude && latitude <= 90.0 , r = E_OUT_OF_RANGE, r, "[E_OUT_OF_RANGE] This latitude(%f) is out of range.", latitude);
1781 SysTryCatch(NID_MEDIA, -180.0 <= longitude && longitude <= 180.0 , r = E_OUT_OF_RANGE, r, "[E_OUT_OF_RANGE] This longitude(%f) is out of range.", longitude);
1783 if ( __isPoweredOn )
1785 err = camera_attr_set_geotag(__handle, latitude, longitude, (double)altitude);
1786 r = ConvertResult(err);
1787 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. latitude:%f, longitude:%f, altitude:%f", GetErrorMessage(r), latitude, longitude, altitude);
1789 __exifLatitude = latitude;
1790 __exifLongitude = longitude;
1791 __exifAltitude = altitude;
1799 _CameraImpl::DisableExifGpsCoordinates(void)
1801 result r = E_SUCCESS;
1802 CameraState state = CAMERA_STATE_ERROR;
1803 int err = MM_SUCCESS;
1804 SysLog(NID_MEDIA, "Disable exif gps co-ordinates");
1807 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_PREVIEW || state == CAMERA_STATE_CAPTURED
1808 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. This method is not working in this state. Current state is :%d", state);
1810 err = camera_attr_remove_geotag(__handle);
1811 r = ConvertResult(err);
1812 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1814 __exifLatitude = _CAMERA_EXIF_GPS_INVALID_LATITUDE;
1815 __exifLongitude = _CAMERA_EXIF_GPS_INVALID_LONGITUDE;
1824 _CameraImpl::SetFlip(CameraFlipType flip)
1826 result r = E_SUCCESS;
1827 CameraState state = CAMERA_STATE_ERROR;
1828 int err = MM_SUCCESS;
1829 camera_flip_e attr = ::CAMERA_FLIP_NONE;
1830 String key = (__selection == CAMERA_PRIMARY ? CAMERA_PRIMARY_FLIP : CAMERA_SECONDARY_FLIP);
1831 SysLog(NID_MEDIA, "Enter. flip:%d", flip);
1834 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED, E_INVALID_STATE, E_INVALID_STATE,
1835 "[E_INVALID_STATE] Camera is in an invalid state. This method is working in CAMERA_STATE_INITIALIZED state. Current state is :%d", state);
1836 SysTryReturn(NID_MEDIA, flip >= CAMERA_FLIP_NONE && flip <= CAMERA_FLIP_VERTICAL , E_INVALID_ARG , E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(flip) is used. flip=%d.", flip);
1838 std::unique_ptr <IList, _ListPtrUtil::Remover> pSupportedList (GetPropertyListN(key), _ListPtrUtil::remover);
1839 SysTryCatch(NID_MEDIA, pSupportedList.get() != null, r = E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION]");
1840 SysTryCatch(NID_MEDIA, pSupportedList->GetCount() > 0, r = E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION]");
1841 SysTryCatch(NID_MEDIA, pSupportedList->Contains(Integer(flip)), r = E_UNSUPPORTED_TYPE, E_UNSUPPORTED_TYPE, "[E_UNSUPPORTED_TYPE]. This flip(%d) is not supported in the device.\n", flip);
1843 r = _CameraUtil::GetMmFlip(__selection, flip, attr);
1844 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. flip:%d", GetErrorMessage(r), flip);
1846 err = camera_attr_set_stream_flip(__handle, attr);
1847 r = ConvertResult(err);
1848 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. flip:%d", GetErrorMessage(r), flip);
1857 _CameraImpl::GetFlip(void) const
1863 _CameraImpl::SetPreviewRotation(CameraRotation rotation)
1865 result r = E_SUCCESS;
1866 CameraState state = CAMERA_STATE_ERROR;
1867 int err = MM_SUCCESS;
1868 camera_rotation_e attr = ::CAMERA_ROTATION_NONE;
1869 String key = (__selection == CAMERA_PRIMARY ? CAMERA_PRIMARY_PREVIEW_ROTATION : CAMERA_SECONDARY_PREVIEW_ROTATION);
1870 SysLog(NID_MEDIA, "Enter. rotation:%d", rotation);
1873 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED, E_INVALID_STATE, E_INVALID_STATE,
1874 "[E_INVALID_STATE] Camera is in an invalid state. This method is working in CAMERA_STATE_INITIALIZED state. Current state is :%d", state);
1875 SysTryReturn(NID_MEDIA, rotation >= CAMERA_ROTATION_NONE && rotation <= CAMERA_ROTATION_270, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(rotation) is used. rotation=%d.", rotation);
1877 std::unique_ptr <IList, _ListPtrUtil::Remover> pSupportedList (GetPropertyListN(key), _ListPtrUtil::remover);
1878 SysTryCatch(NID_MEDIA, pSupportedList.get() != null, r = E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION]");
1879 SysTryCatch(NID_MEDIA, pSupportedList->GetCount() > 0, r = E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION]");
1880 SysTryCatch(NID_MEDIA, pSupportedList->Contains(Integer(rotation)), r = E_UNSUPPORTED_TYPE, E_UNSUPPORTED_TYPE, "[E_UNSUPPORTED_TYPE]. This rotation(%d) is not supported in the device.\n", rotation);
1882 r = _CameraUtil::GetMmRotation(rotation, attr);
1883 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. rotation:%d", GetErrorMessage(r), rotation);
1885 err = camera_attr_set_stream_rotation(__handle, attr);
1886 r = ConvertResult(err);
1887 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera rotate stream failed. displayHandle:%d, previewedData:%d", GetErrorMessage(r), __previewRegionHandle, __previewProcessing);
1889 __previewRotation = rotation;
1896 _CameraImpl::GetPreviewRotation(void) const
1898 return __previewRotation;
1902 _CameraImpl::SetMeteringMode(CameraMeteringMode meteringMode)
1904 result r = E_SUCCESS;
1905 CameraState state = CAMERA_STATE_ERROR;
1906 int err = MM_SUCCESS;
1907 camera_attr_exposure_mode_e attr = ::CAMERA_ATTR_EXPOSURE_MODE_OFF;
1908 String key = (__selection == CAMERA_PRIMARY ? CAMERA_PRIMARY_METERING_MODE : CAMERA_SECONDARY_METERING_MODE);
1909 SysLog(NID_MEDIA, "Enter. meteringMode:%d", meteringMode);
1911 SysTryReturn(NID_MEDIA, __isPoweredOn == true, E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Camera was not powered on.");
1914 SysTryReturn(NID_MEDIA, state == CAMERA_STATE_INITIALIZED || state == CAMERA_STATE_PREVIEW || state == CAMERA_STATE_CAPTURED
1915 , E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] This method is not working in this state. Current state is :%d", state);
1916 SysTryReturn(NID_MEDIA, meteringMode >= CAMERA_METERING_MODE_NONE, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] This mode %d cannot be set.", meteringMode);
1918 std::unique_ptr <IList, _ListPtrUtil::Remover> pSupportedList (GetPropertyListN(key), _ListPtrUtil::remover);
1919 SysTryCatch(NID_MEDIA, pSupportedList.get() != null, r = E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION]");
1920 SysTryCatch(NID_MEDIA, pSupportedList->GetCount() > 0, r = E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION]");
1921 SysTryCatch(NID_MEDIA, pSupportedList->Contains(Integer(meteringMode)) || meteringMode == CAMERA_METERING_MODE_NONE
1922 , r = E_UNSUPPORTED_TYPE, E_UNSUPPORTED_TYPE, "[E_UNSUPPORTED_TYPE]. This mode(%d) is not supported in the device.\n", meteringMode);
1924 r = _CameraUtil::GetMmMeteringMode(meteringMode, attr);
1925 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. rotation:%d", GetErrorMessage(r), meteringMode);
1927 err = camera_attr_set_exposure_mode(__handle, attr);
1928 r = ConvertResult(err);
1929 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera metering mode failed. meteringMode:%d", GetErrorMessage(r), meteringMode);
1931 __meteringMode = meteringMode;
1938 _CameraImpl::GetMeteringMode(void) const
1940 return __meteringMode;
1944 _CameraImpl::ConvertResult(int err) const
1946 result r = E_SYSTEM;
1947 if (err != ::CAMERA_ERROR_NONE)
1949 SysLog(NID_MEDIA, "MM Err:0x%x", err);
1953 if (err == ::CAMERA_ERROR_NONE)
1957 else if (err == ::CAMERA_ERROR_INVALID_PARAMETER)
1961 else if (err == ::CAMERA_ERROR_INVALID_STATE)
1963 r = E_INVALID_STATE;
1965 else if (err == ::CAMERA_ERROR_OUT_OF_MEMORY)
1967 r = E_OUT_OF_MEMORY;
1969 else if (err == ::CAMERA_ERROR_DEVICE)
1971 r = E_DEVICE_FAILED;
1973 else if (err == ::CAMERA_ERROR_INVALID_OPERATION
1974 || err == ::CAMERA_ERROR_SECURITY_RESTRICTED)
1978 else if (err == ::CAMERA_ERROR_DEVICE_BUSY
1979 || err == ::CAMERA_ERROR_SOUND_POLICY)
1983 else if (err == ::CAMERA_ERROR_DEVICE_NOT_FOUND)
1985 r = E_DEVICE_UNAVAILABLE;
1996 _CameraImpl::GetMmState(void) const
1998 result r = E_SUCCESS;
1999 int err = MM_SUCCESS;
2000 camera_state_e mmState = ::CAMERA_STATE_NONE;
2002 err = camera_get_state(__handle, &mmState);
2003 r = ConvertResult(err);
2004 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2009 return ::CAMERA_STATE_NONE;
2013 _CameraImpl::SetState(CameraState state)
2019 _CameraImpl::GetEvent(void) const
2021 return __pCameraEvent;
2025 _CameraImpl::GetSelection(void) const
2031 _CameraImpl::GetPreviewProcessing(void) const
2033 return __previewProcessing;
2037 _CameraImpl::EnqueueData(_CameraBuffer& cameraBuffer)
2039 result r = E_SUCCESS;
2040 _CameraBuffer* pCameraBuffer = null;
2041 _CameraBufferType bufferType = cameraBuffer.GetBufferType();
2043 SysTryCatch(NID_MEDIA, cameraBuffer.GetLimit() > 0, r = E_OBJ_NOT_FOUND, E_OBJ_NOT_FOUND, "[%s] Propagating. bufferType:%d", GetErrorMessage(r), bufferType);
2045 pCameraBuffer = new (std::nothrow) _CameraBuffer();
2046 SysTryCatch(NID_MEDIA, pCameraBuffer != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed. The object is not created.");
2048 r = pCameraBuffer->Construct(cameraBuffer);
2049 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. bufferType:%d", GetErrorMessage(r), bufferType);
2053 case _CAMERA_BUFFER_CAPTURE:
2054 r = __pCaptureBufferQueue->Enqueue(*pCameraBuffer);
2057 case _CAMERA_BUFFER_PREVIEW:
2058 r = __pPreviewBufferQueue->Enqueue(*pCameraBuffer);
2063 SysLogException(NID_MEDIA, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(bufferType) is used. bufferType=%d.", bufferType);
2066 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. bufferType:%d", GetErrorMessage(r), bufferType);
2071 if (pCameraBuffer != null)
2073 delete pCameraBuffer;
2081 _CameraImpl::DequeueDataN(_CameraBufferType bufferType)
2083 result r = E_SUCCESS;
2084 _CameraBuffer* pBuffer = null;
2088 case _CAMERA_BUFFER_CAPTURE:
2089 pBuffer = static_cast<_CameraBuffer*>(__pCaptureBufferQueue->Dequeue());
2092 case _CAMERA_BUFFER_PREVIEW:
2093 pBuffer = static_cast<_CameraBuffer*>(__pPreviewBufferQueue->Dequeue());
2096 case _CAMERA_BUFFER_NONE:
2100 SysTryCatch(NID_MEDIA, pBuffer != null, r = E_OBJ_NOT_FOUND, E_OBJ_NOT_FOUND, "[%s] Propagating. bufferType:%d", GetErrorMessage(E_OBJ_NOT_FOUND), bufferType);
2105 SysLogException(NID_MEDIA, E_UNDERFLOW, "[E_UNDERFLOW] Queue is empty.");
2110 _CameraImpl::GetDataCount(_CameraBufferType bufferType)
2115 case _CAMERA_BUFFER_CAPTURE:
2116 count = __pCaptureBufferQueue->GetCount();
2119 case _CAMERA_BUFFER_PREVIEW:
2120 count = __pPreviewBufferQueue->GetCount();
2123 case _CAMERA_BUFFER_NONE:
2131 _CameraImpl::GetCoordinator(void)
2133 return __pCoordinator;
2137 _CameraImpl::IsZeroShutterLag(void) const
2139 return __zeroShutterLag;
2143 _CameraImpl::SetProperty(_CameraOperationType operation, int min, int max, int value)
2145 result r = E_SUCCESS;
2146 bool supported = false;
2150 int err = MM_SUCCESS;
2152 SysLog(NID_MEDIA, "Enter. operation:%d, min:%d, max:%d, value:%d", operation, min, max, value);
2154 SysTryReturn(NID_MEDIA, max - min > 0, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(Min, Max) is used. Min:%d, Max:%d wrong. value is :%d", min, max, value);
2155 SysTryReturn(NID_MEDIA, value >= min && value <= max, E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(Min, Max) is used. Min:%d, Max:%d value is :%d", min, max, value);
2157 supported = _CameraCapability::IsSupported(operation);
2158 SysTryReturn(NID_MEDIA, supported == true, E_UNSUPPORTED_OPERATION, E_UNSUPPORTED_OPERATION, "[E_UNSUPPORTED_OPERATION] The operation:%d is not supported.", operation);
2162 case _COP_PRIMARY_BRIGHTNESS:
2163 case _COP_SECONDARY_BRIGHTNESS:
2164 err = camera_attr_get_brightness_range(__handle, &mmMin, &mmMax);
2165 r = ConvertResult(err);
2166 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera get attribute range failed. operation:%d, value:%d", GetErrorMessage(r), operation, value);
2168 mmValue = (int) ((double) (mmMax - mmMin) / (double) (max - min) * (double) value);
2169 if (mmValue < mmMin)
2173 else if (mmValue > mmMax)
2177 err = camera_attr_set_brightness(__handle, mmValue);
2178 r = ConvertResult(err);
2179 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera set attribute range failed. operation:%d, value:%d, mmValue:%d", GetErrorMessage(r), operation, value, mmValue);
2182 case _COP_PRIMARY_CONTRAST:
2183 case _COP_SECONDARY_CONTRAST:
2184 err = camera_attr_get_contrast_range(__handle, &mmMin, &mmMax);
2185 r = ConvertResult(err);
2186 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera get attribute range failed. operation:%d, value:%d", GetErrorMessage(r), operation, value);
2188 mmValue = (int) ((double) (mmMax - mmMin) / (double) (max - min) * (double) value);
2189 if (mmValue < mmMin)
2193 else if (mmValue > mmMax)
2197 err = camera_attr_set_contrast(__handle, mmValue);
2198 r = ConvertResult(err);
2199 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera set attribute range failed. operation:%d, value:%d, mmValue:%d", GetErrorMessage(r), operation, value, mmValue);
2202 case _COP_PRIMARY_EXPOSURE:
2203 case _COP_SECONDARY_EXPOSURE:
2204 err = camera_attr_get_exposure_range(__handle, &mmMin, &mmMax);
2205 r = ConvertResult(err);
2206 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera get attribute range failed. operation:%d, value:%d", GetErrorMessage(r), operation, value);
2208 mmValue = (int) ((double) (mmMax - mmMin) / (double) (max - min) * (double) value);
2209 if (mmValue < mmMin)
2213 else if (mmValue > mmMax)
2217 err = camera_attr_set_exposure(__handle, mmValue);
2218 r = ConvertResult(err);
2219 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera set attribute range failed. operation:%d, value:%d, mmValue:%d", GetErrorMessage(r), operation, value, mmValue);
2222 case _COP_PRIMARY_ZOOM_LEVEL:
2223 case _COP_SECONDARY_ZOOM_LEVEL:
2224 err = camera_attr_get_zoom_range(__handle, &mmMin, &mmMax);
2225 r = ConvertResult(err);
2226 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera get attribute range failed. operation:%d, value:%d", GetErrorMessage(r), operation, value);
2228 mmValue = (int) ((double) (mmMax - mmMin) / (double) (max - min) * (double) value);
2229 if (mmValue < mmMin)
2233 else if (mmValue > mmMax)
2237 err = camera_attr_set_zoom(__handle, mmValue);
2238 r = ConvertResult(err);
2239 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera set attribute range failed. operation:%d, value:%d, mmValue:%d", GetErrorMessage(r), operation, value, mmValue);
2252 _CameraImpl::GetProperty(_CameraOperationType operation, int& mmMin, int& mmMax) const
2254 result r = E_SUCCESS;
2255 int err = MM_SUCCESS;
2259 case _COP_PRIMARY_ZOOM_LEVEL:
2260 case _COP_SECONDARY_ZOOM_LEVEL:
2261 err = camera_attr_get_zoom_range(__handle, &mmMin, &mmMax);
2262 r = ConvertResult(err);
2263 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera get attribute range failed. operation:%d", GetErrorMessage(r), operation);
2275 Tizen::Base::Collection::IList*
2276 _CameraImpl::GetPropertyListN(_CameraOperationType operation, _ResultType itemQueryType) const
2278 result r = E_SUCCESS;
2279 _ResultType itemType = _RESULT_NONE;
2281 std::unique_ptr <IList, _ListPtrUtil::Remover> pList (_CameraCapability::GetListN(operation, itemType), _ListPtrUtil::remover);
2282 SysTryCatch(NID_MEDIA, pList.get() != null, , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
2283 SysTryCatch(NID_MEDIA, itemType == itemQueryType, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. itemQueryType%d, itemType:%d are not same", itemQueryType, itemType);
2285 return pList.release();
2291 Tizen::Base::Collection::IList*
2292 _CameraImpl::GetPropertyListN(const Tizen::Base::String& key) const
2294 result r = E_SUCCESS;
2295 _CapabilityImpl* pCapability = null;
2297 std::unique_ptr <ArrayList, _ListPtrUtil::Remover> pList (new (std::nothrow) ArrayList(), _ListPtrUtil::remover);
2298 SysTryCatch(NID_MEDIA, pList.get() != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed. The object is not created.");
2300 r = pList->Construct();
2301 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2303 pCapability = _CapabilityImpl::GetInstance();
2304 SysTryCatch(NID_MEDIA, pCapability != null, r = E_OBJ_NOT_FOUND, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] _CapabilityImpl instance is not available.");
2305 r = pCapability->GetValueN(key, *(pList.get())); //TODO check
2306 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2308 return pList.release();
2315 _CameraImpl::ReloadConfiguration(int reload)
2317 result r = E_SUCCESS;
2318 int err = MM_SUCCESS;
2319 SysLog(NID_MEDIA, "Enter. reload:0x%x", reload);
2321 if (reload & _RELOAD_PREVIEW_RESOLUTION)
2323 err = camera_set_preview_resolution(__handle, __previewResolution.width, __previewResolution.height);
2324 r = ConvertResult(err);
2325 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating", GetErrorMessage(r));
2327 if (reload & _RELOAD_CAPTURE_RESOLUTION)
2329 err = camera_set_capture_resolution(__handle, __captureResolution.width, __captureResolution.height);
2330 r = ConvertResult(err);
2331 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating", GetErrorMessage(r));
2333 if (reload & _RELOAD_PREVIEW_FORMAT)
2335 camera_pixel_format_e attr = ::CAMERA_PIXEL_FORMAT_INVALID;
2336 r = _CameraUtil::GetMmPixelFormat(__previewFormat, attr);
2337 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. pixel format:%d", GetErrorMessage(r), __previewFormat);
2339 err = camera_set_preview_format(__handle, attr);
2340 r = ConvertResult(err);
2341 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating", GetErrorMessage(r));
2343 if (reload & _RELOAD_INTERNAL_PREVIEW_FORMAT)
2345 err = camera_set_preview_format(__handle, __pCoordinator->GetCameraSourceFormat());
2346 r = ConvertResult(err);
2347 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating", GetErrorMessage(r));
2349 if (reload & _RELOAD_CAPTURE_FORMAT)
2351 camera_pixel_format_e attr = ::CAMERA_PIXEL_FORMAT_INVALID;
2352 r = _CameraUtil::GetMmPixelFormat(__captureFormat, attr);
2353 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. pixel format:%d", GetErrorMessage(r), __captureFormat);
2355 err = camera_set_capture_format(__handle, attr);
2356 r = ConvertResult(err);
2357 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2359 if (reload & _RELOAD_FPS)
2361 camera_attr_fps_e attr = ::CAMERA_ATTR_FPS_AUTO;
2362 r = _CameraUtil::GetMmFps(__fps, attr);
2363 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. fps:%d", GetErrorMessage(r), __fps);
2365 err = camera_attr_set_preview_fps(__handle, attr);
2366 r = ConvertResult(err);
2367 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2369 if (reload & _RELOAD_BRIGHTNESS)
2371 _CameraOperationType operation = _COP_NONE;
2372 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_BRIGHTNESS : _COP_SECONDARY_BRIGHTNESS);
2373 if ( _CameraCapability::IsSupported(operation))
2375 r = SetProperty(operation, _MIN_PROPERTY, _MAX_PROPERTY, __brightness);
2376 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2379 if (reload & _RELOAD_CONTRAST)
2381 _CameraOperationType operation = _COP_NONE;
2382 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_CONTRAST : _COP_SECONDARY_CONTRAST);
2383 if ( _CameraCapability::IsSupported(operation))
2385 r = SetProperty(operation, _MIN_PROPERTY, _MAX_PROPERTY, __contrast);
2386 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2389 if (reload & _RELOAD_EXPOSURE)
2391 _CameraOperationType operation = _COP_NONE;
2392 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_EXPOSURE : _COP_SECONDARY_EXPOSURE);
2393 if ( _CameraCapability::IsSupported(operation))
2395 r = SetProperty(operation, _MIN_PROPERTY, _MAX_PROPERTY, __exposure);
2396 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2399 if (reload & _RELOAD_MAX_ZOOM_LEVEL)
2401 _CameraOperationType operation = _COP_NONE;
2402 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_ZOOM_LEVEL : _COP_SECONDARY_ZOOM_LEVEL);
2405 if ( _CameraCapability::IsSupported(operation))
2407 r = GetProperty(operation, minZoom, maxZoom);
2408 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2410 __maxZoomLevel = maxZoom - minZoom;
2412 if (reload & _RELOAD_ZOOM_LEVEL)
2414 _CameraOperationType operation = _COP_NONE;
2415 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_ZOOM_LEVEL : _COP_SECONDARY_ZOOM_LEVEL);
2416 if ( _CameraCapability::IsSupported(operation))
2419 while (zoomLevel < __zoomLevel)
2422 r = SetProperty(operation, __minZoomLevel, __maxZoomLevel, zoomLevel);
2423 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2427 if (reload & _RELOAD_EFFECT)
2429 _CameraOperationType operation = _COP_NONE;
2430 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_EFFECT : _COP_SECONDARY_EFFECT);
2431 if ( _CameraCapability::IsSupported(operation))
2433 camera_attr_effect_mode_e attr = ::CAMERA_ATTR_EFFECT_NONE;
2434 r = _CameraUtil::GetMmEffect(__effect, attr);
2435 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. effect:%d", GetErrorMessage(r), __effect);
2437 err = camera_attr_set_effect(__handle, attr);
2438 r = ConvertResult(err);
2439 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2442 if (reload & _RELOAD_WB)
2444 _CameraOperationType operation = _COP_NONE;
2445 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_WHITE_BALANCE : _COP_SECONDARY_WHITE_BALANCE);
2446 if ( _CameraCapability::IsSupported(operation))
2448 camera_attr_whitebalance_e attr = ::CAMERA_ATTR_WHITE_BALANCE_NONE;
2449 r = _CameraUtil::GetMmWhiteBalance(__wb, attr);
2450 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. whiteBalance:%d", GetErrorMessage(r), __wb);
2452 err = camera_attr_set_whitebalance(__handle, attr);
2453 r = ConvertResult(err);
2454 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2457 if ((reload & _RELOAD_QUALITY) && (__quality != CAMERA_QUALITY_NORMAL))
2460 r = _CameraUtil::GetMmQuality(__quality, attr);
2461 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. quality:%d", GetErrorMessage(r), __quality);
2463 err = camera_attr_set_image_quality(__handle, attr);
2464 r = ConvertResult(err);
2465 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2467 if (reload & _RELOAD_ISO)
2469 _CameraOperationType operation = _COP_NONE;
2470 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_ISO_LEVEL : _COP_SECONDARY_ISO_LEVEL);
2471 if ( _CameraCapability::IsSupported(operation))
2473 camera_attr_iso_e attr = ::CAMERA_ATTR_ISO_AUTO;
2475 r = _CameraUtil::GetMmIso(__isoLevel, attr);
2476 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. iso:%d", GetErrorMessage(r), __isoLevel);
2478 err = camera_attr_set_iso(__handle, attr);
2479 r = ConvertResult(err);
2480 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2483 if ((reload & _RELOAD_EXIF_ORIENTATION) && (__exifOrientation != CAMERA_EXIF_ORIENTATION_NONE)) //TODO check whether the exif data is lasting or one-time.
2485 __pCoordinator->SetCameraOrientation(__exifOrientation);
2487 if (reload & _RELOAD_EXIF_GPS_COORDINATES)
2489 if ( __exifLatitude < _CAMERA_EXIF_GPS_INVALID_LATITUDE && __exifLongitude < _CAMERA_EXIF_GPS_INVALID_LONGITUDE )
2491 err = camera_attr_set_geotag(__handle, __exifLatitude, __exifLongitude, (double)__exifAltitude);
2492 r = ConvertResult(err);
2493 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2497 err = camera_attr_remove_geotag(__handle);
2498 r = ConvertResult(err);
2499 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2502 if (reload & _RELOAD_FLASH)
2504 _CameraOperationType operation = _COP_NONE;
2505 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_FLASH_MODE : _COP_SECONDARY_FLASH_MODE);
2507 if ( _CameraCapability::IsSupported(operation))
2509 camera_attr_flash_mode_e attr = ::CAMERA_ATTR_FLASH_MODE_OFF;
2510 r = _CameraUtil::GetMmFlashMode(__flashMode, attr);
2512 err = camera_attr_set_flash_mode(__handle, attr);
2513 r = ConvertResult(err);
2514 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2517 if (reload & _RELOAD_FLIP) // Flip shoud be called before rotation set.
2519 String key = (__selection == CAMERA_PRIMARY ? CAMERA_PRIMARY_FLIP : CAMERA_SECONDARY_FLIP);
2520 std::unique_ptr <IList, _ListPtrUtil::Remover> pSupportedList (GetPropertyListN(key), _ListPtrUtil::remover);
2522 if (pSupportedList.get() != null)
2524 if (pSupportedList->GetCount() > 0)
2526 camera_flip_e attr = ::CAMERA_FLIP_NONE;
2527 r = _CameraUtil::GetMmFlip(__selection, __flip, attr);
2528 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. flip:%d", GetErrorMessage(r), __flip);
2530 err = camera_attr_set_stream_flip(__handle, attr);
2531 r = ConvertResult(err);
2532 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2536 if (reload & _RELOAD_PREVIEW_ROTATION)
2538 String key = (__selection == CAMERA_PRIMARY ? CAMERA_PRIMARY_PREVIEW_ROTATION : CAMERA_SECONDARY_PREVIEW_ROTATION);
2539 std::unique_ptr <IList, _ListPtrUtil::Remover> pSupportedList (GetPropertyListN(key), _ListPtrUtil::remover);
2541 if (pSupportedList.get() != null)
2543 if (pSupportedList->GetCount() > 0)
2545 camera_rotation_e attr = ::CAMERA_ROTATION_NONE;
2546 r = _CameraUtil::GetMmRotation(__previewRotation, attr);
2547 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. rotation:%d", GetErrorMessage(r), __previewRotation);
2549 err = camera_attr_set_stream_rotation(__handle, attr);
2550 r = ConvertResult(err);
2551 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2555 if (reload & _RELOAD_PREVIEW_PREPARE)
2557 if ((__previewProcessing & _PREVIEW_PRE_PROCESSING) || (__previewProcessing & _PREVIEW_POST_PROCESSING))
2559 err = camera_set_preview_cb(__handle, PreviewCb, this);
2563 err = camera_unset_preview_cb(__handle);
2565 r = ConvertResult(err);
2566 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Preview callback setting failed. Process:%b", GetErrorMessage(r), __previewProcessing);
2568 if ( __previewRegionHandle != _BufferInfoImpl::INVALID_BUFFER_HANDLE )
2570 err = camera_set_display(__handle, __previewDisplayType, (camera_display_h)__previewRegionHandle);
2571 r = ConvertResult(err);
2572 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera set display failed. displayHandle:%d, Process:%b",
2573 GetErrorMessage(r), __previewRegionHandle, __previewProcessing);
2575 if ( __previewDisplayType == ::CAMERA_DISPLAY_TYPE_X11 )
2577 err = camera_set_x11_display_mode(__handle, ::CAMERA_DISPLAY_MODE_FULL);
2578 r = ConvertResult(err);
2579 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera set display mode failed. displayHandle:%d, Process:%b",
2580 GetErrorMessage(r), __previewRegionHandle, __previewProcessing);
2582 err = camera_set_x11_display_visible(__handle, true);
2583 r = ConvertResult(err);
2584 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera enabling display visible failed. displayHandle:%d, Process:%b",
2585 GetErrorMessage(r), __previewRegionHandle, __previewProcessing);
2587 camera_rotation_e attr = ::CAMERA_ROTATION_NONE;
2588 r = _CameraUtil::GetMmRotation(__displayRotationType, attr);
2589 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
2591 err = camera_set_x11_display_rotation(__handle, attr);
2592 r = ConvertResult(err);
2593 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera rotate display failed. displayHandle:%d, Process:%b, __displayRotationType:%d",
2594 GetErrorMessage(r), __previewRegionHandle, __previewProcessing, __displayRotationType);
2600 err = camera_set_display(__handle, ::CAMERA_DISPLAY_TYPE_NONE, null);
2601 r = ConvertResult(err);
2602 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera set display(null) failed. Process:%b", GetErrorMessage(r), __previewProcessing);
2605 if (reload & _RELOAD_FOCUS_MODE)
2607 _CameraOperationType operation = _COP_NONE;
2608 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_FOCUS_MODE : _COP_SECONDARY_FOCUS_MODE);
2610 if ( _CameraCapability::IsSupported(operation))
2612 r = ChangeFocusModeTo(__focusMode, __focusMode);
2613 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. focus mode is %d", GetErrorMessage(r), __focusMode);
2616 if (reload & _RELOAD_METERING_MODE)
2618 _CameraOperationType operation = _COP_NONE;
2619 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_METERING_MODE : _COP_SECONDARY_METERING_MODE);
2621 if ( _CameraCapability::IsSupported(operation))
2623 camera_attr_exposure_mode_e attr = ::CAMERA_ATTR_EXPOSURE_MODE_OFF;
2624 r = _CameraUtil::GetMmMeteringMode(__meteringMode, attr);
2625 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. metering:%d", GetErrorMessage(r), __meteringMode);
2627 err = camera_attr_set_exposure_mode(__handle, attr);
2628 r = ConvertResult(err);
2629 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. metering:%d", GetErrorMessage(r), __meteringMode);
2632 if (reload & _RELOAD_EXTRA)
2634 err = camera_attr_enable_tag(__handle, true);
2635 r = ConvertResult(err);
2636 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] camera enabling tag failed.", GetErrorMessage(r));
2645 _CameraImpl::LoadDefaultConfiguration(int reload)
2647 result r = E_SUCCESS;
2648 Object* pObj = null;
2649 SysLog(NID_MEDIA, "Enter.");
2651 // Preview resolution
2652 if (reload & _RELOAD_PREVIEW_RESOLUTION)
2654 _CameraOperationType operation = _COP_NONE;
2655 _ResultType itemType = _RESULT_NONE;
2656 Dimension* pDim = null;
2658 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_PREVIEW_RESOLUTION : _COP_SECONDARY_PREVIEW_RESOLUTION);
2659 pObj = _CameraCapability::GetValueN(operation, _QUERY_DEFAULT_VALUE, itemType);
2660 SysTryCatch(NID_MEDIA, itemType == _RESULT_DIMENSION, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. The type is wrong. itemType:%d", itemType);
2661 pDim = dynamic_cast<Dimension*>(pObj);
2662 SysTryCatch(NID_MEDIA, pDim != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. The item is wrong. preview resolution.");
2663 __deviceDefaultPreviewResolution = *pDim;
2667 __previewResolution = __deviceDefaultPreviewResolution;
2670 // Capture resolution
2671 if (reload & _RELOAD_CAPTURE_RESOLUTION)
2673 _CameraOperationType operation = _COP_NONE;
2674 _ResultType itemType = _RESULT_NONE;
2675 Dimension* pDim = null;
2677 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_CAPTURE_RESOLUTION : _COP_SECONDARY_CAPTURE_RESOLUTION);
2678 pObj = _CameraCapability::GetValueN(operation, _QUERY_DEFAULT_VALUE, itemType);
2679 SysTryCatch(NID_MEDIA, itemType == _RESULT_DIMENSION, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. The type is wrong. itemType:%d", itemType);
2680 pDim = dynamic_cast<Dimension*>(pObj);
2681 SysTryCatch(NID_MEDIA, pDim != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. The item is wrong. capture resolution.");
2682 __deviceDefaultCaptureResolution = *pDim;
2686 __captureResolution = __deviceDefaultCaptureResolution;
2690 if (reload & _RELOAD_PREVIEW_FORMAT)
2692 _CameraOperationType operation = _COP_NONE;
2693 _ResultType itemType = _RESULT_NONE;
2694 Integer *pInteger = null;
2696 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_PREVIEW_FORMAT : _COP_SECONDARY_PREVIEW_FORMAT);
2697 pObj = _CameraCapability::GetValueN(operation, _QUERY_DEFAULT_VALUE, itemType);
2698 SysTryCatch(NID_MEDIA, itemType == _RESULT_INTEGER, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. The type is wrong. itemType:%d", itemType);
2699 pInteger = dynamic_cast<Integer*>(pObj);
2700 SysTryCatch(NID_MEDIA, pInteger != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. The item is wrong. preview format.");
2701 __deviceDefaultPreviewFormat = (Tizen::Graphics::PixelFormat)pInteger->ToInt();
2705 __previewFormat = __deviceDefaultPreviewFormat;
2709 if (reload & _RELOAD_CAPTURE_FORMAT)
2711 _CameraOperationType operation = _COP_NONE;
2712 _ResultType itemType = _RESULT_NONE;
2713 Integer *pInteger = null;
2715 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_CAPTURE_FORMAT : _COP_SECONDARY_CAPTURE_FORMAT);
2716 pObj = _CameraCapability::GetValueN(operation, _QUERY_DEFAULT_VALUE, itemType);
2717 SysTryCatch(NID_MEDIA, itemType == _RESULT_INTEGER, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. The type is wrong. itemType:%d", itemType);
2718 pInteger = dynamic_cast<Integer*>(pObj);
2719 SysTryCatch(NID_MEDIA, pInteger != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] A system error has been occurred. The item is wrong. capture format.");
2720 __deviceDefaultCaptureFormat = (Tizen::Graphics::PixelFormat)pInteger->ToInt();
2724 __captureFormat = __deviceDefaultCaptureFormat;
2728 if (reload & _RELOAD_FOCUS_MODE)
2730 String key = (__selection == CAMERA_PRIMARY ? CAMERA_PRIMARY_FOCUS_MODE : CAMERA_SECONDARY_FOCUS_MODE);
2731 std::unique_ptr <IList, _ListPtrUtil::Remover> pSupportedList (GetPropertyListN(key), _ListPtrUtil::remover);
2733 if (pSupportedList.get() != null)
2735 if (pSupportedList->GetCount() > 0)
2737 __focusMode = CAMERA_FOCUS_MODE_NORMAL;
2742 __focusMode = CAMERA_FOCUS_MODE_NONE;
2747 if (reload & _RELOAD_ZERO_SHUTTER_LAG)
2749 _CameraOperationType operation = _COP_NONE;
2750 _ResultType itemType = _RESULT_NONE;
2751 Integer *pInteger = null;
2753 operation = (__selection == CAMERA_PRIMARY ? _COP_PRIMARY_ZERO_SHUTTER_LAG: _COP_SECONDARY_ZERO_SHUTTER_LAG);
2754 pObj = _CameraCapability::GetValueN(operation, _QUERY_DEFAULT_VALUE, itemType);
2755 SysTryCatch(NID_MEDIA, itemType == _RESULT_INTEGER, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] The type is wrong. itemType:%d", itemType);
2756 pInteger = dynamic_cast<Integer*>(pObj);
2757 SysTryCatch(NID_MEDIA, pInteger != null, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] The item is wrong. Zero shutter lag.");
2758 __zeroShutterLag = (bool)pInteger->ToInt();
2764 if (reload & _RELOAD_METERING_MODE)
2766 String key = (__selection == CAMERA_PRIMARY ? CAMERA_PRIMARY_METERING_MODE : CAMERA_SECONDARY_METERING_MODE);
2767 std::unique_ptr <IList, _ListPtrUtil::Remover> pSupportedList (GetPropertyListN(key), _ListPtrUtil::remover);
2769 if (pSupportedList.get() != null)
2771 if (pSupportedList->GetCount() > 0)
2773 __meteringMode = CAMERA_METERING_MODE_AVERAGE;
2778 __meteringMode = CAMERA_METERING_MODE_NONE;
2793 _CameraImpl::ChangeFocusModeTo(CameraFocusMode currentMode, CameraFocusMode destMode)
2795 result r = E_SUCCESS;
2796 int tableTotalCount = 0;
2798 int err = MM_SUCCESS;
2800 tableTotalCount = sizeof(_CAMERA_FOCUS_MODE_TRANSIT) / sizeof(_CAMERA_FOCUS_MODE_TRANSIT[0]);
2801 SysLog(NID_MEDIA, " currentMode:%d, destMode:%d, tableTotalCount:%d", currentMode, destMode, tableTotalCount);
2803 for (i = 0; i < tableTotalCount; i++)
2805 if (currentMode == _CAMERA_FOCUS_MODE_TRANSIT[i].currentMode && destMode == _CAMERA_FOCUS_MODE_TRANSIT[i].destMode)
2807 SysLog(NID_MEDIA, "Exist the matching mode field. loop i:%d, current mode:%d, destMode:%d, operation0:%d", i, currentMode, destMode, _CAMERA_FOCUS_MODE_TRANSIT[i].focusOperation0);
2808 switch (_CAMERA_FOCUS_MODE_TRANSIT[i].focusOperation0)
2810 case _FOCUS_MODE_OP_NONE:
2812 case _FOCUS_MODE_OP_CONTINUOUS:
2814 case _FOCUS_MODE_OP_CANCEL:
2815 err = camera_cancel_focusing(__handle);
2816 r = ConvertResult(err);
2817 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Failed to cancel focus.", GetErrorMessage(r));
2823 // Set the mm's focus mode.
2824 camera_attr_af_mode_e attr = ::CAMERA_ATTR_AF_NONE;
2825 r = _CameraUtil::GetMmFocusMode(destMode, attr);
2826 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. focus mode:%d", GetErrorMessage(r), destMode);
2828 err = camera_attr_set_af_mode (__handle, attr);
2829 r = ConvertResult(err);
2830 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Failed to set the focus mode", GetErrorMessage(r));
2832 switch (_CAMERA_FOCUS_MODE_TRANSIT[i].focusOperation1)
2834 case _FOCUS_MODE_OP_NONE:
2836 case _FOCUS_MODE_OP_CONTINUOUS:
2837 err = camera_start_focusing(__handle, true);
2838 r = ConvertResult(err);
2839 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Failed to start continuous focusing", GetErrorMessage(r));
2841 case _FOCUS_MODE_OP_CANCEL:
2849 SysTryCatch(NID_MEDIA, i != tableTotalCount, r = E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Not found. ");
2853 SysLog(NID_MEDIA, "[%s] Real currentMode:%d, param destMode:%d", GetErrorMessage(r), currentMode, destMode);
2858 _CameraImpl::HandleAutoFocus(CameraFocusMode currentMode)
2860 result r = E_SUCCESS;
2861 int tableTotalCount = 0;
2863 int err = MM_SUCCESS;
2865 tableTotalCount = sizeof(_CAMERA_FOCUS_OPERATIONT) / sizeof(_CAMERA_FOCUS_OPERATIONT[0]);
2866 SysLog(NID_MEDIA, "Current mode:%d", currentMode);
2868 for (i = 0; i < tableTotalCount; i++)
2870 if (currentMode == _CAMERA_FOCUS_OPERATIONT[i].currentMode)
2872 SysLog(NID_MEDIA, "Exist the matching mode field. loop i:%d, current mode:%d, operation:%d", i, currentMode, _CAMERA_FOCUS_OPERATIONT[i].focusOperation);
2873 switch (_CAMERA_FOCUS_OPERATIONT[i].focusOperation)
2875 case _FOCUS_OP_NONE:
2877 case _FOCUS_OP_ONCE:
2878 err = camera_start_focusing(__handle, false);
2879 r = ConvertResult(err);
2880 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Failed to start focus once.", GetErrorMessage(r));
2886 if (_CAMERA_FOCUS_OPERATIONT[i].state >= CAMERA_STATE_INITIALIZED && _CAMERA_FOCUS_OPERATIONT[i].state <= CAMERA_STATE_ERROR)
2888 SetState(_CAMERA_FOCUS_OPERATIONT[i].state);
2889 SysLog(NID_MEDIA, "Set the state to %d", _CAMERA_FOCUS_OPERATIONT[i].state);
2894 SysTryCatch(NID_MEDIA, i != tableTotalCount, r = E_INVALID_STATE, E_INVALID_STATE, "[E_INVALID_STATE] Not found. ");
2898 SysLog(NID_MEDIA, "[%s] Current mode:%d", GetErrorMessage(r), currentMode);
2903 _CameraImpl::OnCameraCoordinatorModeChangePrepared(_CameraMode mode)
2905 result r = E_SUCCESS;
2906 SysLog(NID_MEDIA, "Mode:%d", mode);
2908 r = ReloadConfiguration(_RELOAD_PREVIEW_RESOLUTION | _RELOAD_CAPTURE_RESOLUTION | _RELOAD_INTERNAL_PREVIEW_FORMAT
2909 | _RELOAD_CAPTURE_FORMAT | _RELOAD_FPS | _RELOAD_FLIP | _RELOAD_PREVIEW_ROTATION | _RELOAD_PREVIEW_PREPARE);
2910 SysTryReturn(NID_MEDIA, r == E_SUCCESS, r, r, "[%s] Propagating", GetErrorMessage(r));
2912 SysLog(NID_MEDIA, "Pre mode changed operation succeeded.");
2917 _CameraImpl::OnCameraCoordinatorModeChanged(_CameraMode mode)
2919 result r = E_SUCCESS;
2920 SysLog(NID_MEDIA, "Mode:%d", mode);
2922 r = ReloadConfiguration(_RELOAD_BRIGHTNESS | _RELOAD_CONTRAST | _RELOAD_EXPOSURE | _RELOAD_MAX_ZOOM_LEVEL | _RELOAD_ZOOM_LEVEL | _RELOAD_EFFECT
2923 | _RELOAD_WB | _RELOAD_QUALITY | _RELOAD_ISO | _RELOAD_EXIF_ORIENTATION | _RELOAD_EXIF_GPS_COORDINATES
2924 | _RELOAD_FLASH | _RELOAD_FOCUS_MODE | _RELOAD_METERING_MODE
2926 SysTryReturn(NID_MEDIA, r == E_SUCCESS, r, r, "[%s] Propagating", GetErrorMessage(r));
2928 SysLog(NID_MEDIA, "Post mode changed operation succeeded.");
2933 _CameraImpl::StateChangedCb(camera_state_e previous, camera_state_e current, bool byPolicy, void *pUserData)
2935 _CameraImpl* pImpl = static_cast<_CameraImpl*>( pUserData);
2936 SysTryReturn(NID_MEDIA, _CameraImpl::IsAlive(), , E_INVALID_OPERATION, "[E_INVALID_OPERATION] The object was already destroyed.");
2937 SysTryReturn(NID_MEDIA, pImpl != null, , E_OBJ_NOT_FOUND, "[%s] _CameraImpl instance is not available.", GetErrorMessage(E_OBJ_NOT_FOUND));
2938 SysLog(NID_MEDIA, "State previous:%d, current:%d, byPolicy:%d", previous, current, byPolicy);
2942 _CameraImpl::CaptureCb(camera_image_data_s* pImage, camera_image_data_s *pPostview, camera_image_data_s* pThumbnail, void* pUserData)
2944 result r = E_SUCCESS;
2945 _CameraImpl* pImpl = static_cast<_CameraImpl*>(pUserData);
2946 MediaPixelFormat format = MEDIA_PIXEL_FORMAT_NONE;
2948 SysTryReturn(NID_MEDIA, _CameraImpl::IsAlive(), , E_INVALID_OPERATION, "[E_INVALID_OPERATION] The object was already destroyed.");
2949 SysTryReturn(NID_MEDIA, pImpl != null, , E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] _CameraImpl is null.");
2950 SysTryReturn(NID_MEDIA, pImpl->GetState() == CAMERA_STATE_CAPTURING, , E_INVALID_STATE, "[E_INVALID_STATE] The camera is already capturing");
2951 SysTryCatch(NID_MEDIA, pImage != null, r = E_OBJ_NOT_FOUND, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] image is null.");
2952 SysLog(NID_MEDIA, "Enter. image size:%d, format:%d", pImage->size, pImage->format);
2954 _CameraUtil::GetOspMediaPixelFormat(pImage->format, format, ratio);
2955 if (format == MEDIA_PIXEL_FORMAT_NONE) // if the encoded data
2957 _CameraBuffer cameraBuffer;
2958 CodecType codec = CODEC_NONE;
2960 _CameraUtil::GetOspCodecType(pImage->format, codec);
2961 r = cameraBuffer.Construct(pImage->size, _CAMERA_BUFFER_CAPTURE, codec, true, pImage->width, pImage->height);
2962 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. size:%d, format%d", GetErrorMessage(r), pImage->size, pImage->format);
2964 r = cameraBuffer.SetArray((byte*) pImage->data, 0, pImage->size);
2965 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. data:%d, size:%d", GetErrorMessage(r), (int) pImage->data, pImage->size);
2966 cameraBuffer.Flip();
2968 r = pImpl->EnqueueData(cameraBuffer);
2969 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. data:%d, size:%d", GetErrorMessage(r), (int) pImage->data, pImage->size);
2971 else // if the raw data
2973 _CameraBuffer cameraBuffer;
2975 r = cameraBuffer.Construct(pImage->size, _CAMERA_BUFFER_CAPTURE, format, pImage->width, pImage->height);
2976 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. size:%d, format%d", GetErrorMessage(r), pImage->size, pImage->format);
2978 r = cameraBuffer.SetArray((byte*) pImage->data, 0, pImage->size);
2979 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. data:%d, size:%d", GetErrorMessage(r), (int) pImage->data, pImage->size);
2980 cameraBuffer.Flip();
2982 r = pImpl->EnqueueData(cameraBuffer);
2983 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. data:%d, size:%d", GetErrorMessage(r), (int) pImage->data, pImage->size);
2988 SysLogException(NID_MEDIA, E_INVALID_DATA, "[E_INVALID_DATA] Invalid data is captured.");
2993 _CameraImpl::CaptureCompletedCb(void *pUserData)
2995 result r = E_SUCCESS;
2996 ByteBuffer* pBuffer = null;
2997 _CameraImpl* pImpl = static_cast<_CameraImpl*>(pUserData);
2998 SysLog(NID_MEDIA, "CaptureCompletedCb");
3000 SysTryReturn(NID_MEDIA, _CameraImpl::IsAlive(), , E_INVALID_OPERATION, "[E_INVALID_OPERATION] The object was already destroyed.");
3001 SysTryReturn(NID_MEDIA, pImpl != null, , E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] _CameraImpl instance is not available.");
3002 // SysTryReturn(NID_MEDIA, pImpl->GetState() == CAMERA_STATE_CAPTURING, , E_INVALID_STATE, "[E_INVALID_STATE] Camera is in an invalid state. The camera is already power-offed");
3004 pBuffer = pImpl->DequeueDataN(_CAMERA_BUFFER_CAPTURE);
3005 if (pBuffer != null)
3007 SysLog(NID_MEDIA, "Captured data sending. size is %d", pBuffer->GetLimit());
3008 if (pBuffer->GetLimit() > 0)
3010 r = pImpl->GetEvent()->SendEvent(_CAMERA_EVENT_CAPTURED, CAMERA_ERROR_NONE, E_SUCCESS, pBuffer);
3011 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
3015 SysLogException(NID_MEDIA, E_INVALID_DATA, "[E_INVALID_DATA] The captured data is invalid.");
3016 r = pImpl->GetEvent()->SendEvent(_CAMERA_EVENT_CAPTURED, CAMERA_ERROR_DEVICE_FAILED, E_INVALID_DATA, pBuffer);
3017 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
3024 SysLogException(NID_MEDIA, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Out of memory for capturing anymore.");
3025 r = pImpl->GetEvent()->SendEvent(_CAMERA_EVENT_CAPTURED, CAMERA_ERROR_OUT_OF_MEMORY, E_OUT_OF_MEMORY, null);
3026 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
3031 if (pBuffer != null)
3039 _CameraImpl::SetPreprocessingCb(_CameraPreprocessingCallback pPreProcessCbFunc, void* pPreProcessUserData)
3041 if (pPreProcessCbFunc != null)
3043 __previewProcessing = __previewProcessing | _PREVIEW_PRE_PROCESSING;
3047 __previewProcessing = __previewProcessing & (~_PREVIEW_PRE_PROCESSING);
3050 __pPreProcessCbFunc = pPreProcessCbFunc;
3051 __pPreProcessUserData = pPreProcessUserData;
3055 _CameraImpl::GetPreprocessingCb(_CameraPreprocessingCallback& pPreProcessCbFunc, void*& pPreProcessUserData)
3057 pPreProcessCbFunc = __pPreProcessCbFunc;
3058 pPreProcessUserData= __pPreProcessUserData;
3062 _CameraImpl::PreviewCb(camera_preview_data_s *pFrame, void *pUserData)
3064 result r = E_SUCCESS;
3066 _CameraImpl* pImpl = static_cast<_CameraImpl*>(pUserData);
3068 SysTryReturn(NID_MEDIA, _CameraImpl::IsAlive(), , E_INVALID_OPERATION, "[E_INVALID_OPERATION] The object was already destroyed.");
3069 SysTryReturn(NID_MEDIA, pImpl != null, , E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] _CameraImpl instance is not available.");
3070 SysTryReturn(NID_MEDIA, pFrame != null, , E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] camera_preview_data_s instance is not available.");
3071 SysLog(NID_MEDIA, "Enter. preview format:%d, width:%d, height:%d, num_of_planes:%d", pFrame->format, pFrame->width, pFrame->height, pFrame->num_of_planes);
3073 queueCount = pImpl->GetDataCount(_CAMERA_BUFFER_PREVIEW);
3074 if (queueCount < _MAX_PREVIEW_BUFFER_COUNT)
3076 int previewProcessing = pImpl->GetPreviewProcessing();
3077 if (previewProcessing & _PREVIEW_PRE_PROCESSING)
3081 byte* data[4] = {0,};
3082 if (pFrame->num_of_planes == 1)
3084 size[0] = pFrame->data.single_plane.size;
3085 data[0] = pFrame->data.single_plane.yuv;
3088 else if (pFrame->num_of_planes == 2)
3090 size[0] = pFrame->data.double_plane.y_size;
3091 size[1] = pFrame->data.double_plane.uv_size;
3092 data[0] = pFrame->data.double_plane.y;
3093 data[1] = pFrame->data.double_plane.uv;
3095 else if (pFrame->num_of_planes == 3)
3097 size[0] = pFrame->data.triple_plane.y_size;
3098 size[1] = pFrame->data.triple_plane.u_size;
3099 size[2] = pFrame->data.triple_plane.v_size;
3100 data[0] = pFrame->data.triple_plane.y;
3101 data[1] = pFrame->data.triple_plane.u;
3102 data[2] = pFrame->data.triple_plane.v;
3104 MediaPixelFormat mediaFormat = MEDIA_PIXEL_FORMAT_NONE;
3106 _CameraUtil::GetOspMediaPixelFormat(pFrame->format, mediaFormat, ratio);
3108 _CameraPreprocessingCallback pPreProcessCbFunc = null;
3109 void* pPreProcessUserData = null;
3110 pImpl->GetPreprocessingCb(pPreProcessCbFunc, pPreProcessUserData);
3112 (pPreProcessCbFunc)(mediaFormat, data, size, pPreProcessUserData);
3115 if (previewProcessing & _PREVIEW_POST_PROCESSING)
3117 int mmPreviewSize = 0;
3118 _CameraBuffer mmCameraBuffer;
3119 MediaPixelFormat format = MEDIA_PIXEL_FORMAT_NONE;
3122 _CameraUtil::GetOspMediaPixelFormat(pFrame->format, format, ratio);
3124 if (pFrame->num_of_planes == 1)
3126 int yuvSize = pFrame->data.single_plane.size;
3127 mmPreviewSize = yuvSize;
3129 r = mmCameraBuffer.Construct( yuvSize, _CAMERA_BUFFER_PREVIEW, format, pFrame->width, pFrame->height);
3130 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. size:%d", GetErrorMessage(r), mmPreviewSize);
3132 r = mmCameraBuffer.SetArray((byte*)pFrame->data.single_plane.yuv, 0, yuvSize);
3133 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. size:%d", GetErrorMessage(r), mmPreviewSize);
3135 mmCameraBuffer.Flip();
3137 else if (pFrame->num_of_planes == 2)
3139 int ySize = pFrame->data.double_plane.y_size;
3140 int uvSize = pFrame->data.double_plane.uv_size;
3141 mmPreviewSize = ySize + uvSize;
3143 r = mmCameraBuffer.Construct(mmPreviewSize, _CAMERA_BUFFER_PREVIEW, format, pFrame->width, pFrame->height);
3144 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. size:%d", GetErrorMessage(r), mmPreviewSize);
3146 r = mmCameraBuffer.SetArray((byte*)pFrame->data.double_plane.y, 0, ySize);
3147 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. size:%d", GetErrorMessage(r), ySize);
3149 r = mmCameraBuffer.SetArray((byte*)pFrame->data.double_plane.uv, 0, uvSize);
3150 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. size:%d", GetErrorMessage(r), uvSize);
3152 mmCameraBuffer.Flip();
3154 else if (pFrame->num_of_planes == 3)
3156 int ySize = pFrame->data.triple_plane.y_size;
3157 int uSize = pFrame->data.triple_plane.u_size;
3158 int vSize = pFrame->data.triple_plane.v_size;
3159 mmPreviewSize = ySize + uSize + vSize;
3161 r = mmCameraBuffer.Construct(mmPreviewSize, _CAMERA_BUFFER_PREVIEW, format, pFrame->width, pFrame->height);
3162 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. size:%d", GetErrorMessage(r), mmPreviewSize);
3164 r = mmCameraBuffer.SetArray((byte*)pFrame->data.triple_plane.y, 0, ySize);
3165 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. size:%d", GetErrorMessage(r), ySize);
3167 r = mmCameraBuffer.SetArray((byte*)pFrame->data.triple_plane.u, 0, uSize);
3168 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. size:%d", GetErrorMessage(r), uSize);
3170 r = mmCameraBuffer.SetArray((byte*)pFrame->data.triple_plane.v, 0, vSize);
3171 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. size:%d", GetErrorMessage(r), vSize);
3173 mmCameraBuffer.Flip();
3176 r = pImpl->EnqueueData(mmCameraBuffer);
3177 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating. size:%d", GetErrorMessage(r), mmPreviewSize);
3179 r = pImpl->GetEvent()->SendEvent(_CAMERA_EVENT_PREVIEWED_DATA, CAMERA_ERROR_NONE, E_SUCCESS, null); // For the performance, we don't copy the preview data to the event argument.
3180 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
3186 SysLogException(NID_MEDIA, E_INVALID_DATA, "[E_INVALID_DATA] Invalid data is streamed..");
3187 if (queueCount < pImpl->GetDataCount(_CAMERA_BUFFER_PREVIEW)) // if the queue is increased.
3189 ByteBuffer* pBuffer = null;
3190 pBuffer = pImpl->DequeueDataN(_CAMERA_BUFFER_PREVIEW);
3200 _CameraImpl::InterruptedCb(camera_policy_e policy, camera_state_e previous, camera_state_e current, void *pUserData)
3202 result r = E_SUCCESS;
3203 _CameraImpl* pImpl = static_cast<_CameraImpl*>(pUserData);
3204 SysLog(NID_MEDIA, "InterruptedCb called, policy is %d, previous state is %d, current state is %d, pUserData address is %x ", policy, previous, current, pUserData );
3205 SysTryReturn(NID_MEDIA, _CameraImpl::IsAlive(), , E_INVALID_OPERATION, "[E_INVALID_OPERATION] The object was already destroyed.");
3206 SysTryReturn(NID_MEDIA, pImpl != null, , E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] _CameraImpl instance is not available.");
3207 SysTryReturn(NID_MEDIA, pImpl->IsPoweredOn() == true, , E_INVALID_OPERATION ,"The camera is already power-offed");
3208 r = pImpl->GetEvent()->SendEvent(_CAMERA_EVENT_ERROR, CAMERA_ERROR_DEVICE_INTERRUPTED, E_DEVICE_FAILED, null);
3209 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "Sending camera interrupted failed [%s] .", GetErrorMessage(r));
3215 _CameraImpl::FocusStateChangedCb(camera_focus_state_e state, void *pUserData)
3217 result r = E_SUCCESS;
3218 _CameraImpl* pImpl = static_cast<_CameraImpl*>(pUserData);
3219 CameraErrorReason cameraErrorReason = CAMERA_ERROR_NONE;
3220 result cameraResult = E_SUCCESS;
3221 SysTryReturn(NID_MEDIA, _CameraImpl::IsAlive(), , E_INVALID_OPERATION, "[E_INVALID_OPERATION] The object was already destroyed.");
3222 SysTryReturn(NID_MEDIA, pImpl != null, , E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] _CameraImpl instance is not available.");
3224 CameraFocusMode focusMode = pImpl->GetFocusMode();
3228 case ::CAMERA_FOCUS_STATE_ONGOING:
3229 if (pImpl->ReadyToAutoFocusCallback())
3231 if (focusMode == CAMERA_FOCUS_MODE_CONTINUOUS_AUTO)
3233 cameraErrorReason = CAMERA_ERROR_NONE;
3234 cameraResult = E_OPERATION_CANCELED;
3235 r = pImpl->GetEvent()->SendEvent(_CAMERA_EVENT_AUTO_FOCUSED, cameraErrorReason, cameraResult, null);
3236 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
3240 case ::CAMERA_FOCUS_STATE_RELEASED:
3242 case ::CAMERA_FOCUS_STATE_FAILED:
3243 cameraErrorReason = CAMERA_ERROR_DEVICE_FAILED;
3244 cameraResult = E_DEVICE_FAILED;
3245 if (pImpl->ReadyToAutoFocusCallback())
3247 r = pImpl->GetEvent()->SendEvent(_CAMERA_EVENT_AUTO_FOCUSED, cameraErrorReason, cameraResult, null);
3248 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
3250 else // No auto focus event is fired.
3252 if (pImpl->GetState() == CAMERA_STATE_AUTO_FOCUSING)
3254 pImpl->SetState(CAMERA_STATE_PREVIEW);
3258 case ::CAMERA_FOCUS_STATE_FOCUSED:
3259 if (pImpl->ReadyToAutoFocusCallback())
3261 r = pImpl->GetEvent()->SendEvent(_CAMERA_EVENT_AUTO_FOCUSED, cameraErrorReason, cameraResult, null);
3262 SysTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
3264 else // No auto focus event is fired.
3266 if (pImpl->GetState() == CAMERA_STATE_AUTO_FOCUSING)
3268 pImpl->SetState(CAMERA_STATE_PREVIEW);
3282 _CameraImpl::IsAlive(void)
3288 _CameraImpl::GetInstance(Camera *pCamera)
3290 if ( pCamera != null)
3292 return pCamera->__pImpl;
3298 _CameraImpl::GetInstance(const Camera *pCamera)
3300 if ( pCamera != null)
3302 return pCamera->__pImpl;