OSDN Git Service

fada37eabef28497e82cab55f653706484cca0f3
[android-x86/system-media.git] / camera / src / camera_metadata_tag_info.c
1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 /**
18  * !! Do not reference this file directly !!
19  *
20  * It is logically a part of camera_metadata.c.  It is broken out for ease of
21  * maintaining the tag info.
22  */
23
24 const char *camera_metadata_section_names[ANDROID_SECTION_COUNT] = {
25     "android.request",
26     "android.control",
27     "android.control.info",
28     "android.sensor",
29     "android.sensor.info",
30     "android.lens",
31     "android.lens.info",
32     "android.flash",
33     "android.flash.info",
34     "android.hotPixel",
35     "android.hotPixel.info",
36     "android.demosaic",
37     "android.demosaic.info",
38     "android.noiseReduction",
39     "android.noiseReduction.info",
40     "android.shadingCorrection",
41     "android.shadingCorrection.info",
42     "android.geometricCorrection",
43     "android.geometricCorrection.info",
44     "android.colorCorrection",
45     "android.colorCorrection.info",
46     "android.tonemap",
47     "android.tonemap.info",
48     "android.edge",
49     "android.edge.info",
50     "android.scaler",
51     "android.scaler.info",
52     "android.jpeg",
53     "android.jpeg.info",
54     "android.statistics",
55     "android.statistics.info"
56 };
57
58 unsigned int camera_metadata_section_bounds[ANDROID_SECTION_COUNT][2] = {
59     { ANDROID_REQUEST_START,        ANDROID_REQUEST_END },
60     { ANDROID_LENS_START,           ANDROID_LENS_END },
61     { ANDROID_LENS_INFO_START,      ANDROID_LENS_INFO_END },
62     { ANDROID_SENSOR_START,         ANDROID_SENSOR_END },
63     { ANDROID_SENSOR_INFO_START,    ANDROID_SENSOR_INFO_END },
64     { ANDROID_FLASH_START,          ANDROID_FLASH_END },
65     { ANDROID_FLASH_INFO_START,     ANDROID_FLASH_INFO_END },
66     { ANDROID_HOT_PIXEL_START,      ANDROID_HOT_PIXEL_END },
67     { ANDROID_HOT_PIXEL_INFO_START, ANDROID_HOT_PIXEL_INFO_END },
68     { ANDROID_DEMOSAIC_START,       ANDROID_DEMOSAIC_END },
69     { ANDROID_DEMOSAIC_INFO_START,  ANDROID_DEMOSAIC_INFO_END },
70     { ANDROID_NOISE_START,          ANDROID_NOISE_END },
71     { ANDROID_NOISE_INFO_START,     ANDROID_NOISE_INFO_END },
72     { ANDROID_SHADING_START,        ANDROID_SHADING_END },
73     { ANDROID_SHADING_INFO_START,   ANDROID_SHADING_INFO_END },
74     { ANDROID_GEOMETRIC_START,      ANDROID_GEOMETRIC_END },
75     { ANDROID_GEOMETRIC_INFO_START, ANDROID_GEOMETRIC_INFO_END },
76     { ANDROID_COLOR_START,          ANDROID_COLOR_END },
77     { ANDROID_COLOR_INFO_START,     ANDROID_COLOR_INFO_END },
78     { ANDROID_TONEMAP_START,        ANDROID_TONEMAP_END },
79     { ANDROID_TONEMAP_INFO_START,   ANDROID_TONEMAP_INFO_END },
80     { ANDROID_EDGE_START,           ANDROID_EDGE_END },
81     { ANDROID_EDGE_INFO_START,      ANDROID_EDGE_INFO_END },
82     { ANDROID_SCALER_START,         ANDROID_SCALER_END },
83     { ANDROID_SCALER_INFO_START,    ANDROID_SCALER_INFO_END },
84     { ANDROID_JPEG_START,           ANDROID_JPEG_END },
85     { ANDROID_JPEG_INFO_START,      ANDROID_JPEG_INFO_END },
86     { ANDROID_STATS_START,          ANDROID_STATS_END },
87     { ANDROID_STATS_INFO_START,     ANDROID_STATS_INFO_END },
88     { ANDROID_CONTROL_START,        ANDROID_CONTROL_END },
89     { ANDROID_CONTROL_INFO_START,   ANDROID_CONTROL_INFO_END }
90 };
91
92 tag_info_t android_request[ANDROID_REQUEST_END -
93         ANDROID_REQUEST_START] = {
94     { "id",                          TYPE_INT32 },
95     { "metadataMode",                TYPE_BYTE },
96     { "outputStreams",               TYPE_BYTE },
97     { "frameCount",                  TYPE_INT32 }
98 };
99
100 tag_info_t android_control[ANDROID_CONTROL_END -
101         ANDROID_CONTROL_START] = {
102     { "mode",                        TYPE_BYTE },
103     { "aeMode",                      TYPE_BYTE },
104     { "aeRegions",                   TYPE_INT32 },
105     { "aeExposureCompensation",      TYPE_INT32 },
106     { "aeTargetFpsRange",            TYPE_INT32 },
107     { "aeAntibandingMode",           TYPE_BYTE },
108     { "awbMode",                     TYPE_BYTE },
109     { "awbRegions",                  TYPE_INT32 },
110     { "afMode",                      TYPE_BYTE },
111     { "afRegions",                   TYPE_INT32 },
112     { "afTrigger",                   TYPE_BYTE },
113     { "afState",                     TYPE_BYTE },
114     { "videoStabilizationMode",      TYPE_BYTE }
115 };
116
117 tag_info_t android_control_info[ANDROID_CONTROL_INFO_END -
118         ANDROID_CONTROL_INFO_START] = {
119     { "availableModes",              TYPE_BYTE },
120     { "maxRegions",                  TYPE_INT32 },
121     { "aeAvailableModes",            TYPE_BYTE },
122     { "aeCompensationStep",          TYPE_RATIONAL },
123     { "aeCompensationRange",         TYPE_INT32 },
124     { "aeAvailableTargetFpsRanges",  TYPE_INT32 },
125     { "aeAvailableAntibandingModes", TYPE_BYTE },
126     { "awbAvailableModes",           TYPE_BYTE },
127     { "afAvailableModes",            TYPE_BYTE }
128 };
129
130 tag_info_t android_sensor[ANDROID_SENSOR_END -
131         ANDROID_SENSOR_START] = {
132     { "exposureTime",  TYPE_INT64 },
133     { "frameDuration", TYPE_INT64 },
134     { "sensitivity",   TYPE_INT32 },
135     { "timestamp",     TYPE_INT64 }
136 };
137
138 tag_info_t android_sensor_info[ANDROID_SENSOR_INFO_END -
139         ANDROID_SENSOR_INFO_START] = {
140     { "exposureTimeRange",      TYPE_INT64 },
141     { "maxFrameDuration",       TYPE_INT64 },
142     { "availableSensitivities", TYPE_INT32 },
143     { "colorFilterArrangement", TYPE_BYTE },
144     { "pixelArraySize",         TYPE_INT32 },
145     { "activeArraySize",        TYPE_INT32 },
146     { "whiteLevel",             TYPE_INT32 },
147     { "blackLevelPattern",      TYPE_INT32 },
148     { "colorTransform1",        TYPE_RATIONAL },
149     { "colorTransform2",        TYPE_RATIONAL },
150     { "referenceIlluminant1",   TYPE_BYTE },
151     { "referenceIlluminant2",   TYPE_BYTE },
152     { "forwardMatrix1",         TYPE_RATIONAL },
153     { "forwardMatrix2",         TYPE_RATIONAL },
154     { "calibrationTransform1",  TYPE_RATIONAL },
155     { "calibrationTransform2",  TYPE_RATIONAL },
156     { "baseGainFactor",         TYPE_RATIONAL },
157     { "maxAnalogSensitivity",   TYPE_INT32 },
158     { "noiseModelCoefficients", TYPE_FLOAT },
159     { "orientation",            TYPE_INT32 }
160 };
161
162 tag_info_t android_lens[ANDROID_LENS_END -
163         ANDROID_LENS_START] = {
164     { "focusDistance",            TYPE_FLOAT },
165     { "aperture",                 TYPE_FLOAT },
166     { "focalLength",              TYPE_FLOAT },
167     { "filterDensity",            TYPE_FLOAT },
168     { "opticalStabilizationMode", TYPE_BYTE },
169     { "focusRange",               TYPE_FLOAT }
170 };
171
172 tag_info_t android_lens_info[ANDROID_LENS_INFO_END -
173         ANDROID_LENS_INFO_START] = {
174     { "minimumFocusDistance",               TYPE_FLOAT },
175     { "availableFocalLengths",              TYPE_FLOAT },
176     { "availableApertures",                 TYPE_FLOAT },
177     { "availableFilterDensities",           TYPE_FLOAT },
178     { "availableOpticalStabilizationModes", TYPE_BYTE },
179     { "shadingMap",                         TYPE_FLOAT },
180     { "geometricCorrectionMap",             TYPE_FLOAT },
181     { "facing",                             TYPE_BYTE },
182     { "position",                           TYPE_FLOAT }
183 };
184
185 tag_info_t android_flash[ANDROID_FLASH_END -
186         ANDROID_FLASH_START] = {
187     { "mode",          TYPE_BYTE },
188     { "firingPower",   TYPE_BYTE },
189     { "firingTime",    TYPE_INT64 }
190 };
191
192 tag_info_t android_flash_info[ANDROID_FLASH_INFO_END -
193         ANDROID_FLASH_INFO_START] = {
194     { "available",      TYPE_BYTE },
195     { "chargeDuration", TYPE_INT64 },
196 };
197
198 tag_info_t android_hot_pixel[ANDROID_HOT_PIXEL_END -
199         ANDROID_HOT_PIXEL_START] = {
200     { "mode",           TYPE_BYTE }
201 };
202
203 tag_info_t android_hot_pixel_info[ANDROID_HOT_PIXEL_INFO_END -
204         ANDROID_HOT_PIXEL_INFO_START];
205
206 tag_info_t android_demosaic[ANDROID_DEMOSAIC_END -
207         ANDROID_DEMOSAIC_START] = {
208     { "mode",          TYPE_BYTE }
209 };
210
211 tag_info_t android_demosaic_info[ANDROID_DEMOSAIC_INFO_END -
212         ANDROID_DEMOSAIC_INFO_START];
213
214 tag_info_t android_noise[ANDROID_NOISE_END -
215         ANDROID_NOISE_START] = {
216     { "mode",          TYPE_BYTE },
217     { "strength",      TYPE_BYTE }
218 };
219
220 tag_info_t android_noise_info[ANDROID_NOISE_INFO_END -
221         ANDROID_NOISE_INFO_START];
222
223 tag_info_t android_shading[ANDROID_SHADING_END -
224         ANDROID_SHADING_START] = {
225     { "mode",          TYPE_BYTE }
226 };
227
228 tag_info_t android_shading_info[ANDROID_SHADING_INFO_END -
229         ANDROID_SHADING_INFO_START];
230
231 tag_info_t android_geometric[ANDROID_GEOMETRIC_END -
232         ANDROID_GEOMETRIC_START] = {
233     { "mode",          TYPE_BYTE }
234 };
235
236 tag_info_t android_geometric_info[ANDROID_GEOMETRIC_INFO_END -
237         ANDROID_GEOMETRIC_INFO_START];
238
239 tag_info_t android_color[ANDROID_COLOR_END -
240         ANDROID_COLOR_START] = {
241     { "mode",          TYPE_BYTE },
242     { "transform",     TYPE_FLOAT }
243 };
244
245 tag_info_t android_color_info[ANDROID_COLOR_INFO_END -
246         ANDROID_COLOR_INFO_START] = {
247     { "availableModes", TYPE_INT32 }
248 };
249
250 tag_info_t android_tonemap[ANDROID_TONEMAP_END -
251         ANDROID_TONEMAP_START] = {
252     { "mode",          TYPE_BYTE },
253     { "curveRed",      TYPE_FLOAT },
254     { "curveGreen",    TYPE_FLOAT },
255     { "curveBlue",     TYPE_FLOAT }
256 };
257
258 tag_info_t android_tonemap_info[ANDROID_TONEMAP_INFO_END -
259         ANDROID_TONEMAP_INFO_START] = {
260     { "maxCurvePoints", TYPE_INT32 }
261 };
262
263 tag_info_t android_edge[ANDROID_EDGE_END -
264         ANDROID_EDGE_START] = {
265     { "mode",          TYPE_BYTE },
266     { "strength",      TYPE_BYTE }
267 };
268
269 tag_info_t android_edge_info[ANDROID_EDGE_INFO_END -
270         ANDROID_EDGE_INFO_START];
271
272 tag_info_t android_scaler[ANDROID_SCALER_END -
273         ANDROID_SCALER_START] = {
274     { "size",          TYPE_INT32 },
275     { "format",        TYPE_BYTE },
276     { "cropRegion",    TYPE_INT32 },
277     { "rotation",      TYPE_INT32 },
278 };
279
280 tag_info_t android_scaler_info[ANDROID_SCALER_INFO_END -
281         ANDROID_SCALER_INFO_START] = {
282     { "availableFormats",            TYPE_INT32 },
283     { "availableSizesPerFormat",     TYPE_INT32 },
284     { "availableSizes",              TYPE_INT32 },
285     { "availableMinFrameDurations",  TYPE_INT32 },
286     { "availableMaxDigitalZoom",     TYPE_INT32 }
287 };
288
289 tag_info_t android_jpeg[ANDROID_JPEG_END -
290         ANDROID_JPEG_START] = {
291     { "quality",             TYPE_INT32 },
292     { "thumbnailSize",       TYPE_INT32 },
293     { "thumbnailQuality",    TYPE_INT32 },
294     { "gpsCoordinates",      TYPE_DOUBLE },
295     { "gpsProcessingMethod", TYPE_BYTE },
296     { "gpsTimestamp",        TYPE_INT64 },
297     { "orientation",         TYPE_INT32 }
298 };
299
300 tag_info_t android_jpeg_info[ANDROID_JPEG_INFO_END -
301         ANDROID_JPEG_INFO_START] = {
302     { "availableThumbnailSizes", TYPE_INT32 }
303 };
304
305 tag_info_t android_stats[ANDROID_STATS_END -
306         ANDROID_STATS_START] = {
307     { "faceDetectMode",      TYPE_BYTE },
308     { "faceRectangles",      TYPE_INT32 },
309     { "faceScores",          TYPE_BYTE },
310     { "faceLandmarks",       TYPE_INT32 },
311     { "faceIds",             TYPE_INT32 },
312     { "histogramMode",       TYPE_BYTE },
313     { "histogram",           TYPE_INT32 },
314     { "sharpnessMapMode",    TYPE_BYTE },
315     { "sharpnessMap",        TYPE_INT32 }
316 };
317
318 tag_info_t android_stats_info[ANDROID_STATS_INFO_END -
319         ANDROID_STATS_INFO_START] = {
320     { "availableFaceDetectModes",    TYPE_BYTE },
321     { "maxFaceCount",                TYPE_INT32 },
322     { "histogramBucketCount",        TYPE_INT32 },
323     { "maxHistogramCount",           TYPE_INT32 },
324     { "sharpnessMapSize",            TYPE_INT32 },
325     { "maxSharpnessMapValue",        TYPE_INT32 }
326 };
327
328 tag_info_t *tag_info[ANDROID_SECTION_COUNT] = {
329     android_request,
330     android_lens,
331     android_lens_info,
332     android_sensor,
333     android_sensor_info,
334     android_flash,
335     android_flash_info,
336     android_hot_pixel,
337     android_hot_pixel_info,
338     android_demosaic,
339     android_demosaic_info,
340     android_noise,
341     android_noise_info,
342     android_shading,
343     android_shading_info,
344     android_geometric,
345     android_geometric_info,
346     android_color,
347     android_color_info,
348     android_tonemap,
349     android_tonemap_info,
350     android_edge,
351     android_edge_info,
352     android_scaler,
353     android_scaler_info,
354     android_jpeg,
355     android_jpeg_info,
356     android_stats,
357     android_stats_info,
358     android_control,
359     android_control_info
360 };