Tizen 2.0 Release
[framework/osp/media.git] / src / FMedia_CameraCapability.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /**
19 * @file                 FMedia_CameraCapability.h
20 * @brief                This header file contains the implementation header for camera capability.
21 *
22 */
23 #ifndef _FMEDIA_INTERNAL_CAMERA_CAPABILITY_H_
24 #define _FMEDIA_INTERNAL_CAMERA_CAPABILITY_H_
25
26 #include <FBaseObject.h>
27 #include <FBaseColHashMapT.h>
28 #include <FBaseColArrayList.h>
29 #include <FGrpDimension.h>
30 #include "FMedia_CameraTypes.h"
31 #include "FMedia_CapabilityTypes.h"
32 #include "FMedia_CameraRefHelper.h"
33
34 namespace Tizen { namespace Media
35 {
36
37 class _CameraCapabilitySafeHashMapT;
38 typedef Tizen::Base::Object* (*_CameraQueryFunc)(_CameraDeviceType, _QueryType, _ResultType&);
39 /**
40 * @class        _CameraCapability
41 * @brief        This class is common for camera and recorder and media capability.
42 *
43 */
44 class _CameraCapability
45         : public _CameraRefHelper
46 {
47 public:
48         /**
49         * Get the instance of _CameraCapability.
50         *
51         * @return               The _CameraCapability instance
52         * @param[in]    cameraDevice                    The camcorder device id.
53         * @exception    E_SUCCESS                               The method is successful.
54         * @exception    E_SYSTEM                                A system error has occurred.
55         * @exception    E_DEVICE_BUSY                   The device cannot be approached because of other operations.
56         * @exception    E_DEVICE_UNAVAILABLE    The device is unavailable.
57         */
58         static _CameraCapability* AddInstance(_CameraDeviceType cameraDevice);
59
60         /**
61         * Release the specific _CameraCapability
62         *
63         * @param[in]    cameraDevice                    The camera device type
64         */
65         static void Release(_CameraDeviceType cameraDevice);
66
67         /**
68         * function to get the  for specific key type
69         *
70         * @return               IList*
71         * @param[in]    key                                             camera operation query key
72         * @param[out]   itemType                                Item type of returned Object
73         * @exception    E_SUCCESS                               The method is successful.
74         * @exception    E_OBJ_NOT_FOUND                 invalid key
75         * @exception    E_SYSTEM                                A system error has occurred.
76         * @exception    E_UNSUPPORTED_OPERATION   operation not supported
77         */
78         static Tizen::Base::Collection::ArrayList* GetListN(_CameraOperationType key, _ResultType& itemType);
79
80         /**
81         * function to check the feature support
82         *
83         * @return               bool
84         * @param[in]    key                                             camera operation query key
85         * @exception    E_SUCCESS                               The method is successful.
86         * @exception    E_SYSTEM                                A system error has occurred.
87         * @exception    E_OUT_OF_MEMORY                 system has no memory
88         * @exception    E_OBJ_NOT_FOUND                 invalid key
89         * @exception    E_UNSUPPORTED_OPERATION   operation not supported
90         */
91         static bool IsSupported(_CameraOperationType key);
92
93         /**
94         * function to get the default value for a specific key
95         *
96         * @return               Object
97         * @param[in]    key                                             camera operation query key
98         * @param[in] queryType                          Query of what property is requested
99         * @param[out]   itemType                                Item type of returned Object
100         * @exception    E_SUCCESS                               The method is successful.
101         * @exception    E_SYSTEM                                A system error has occurred.
102         * @exception    E_OUT_OF_MEMORY                 system has no memory
103         * @exception    E_OBJ_NOT_FOUND                 invalid key
104         * @exception    E_UNSUPPORTED_OPERATION   operation not supported
105         */
106         static Tizen::Base::Object* GetValueN(_CameraOperationType key, _QueryType queryType, _ResultType& itemType);
107
108         /**
109         * Gets the device selection.
110         *
111         * @return                  The device selection
112         */
113         _CameraDeviceType GetDevice(void) const;
114
115         /**
116         * Gets the camera's handle
117         *
118         * @return                  The camera handle
119         */
120         _CameraHandle GetHandle(void) const;
121
122         enum AttributeType
123         {
124                 ATTR_PREVIEW_FORMAT,
125                 ATTR_CAPTURE_FORMAT,
126                 ATTR_FLASH_MODE,
127                 ATTR_EFFECT_MODE,
128                 ATTR_FPS,
129                 ATTR_ISO_LEVEL,
130                 ATTR_WHITE_BALANCE,
131                 ATTR_SCENE_MODE,
132                 ATTR_EXPOSURE_MODE,
133                 ATTR_AUTO_FOCUS_MODE,
134         };
135
136         enum AttributeResType
137         {
138                 ATTR_RES_PREVIEW,
139                 ATTR_RES_CAPTURE,
140         };
141         /**
142         * Gets the camera's initial resolution
143         *
144         * @param[in]    opType                          The resolution operationType.
145         * @param[out]   width                           The initial width.
146         * @param[out]   height                          The initial height.
147         */
148         void GetInitResolution(AttributeResType opType, int &width, int &height) const;
149
150         /**
151         * Gets the camera's initial value
152         *
153         * @param[in]    opType                          The operationType.
154         * @param[out]   mmAttr                          The mm attribute
155         */
156         void GetInitValue(AttributeType opType, int& mmAttr) const;
157
158         /**
159         * function to get the supported frame rate at each preview resolution.
160         *
161         * @return               Object
162         * @param[in]    camSel                                  camera type [primary/secondary]
163         * @param[in]    queryType                               Query of what property is requested
164         * @param[in]    dim                                             parameter to specify the preview resolution
165         * @param[out]   itemType                                Item type of returned Object
166         * @exception    E_SUCCESS                               The method is successful.
167         * @exception    E_SYSTEM                                A system error has occurred.
168         * @exception    E_OUT_OF_MEMORY                 system has no memory
169         * @exception    E_OBJ_NOT_FOUND                 invalid key
170         */
171         static Tizen::Base::Object* GetSupportedPreviewFrameRateN(_CameraDeviceType deviceType, _QueryType queryType, const Tizen::Graphics::Dimension &dim, _ResultType& itemType);
172
173 private:
174         friend class _CameraCapabilitySafeHashMapT;
175
176         typedef struct
177         {
178                 _CameraOperationType key;
179                 _CameraDeviceType deviceType;
180                 _CameraQueryFunc serviceRoutine;
181         }keyServiceMap;
182
183         /**
184         *       The constructor.
185         */
186         _CameraCapability(void);
187
188         /**
189         *       The destructor.
190         *       Resources are deallocated by this method.
191         */
192         ~_CameraCapability(void);
193
194         /**
195         * Initializes this instance of _CamcorderCoordinator.
196         *
197         * @return               An error code
198         * @param[in]    cameraDevice                    The camcorder device id.
199         * @exception    E_SUCCESS                               The method is successful.
200         * @exception    E_SYSTEM                                A system error has occurred.
201         * @exception    E_DEVICE_BUSY                   The device cannot be approached because of other operations.
202         * @exception    E_DEVICE_UNAVAILABLE    The device is unavailable.
203         */
204         result Construct(_CameraDeviceType cameraDevice);
205
206         _CameraCapability(const _CameraCapability& rhs);
207         _CameraCapability& operator =(const _CameraCapability& rhs);
208
209         /**
210         * function to get the supported preview resolution
211         *
212         * @return       ArrayList object(Tizen::Graphics::Dimension)
213         * @param[in]    camSel                                  camera type [primary/secondary]
214         * @param[in]    queryType                               Query of what property is requested
215         * @param[out]   itemType                                Item type of returned Object
216         * @exception    E_SUCCESS                               The method is successful.
217         * @exception    E_SYSTEM                                A system error has occurred.
218         * @exception    E_OUT_OF_MEMORY                 system has no memory
219         * @exception    E_OBJ_NOT_FOUND                 invalid key
220         */
221         static Tizen::Base::Object* GetSupportedPreviewResolutionN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
222
223         /**
224         * function to get the supported capture resolution
225         *
226         * @return       ArrayList object(Tizen::Graphics::Dimension)
227         * @param[in]    camSel                                  camera type [primary/secondary]
228         * @param[in]    queryType                               Query of what property is requested
229         * @param[out]   itemType                                Item type of returned Object
230         * @exception    E_SUCCESS                               The method is successful.
231         * @exception    E_SYSTEM                                A system error has occurred.
232         * @exception    E_OUT_OF_MEMORY                 system has no memory
233         * @exception    E_OBJ_NOT_FOUND                 invalid key
234         */
235         static Tizen::Base::Object* GetSupportedCaptureResolutionN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
236
237         /**
238         * function to get the supported recorded resolution
239         *
240         * @return       ArrayList object(Tizen::Graphics::Dimension)
241         * @param[in]    camSel                                  camera type [primary/secondary]
242         * @param[in]    queryType                               Query of what property is requested
243         * @param[out]   itemType                                Item type of returned Object
244         * @exception    E_SUCCESS                               The method is successful.
245         * @exception    E_SYSTEM                                A system error has occurred.
246         * @exception    E_OUT_OF_MEMORY                 system has no memory
247         * @exception    E_OBJ_NOT_FOUND                 invalid key
248         */
249
250         static Tizen::Base::Object* GetSupportedRecordingResolutionN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
251
252         /**
253         * function to get the supported preview format
254         *
255         * @return       ArrayList object(Tizen::Base::Integer)
256         * @param[in]    camSel                                  camera type [primary/secondary]
257         * @param[in]    queryType                               Query of what property is requested
258         * @param[out]   itemType                                Item type of returned Object
259         * @exception    E_SUCCESS                               The method is successful.
260         * @exception    E_SYSTEM                                A system error has occurred.
261         * @exception    E_OUT_OF_MEMORY                 system has no memory
262         * @exception    E_OBJ_NOT_FOUND                 invalid key
263         */
264         static Tizen::Base::Object* GetSupportedPreviewFormatN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
265
266         /**
267         * function to get the supported capture format
268         *
269         * @return       ArrayList object(Tizen::Base::Integer)
270         * @param[in]    camSel                                  camera type [primary/secondary]
271         * @param[in]    queryType                               Query of what property is requested
272         * @param[out]   itemType                                Item type of returned Object
273         * @exception    E_SUCCESS                               The method is successful.
274         * @exception    E_SYSTEM                                A system error has occurred.
275         * @exception    E_OUT_OF_MEMORY                 system has no memory
276         * @exception    E_OBJ_NOT_FOUND                 invalid key
277         */
278         static Tizen::Base::Object* GetSupportedCaptureFormatN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
279
280         /**
281         * function to get the supported auto focus type
282         *
283         * @return       ArrayList object(Tizen::Graphics::Integer)
284         * @param[in]    camSel                                  camera type [primary/secondary]
285         * @param[in]    queryType                               Query of what property is requested
286         * @param[out]   itemType                                Item type of returned Object
287         * @exception    E_SUCCESS                               The method is successful.
288         * @exception    E_SYSTEM                                A system error has occurred.
289         * @exception    E_OUT_OF_MEMORY                 system has no memory
290         * @exception    E_OBJ_NOT_FOUND                 invalid key
291         */
292         static Tizen::Base::Object* GetSupportedFocusModeN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
293
294         /**
295         * function to get the supported effect type
296         *
297         * @return       ArrayList object(Tizen::Base::Integer)
298         * @param[in]    camSel                                  camera type [primary/secondary]
299         * @param[in]    queryType                               Query of what property is requested
300         * @param[out]   itemType                                Item type of returned Object
301         * @exception    E_SUCCESS                               The method is successful.
302         * @exception    E_SYSTEM                                A system error has occurred.
303         * @exception    E_OUT_OF_MEMORY                 system has no memory
304         * @exception    E_OBJ_NOT_FOUND                 invalid key
305         */
306         static Tizen::Base::Object* GetSupportedEffectTypeN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
307
308         /**
309         * function to get the supported frame rate
310         *
311         * @return       ArrayList object(Tizen::Base::Integer)
312         * @param[in]    camSel                                  camera type [primary/secondary]
313         * @param[in]    queryType                               Query of what property is requested
314         * @param[out]   itemType                                Item type of returned Object
315         * @exception    E_SUCCESS                               The method is successful.
316         * @exception    E_SYSTEM                                A system error has occurred.
317         * @exception    E_OUT_OF_MEMORY                 system has no memory
318         * @exception    E_OBJ_NOT_FOUND                 invalid key
319         */
320         static Tizen::Base::Object* GetSupportedPreviewFrameRateN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
321
322         /**
323         * function to get the maximum supported frame rate
324         *
325         * @return       ArrayList object(Tizen::Base::Integer)
326         * @param[in]    camSel                                  camera type [primary/secondary]
327         * @param[out]   itemType                                Item type of returned Object
328         * @exception    E_SUCCESS                               The method is successful.
329         * @exception    E_SYSTEM                                A system error has occurred.
330         * @exception    E_OUT_OF_MEMORY                 system has no memory
331         * @exception    E_OBJ_NOT_FOUND                 invalid key
332         */
333         static Tizen::Base::Object* GetSupportedMaxRecordingFrameRateN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
334
335         /**
336         * function to get the supported ISO level
337         *
338         * @return       ArrayList object(Tizen::Base::Integer)
339         * @param[in]    camSel                                  camera type [primary/secondary]
340         * @param[in]    queryType                               Query of what property is requested
341         * @param[out]   itemType                                Item type of returned Object
342         * @exception    E_SUCCESS                               The method is successful.
343         * @exception    E_SYSTEM                                A system error has occurred.
344         * @exception    E_OUT_OF_MEMORY                 system has no memory
345         * @exception    E_OBJ_NOT_FOUND                 invalid key
346         */
347         static Tizen::Base::Object* GetSupportedIsoLevelN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
348
349         /**
350         * function to get the supported white balance
351         *
352         * @return       ArrayList object(Tizen::Base::Integer)
353         * @param[in]    camSel                                  camera type [primary/secondary]
354         * @param[in]    queryType                               Query of what property is requested
355         * @param[out]   itemType                                Item type of returned Object
356         * @exception    E_SUCCESS                               The method is successful.
357         * @exception    E_SYSTEM                                A system error has occurred.
358         * @exception    E_OUT_OF_MEMORY                 system has no memory
359         * @exception    E_OBJ_NOT_FOUND                 invalid key
360         */
361         static Tizen::Base::Object* GetSupportedWhiteBalanceN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
362
363         /**
364         * function to get the supported shutter speed
365         *
366         * @return       ArrayList object(Tizen::Base::Integer)
367         * @param[in]    camSel                                  camera type [primary/secondary]
368         * @param[in]    queryType                               Query of what property is requested
369         * @param[out]   itemType                                Item type of returned Object
370         * @exception    E_SUCCESS                               The method is successful.
371         * @exception    E_SYSTEM                                A system error has occurred.
372         * @exception    E_OUT_OF_MEMORY                 system has no memory
373         * @exception    E_OBJ_NOT_FOUND                 invalid key
374         */
375         static Tizen::Base::Object* GetSupportedShutterSpeedN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
376
377         /**
378         * function to get the supported scene type
379         *
380         * @return       ArrayList object(Tizen::Base::Integer)
381         * @param[in]    camSel                                  camera type [primary/secondary]
382         * @param[in]    queryType                               Query of what property is requested
383         * @param[out]   itemType                                Item type of returned Object
384         * @exception    E_SUCCESS                               The method is successful.
385         * @exception    E_SYSTEM                                A system error has occurred.
386         * @exception    E_OUT_OF_MEMORY                 system has no memory
387         * @exception    E_OBJ_NOT_FOUND                 invalid key
388         */
389         static Tizen::Base::Object* GetSupportedSceneN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
390
391         /**
392         * function to get the supported metering
393         *
394         * @return       ArrayList object(Tizen::Base::Integer)
395         * @param[in]    camSel                                  camera type [primary/secondary]
396         * @param[in]    queryType                               Query of what property is requested
397         * @param[out]   itemType                                Item type of returned Object
398         * @exception    E_SUCCESS                               The method is successful.
399         * @exception    E_SYSTEM                                A system error has occurred.
400         * @exception    E_OUT_OF_MEMORY                 system has no memory
401         * @exception    E_OBJ_NOT_FOUND                 invalid key
402         */
403         static Tizen::Base::Object* GetSupportedMeteringN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
404
405         /**
406         * function to get the supported aperture
407         *
408         * @return       ArrayList object(Tizen::Base::Integer)
409         * @param[in]    camSel                                  camera type [primary/secondary]
410         * @param[in]    queryType                               Query of what property is requested
411         * @param[out]   itemType                                Item type of returned Object
412         * @exception    E_SUCCESS                               The method is successful.
413         * @exception    E_SYSTEM                                A system error has occurred.
414         * @exception    E_OUT_OF_MEMORY                 system has no memory
415         * @exception    E_OBJ_NOT_FOUND                 invalid key
416         */
417         static Tizen::Base::Object* GetSupportedApertureN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
418
419         /**
420         * function to get the supported zoom type
421         *
422         * @return       ArrayList object(Tizen::Base::Integer)
423         * @param[in]    camSel                                  camera type [primary/secondary]
424         * @param[in]    queryType                               Query of what property is requested
425         * @param[out]   itemType                                Item type of returned Object
426         * @exception    E_SUCCESS                               The method is successful.
427         * @exception    E_SYSTEM                                A system error has occurred.
428         * @exception    E_OUT_OF_MEMORY                 system has no memory
429         * @exception    E_OBJ_NOT_FOUND                 invalid key
430         */
431         static Tizen::Base::Object* GetSupportedZoomTypeN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
432
433         /**
434         * function to get the supported flip type
435         *
436         * @return       ArrayList object(Tizen::Base::Integer)
437         * @param[in]    camSel                                  camera type [primary/secondary]
438         * @param[in]    queryType                               Query of what property is requested
439         * @param[out]   itemType                                Item type of returned Object
440         * @exception    E_SUCCESS                               The method is successful.
441         * @exception    E_SYSTEM                                A system error has occurred.
442         * @exception    E_OUT_OF_MEMORY                 system has no memory
443         * @exception    E_OBJ_NOT_FOUND                 invalid key
444         */
445         static Tizen::Base::Object* GetSupportedFlipTypeN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
446
447         /**
448         * function to get the supported preview rotation type
449         *
450         * @return       ArrayList object(Tizen::Base::Integer)
451         * @param[in]    camSel                                  camera type [primary/secondary]
452         * @param[in]    queryType                               Query of what property is requested
453         * @param[out]   itemType                                Item type of returned Object
454         * @exception    E_SUCCESS                               The method is successful.
455         * @exception    E_SYSTEM                                A system error has occurred.
456         * @exception    E_OUT_OF_MEMORY                 system has no memory
457         * @exception    E_OBJ_NOT_FOUND                 invalid key
458         */
459         static Tizen::Base::Object* GetSupportedPreviewRotationN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
460
461         /**
462         * function to get the supported capture mode
463         *
464         * @return       ArrayList object(Tizen::Base::Integer)
465         * @param[in]    camSel                                  camera type [primary/secondary]
466         * @param[in]    queryType                               Query of what property is requested
467         * @param[out]   itemType                                Item type of returned Object
468         * @exception    E_SUCCESS                               The method is successful.
469         * @exception    E_SYSTEM                                A system error has occurred.
470         * @exception    E_OUT_OF_MEMORY                 system has no memory
471         * @exception    E_OBJ_NOT_FOUND                 invalid key
472         */
473         static Tizen::Base::Object* GetZeroShutterLagN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
474
475         /**
476         * function to get the supported zoom level values (min, max)
477         *
478         * @return       ArrayList object(Tizen::Base::Integer)
479         * @param[in]    camSel                                  camera type [primary/secondary]
480         * @param[in]    queryType                               Query of what property is requested
481         * @param[out]   itemType                                Item type of returned Object
482         * @exception    E_SUCCESS                               The method is successful.
483         * @exception    E_SYSTEM                                A system error has occurred.
484         * @exception    E_OUT_OF_MEMORY                 system has no memory
485         * @exception    E_OBJ_NOT_FOUND                 invalid key
486         */
487         static Tizen::Base::Object* GetSupportedZoomLevelN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
488
489         /**
490         * function to get the camera direction
491         *
492         * @return               (Tizen::Base::Integer) type object
493         * @param[in]    camSel                                  camera type [primary/secondary]
494         * @param[in]    queryType                               Query of what property is requested
495         * @param[out]   itemType                                Item type of returned Object
496         * @exception    E_SUCCESS                               The method is successful.
497         * @exception    E_SYSTEM                                A system error has occurred.
498         * @exception    E_OUT_OF_MEMORY                 system has no memory.
499         * @exception    E_OBJ_NOT_FOUND                 invalid key
500         */
501         static Tizen::Base::Object* GetDirectionN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
502
503         /**
504         * function to get the rotation value
505         *
506         * @return               (Tizen::Base::Integer) type object
507         * @param[in]    camSel                                  camera type [primary/secondary]
508         * @param[in]    queryType                               Query of what property is requested
509         * @param[out]   itemType                                Item type of returned Object
510         * @exception    E_SUCCESS                               The method is successful.
511         * @exception    E_SYSTEM                                A system error has occurred.
512         * @exception    E_OUT_OF_MEMORY                 system has no memory.
513         * @exception    E_OBJ_NOT_FOUND                 invalid key
514         */
515         static Tizen::Base::Object* GetPhysicalRotationN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
516
517         /**
518         * function to get the supported contrast
519         *
520         * @return               The object which contains the values
521         * @param[in]    camSel                                  camera type [primary/secondary]
522         * @param[in]    queryType                               Query of what property is requested
523         * @param[out]   itemType                                Item type of returned Object
524         * @exception    E_SUCCESS                               The method is successful.
525         * @exception    E_SYSTEM                                A system error has occurred.
526         * @exception    E_OUT_OF_MEMORY                 system has no memory.
527         * @exception    E_OBJ_NOT_FOUND                 invalid key
528         */
529         static Tizen::Base::Object* GetSupportedContrastN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
530
531         /**
532         * function to get the supported brightness
533         *
534         * @return               The object which contains the values
535         * @param[in]    camSel                                  camera type [primary/secondary]
536         * @param[in]    queryType                               Query of what property is requested
537         * @param[out]   itemType                                Item type of returned Object
538         * @exception    E_SUCCESS                               The method is successful.
539         * @exception    E_SYSTEM                                A system error has occurred.
540         * @exception    E_OUT_OF_MEMORY                 system has no memory.
541         * @exception    E_OBJ_NOT_FOUND                 invalid key
542         */
543         static Tizen::Base::Object* GetSupportedBrightnessN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
544
545         /**
546         * function to get the supported exposure
547         *
548         * @return               The object which contains the values
549         * @param[in]    camSel                                  camera type [primary/secondary]
550         * @param[in]    queryType                               Query of what property is requested
551         * @param[out]   itemType                                Item type of returned Object
552         * @exception    E_SUCCESS                               The method is successful.
553         * @exception    E_SYSTEM                                A system error has occurred.
554         * @exception    E_OUT_OF_MEMORY                 system has no memory.
555         * @exception    E_OBJ_NOT_FOUND                 invalid key
556         */
557         static Tizen::Base::Object* GetSupportedExposureN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
558
559         /**
560         * function to get the supported exposure mode
561         *
562         * @return               The object which contains the values
563         * @param[in]    camSel                                  camera type [primary/secondary]
564         * @param[in]    queryType                               Query of what property is requested
565         * @param[out]   itemType                                Item type of returned Object
566         * @exception    E_SUCCESS                               The method is successful.
567         * @exception    E_SYSTEM                                A system error has occurred.
568         * @exception    E_OUT_OF_MEMORY                 system has no memory.
569         * @exception    E_OBJ_NOT_FOUND                 invalid key
570         */
571         static Tizen::Base::Object* GetSupportedMeteringModeN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
572
573         /**
574         * function to get the supported flash
575         *
576         * @return               void* (IList*)
577         * @param[in]    camSel                                  camera type [primary/secondary]
578         * @param[in]    queryType                               Query of what property is requested
579         * @param[out]   itemType                                Item type of returned Object
580         * @exception    E_SUCCESS                               The method is successful.
581         * @exception    E_SYSTEM                                A system error has occurred.
582         * @exception    E_OUT_OF_MEMORY                 system has no memory.
583         * @exception    E_OBJ_NOT_FOUND                 invalid key
584         */
585         static Tizen::Base::Object* GetSupportedFlashModeN(_CameraDeviceType deviceType, _QueryType queryType, _ResultType& itemType);
586
587         static bool SupportedCameraPreviewResolutionCb(int width, int height, void* pUserData);
588         static bool SupportedCameraCaptureResolutionCb(int width, int height, void* pUserData);
589         static bool SupportedCameraPreviewFormatCb(camera_pixel_format_e format, void *pUserData);
590         static bool SupportedCameraCaptureFormatCb(camera_pixel_format_e format, void *pUserData);
591         static bool SupportedCameraAttrFlashModeCb(camera_attr_flash_mode_e mode, void *pUserData);
592         static bool SupportedCameraAttrEffectCb(camera_attr_effect_mode_e effect, void *pUserData);
593         static bool SupportedCameraAttrFpsCb(camera_attr_fps_e fps, void *pUserData);
594         static bool SupportedCameraAttrIsoCb(camera_attr_iso_e iso, void *pUserData);
595         static bool SupportedCameraAttrWhitebalanceCb(camera_attr_whitebalance_e wb, void *pUserData);
596         static bool SupportedCameraAttrSceneModeCb(camera_attr_scene_mode_e mode, void *pUserData);
597         static bool SupportedCameraAttrMeteringModeCb(camera_attr_exposure_mode_e mode, void *pUserData);
598         static bool SupportedCameraAttrAfModeCb(camera_attr_af_mode_e mode, void *pUserData);
599
600         static void InitSafeHashMapInst(void);
601
602         static _CameraCapabilitySafeHashMapT* __pMap;
603         static const keyServiceMap __SERVICE_MAP[];
604
605         _CameraDeviceType __device;
606         _CameraHandle __handle;
607         int __initPreviewWidth;
608         int __initPreviewHeight;
609         int __initCaptureWidth;
610         int __initCaptureHeight;
611         camera_pixel_format_e __initPreviewFormat;
612         camera_pixel_format_e __initCaptureFormat;
613         camera_attr_flash_mode_e __initFlashMode;
614         camera_attr_effect_mode_e __initEffectMode;
615         camera_attr_fps_e __initFps;
616         camera_attr_iso_e __initIsoLevel;
617         camera_attr_whitebalance_e __initWb;
618         camera_attr_scene_mode_e __initSceneMode;
619         camera_attr_exposure_mode_e __initMeteringMode;
620         camera_attr_af_mode_e __initAfMode;
621 };
622
623 /**
624 * @class        _CameraCapabilitySafeHashMapT
625 * @brief        This class is for handling safe HashMap.
626 *
627 */
628 class _CameraCapabilitySafeHashMapT
629         : public Tizen::Base::Collection::HashMapT<_CameraDeviceType, _CameraCapability*>
630         , public virtual Tizen::Base::Collection::ICollectionT <Tizen::Base::Collection::MapEntryT <_CameraDeviceType, _CameraCapability*> >
631 {
632 public:
633         _CameraCapabilitySafeHashMapT(void);
634         virtual ~_CameraCapabilitySafeHashMapT(void);
635         void RemoveItems(void);
636
637 private:
638         _CameraCapabilitySafeHashMapT(const _CameraCapabilitySafeHashMapT& rhs);
639         _CameraCapabilitySafeHashMapT& operator =(const _CameraCapabilitySafeHashMapT& rhs);
640 };
641
642 }}
643
644 #endif