[Release version 0.10.43] Add New attributes for Pan, Tilt, Display ROI Area
[platform/core/multimedia/libmm-camcorder.git] / src / include / mm_camcorder_platform.h
1 /*
2  * libmm-camcorder
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Jeongmo Yang <jm80.yang@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21
22 #ifndef __MM_CAMCORDER_PLATFORM_H__
23 #define __MM_CAMCORDER_PLATFORM_H__
24
25 /*=======================================================================================
26 | INCLUDE FILES                                                                         |
27 ========================================================================================*/
28 #include <gst/gst.h>
29 #include <mm_types.h>
30
31
32
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36
37 /*=======================================================================================
38 | GLOBAL DEFINITIONS AND DECLARATIONS FOR CAMCORDER                                     |
39 ========================================================================================*/
40 #define         MM_CAMCORDER_ATTR_NONE  -1
41
42
43 /*=======================================================================================
44 | MACRO DEFINITIONS                                                                     |
45 ========================================================================================*/
46 /* CAMERA DEFINED VALUE */
47 /* WQSXGA (5M) */
48 #define MMF_CAM_W2560           2560
49 #define MMF_CAM_H1920           1920
50
51 /* QXGA (3M) */
52 #define MMF_CAM_W2048           2048
53 #define MMF_CAM_H1536           1536
54
55 /* UXGA (2M) */
56 #define MMF_CAM_W1600           1600
57 #define MMF_CAM_H1200           1200
58
59 /* WSXGA (1M) */
60 #define MMF_CAM_W1280           1280
61 #define MMF_CAM_H960            960
62
63 /* SVGA */
64 #define MMF_CAM_W800            800
65 #define MMF_CAM_H600            600
66
67 /* WVGA */
68 #define MMF_CAM_W800            800
69 #define MMF_CAM_H480            480
70
71 /* VGA */
72 #define MMF_CAM_W640            640
73 #define MMF_CAM_H480            480
74
75 /* CIF */
76 #define MMF_CAM_W352            352
77 #define MMF_CAM_H288            288
78
79 /* QVGA */
80 #define MMF_CAM_W320            320
81 #define MMF_CAM_H240            240
82
83 /* QCIF */
84 #define MMF_CAM_W176            176
85 #define MMF_CAM_H144            144
86
87 /* QQVGA */
88 #define MMF_CAM_W160            160
89 #define MMF_CAM_H120            120
90
91 /* QQCIF */
92 #define MMF_CAM_W88             88
93 #define MMF_CAM_H72             72
94
95 /* WQVGA */
96 #define MMF_CAM_W400            400
97 #define MMF_CAM_H240            240
98
99 /* RQVGA */
100 #define MMF_CAM_W240            240
101 #define MMF_CAM_H320            320
102
103 /* RWQVGA */
104 #define MMF_CAM_W240            240
105 #define MMF_CAM_H400            400
106
107 /* Non-specified */
108 #define MMF_CAM_W400            400
109 #define MMF_CAM_H300            300
110
111 /* HD */
112 #define MMF_CAM_W1280           1280
113 #define MMF_CAM_H720            720
114
115 //Zero
116 #define MMF_CAM_W0              0
117 #define MMF_CAM_H0              0
118
119
120 /* Capture related */
121 /* High quality resolution */
122 #define MMFCAMCORDER_HIGHQUALITY_WIDTH          MMF_CAM_W0      /* High quality resolution is not needed, */
123 #define MMFCAMCORDER_HIGHQUALITY_HEIGHT         MMF_CAM_H0      /* because camsensor has a JPEG encoder inside */
124
125 /* VGA (1 : 0.75) */
126 #define MMF_CROP_VGA_LEFT                       0
127 #define MMF_CROP_VGA_RIGHT                      0
128 #define MMF_CROP_VGA_TOP                        0
129 #define MMF_CROP_VGA_BOTTOM                     0
130
131 /* QCIF (1 : 0.818) */
132 #define MMF_CROP_CIF_LEFT                       68              /* little bit confusing */
133 #define MMF_CROP_CIF_RIGHT                      68
134 #define MMF_CROP_CIF_TOP                        0
135 #define MMF_CROP_CIF_BOTTOM                     0
136
137 /* Camera etc */
138 #define _MMCAMCORDER_CAMSTABLE_COUNT            0               /* stablize count of camsensor */
139 #define _MMCAMCORDER_MINIMUM_SPACE              (512*1024)      /* byte */
140 #define _MMCAMCORDER_MMS_MARGIN_SPACE           (512)           /* byte */
141
142 /**
143  * Default None value for camera sensor enumeration.
144  */
145 #define _MMCAMCORDER_SENSOR_ENUM_NONE   -255
146
147 /* camera information related */
148 #define CAMINFO_CONVERT_NUM             45
149
150
151 /*=======================================================================================
152 | ENUM DEFINITIONS                                                                      |
153 ========================================================================================*/
154 /**
155  * Enumerations for attribute converting.
156  */
157 typedef enum {
158         MM_CAMCONVERT_TYPE_INT,
159         MM_CAMCONVERT_TYPE_INT_RANGE,
160         MM_CAMCONVERT_TYPE_INT_ARRAY,
161         MM_CAMCONVERT_TYPE_INT_PAIR_ARRAY,
162         MM_CAMCONVERT_TYPE_STRING,
163 /*
164         MM_CAMCONVERT_TYPE_DOUBLE,
165         MM_CAMCONVERT_TYPE_DOUBLE_PAIR,
166 */
167         MM_CAMCONVERT_TYPE_USER,        /* user define */
168 } MMCamConvertingType;
169
170 typedef enum {
171         ENUM_CONVERT_WHITE_BALANCE = 0,
172         ENUM_CONVERT_COLOR_TONE,
173         ENUM_CONVERT_ISO,
174         ENUM_CONVERT_PROGRAM_MODE,
175         ENUM_CONVERT_FOCUS_MODE,
176         ENUM_CONVERT_AF_RANGE,
177         ENUM_CONVERT_EXPOSURE_MODE,
178         ENUM_CONVERT_STROBE_MODE,
179         ENUM_CONVERT_WDR,
180         ENUM_CONVERT_FLIP,
181         ENUM_CONVERT_ROTATION,
182         ENUM_CONVERT_ANTI_HAND_SHAKE,
183         ENUM_CONVERT_VIDEO_STABILIZATION,
184         ENUM_CONVERT_NUM
185 } MMCamConvertingEnum;
186
187 typedef enum {
188         MM_CAMCONVERT_CATEGORY_CAMERA  = 1 << 0,
189         MM_CAMCONVERT_CATEGORY_DISPLAY = 1 << 1,
190         MM_CAMCONVERT_CATEGORY_AUDIO   = 1 << 2,
191         MM_CAMCONVERT_CATEGORY_ALL = MM_CAMCONVERT_CATEGORY_CAMERA | MM_CAMCONVERT_CATEGORY_DISPLAY | MM_CAMCONVERT_CATEGORY_AUDIO
192 } MMCamConvertingCategory;
193
194 /*=======================================================================================
195 | STRUCTURE DEFINITIONS                                                                 |
196 ========================================================================================*/
197 /**
198  * Structure for enumeration converting.
199  */
200 typedef struct {
201         int total_enum_num;             /**< total enumeration count */
202         int *enum_arr;                  /**< enumeration array */
203         int category;                   /**< category */
204         const char *keyword;                    /**< keyword array */
205 } _MMCamcorderEnumConvert;
206
207
208 /**
209  * Converting table of camera configuration.
210  */
211 typedef struct {
212         int type;                               /**< type of configuration */
213         int category;                           /**< category of configuration */
214         int attr_idx;                           /**< attribute index */
215         int attr_idx_pair;                      /**< attribute index (only for 'pair' type) */
216         const char *keyword;
217         MMCamConvertingType conv_type;
218         _MMCamcorderEnumConvert *enum_convert;  /**< converting value table */
219 } _MMCamcorderInfoConverting;
220
221 /*=======================================================================================
222 | CONSTANT DEFINITIONS                                                                  |
223 ========================================================================================*/
224
225 /*=======================================================================================
226 | STATIC VARIABLES                                                                      |
227 ========================================================================================*/
228
229 /*=======================================================================================
230 | EXTERN GLOBAL VARIABLE                                                                |
231 ========================================================================================*/
232
233 /*=======================================================================================
234 | GLOBAL FUNCTION PROTOTYPES                                                            |
235 ========================================================================================*/
236 int _mmcamcorder_convert_msl_to_sensor(MMHandleType handle, int attr_idx, int mslval);
237 int _mmcamcorder_convert_sensor_to_msl(MMHandleType handle, int attr_idx, int sensval);
238 int _mmcamcorder_get_fps_array_by_resolution(MMHandleType handle, int width, int height,  MMCamAttrsInfo* fps_info);
239
240 int _mmcamcorder_set_converted_value(MMHandleType handle, _MMCamcorderEnumConvert *convert);
241 int _mmcamcorder_init_convert_table(MMHandleType handle);
242 int _mmcamcorder_init_attr_from_configure(MMHandleType handle, MMCamConvertingCategory category);
243
244 int _mmcamcorder_convert_brightness(int mslVal);
245 int _mmcamcorder_convert_whitebalance(int mslVal);
246 int _mmcamcorder_convert_colortone(int mslVal);
247 double _mmcamcorder_convert_volume(int mslVal);
248 int  __mmcamcorder_set_info_to_attr(MMHandleType handle, _MMCamcorderInfoConverting *info, int table_size);
249
250 #ifdef __cplusplus
251 }
252 #endif
253
254 #endif /* __MM_CAMCORDER_PLATFORM_H__ */