2 * Copyright (C) 2012 The Android Open Source Project
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 * !! Do not reference this file directly !!
20 * It is logically a part of camera_metadata.c. It is broken out for ease of
21 * maintaining the tag info.
24 const char *camera_metadata_section_names[ANDROID_SECTION_COUNT] = {
27 "android.control.info",
29 "android.sensor.info",
35 "android.hotPixel.info",
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",
47 "android.tonemap.info",
51 "android.scaler.info",
55 "android.statistics.info"
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 }
92 tag_info_t android_request[ANDROID_REQUEST_END -
93 ANDROID_REQUEST_START] = {
95 { "metadataMode", TYPE_BYTE },
96 { "outputStreams", TYPE_BYTE },
97 { "frameCount", TYPE_INT32 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
192 tag_info_t android_flash_info[ANDROID_FLASH_INFO_END -
193 ANDROID_FLASH_INFO_START] = {
194 { "available", TYPE_BYTE },
195 { "chargeDuration", TYPE_INT64 },
198 tag_info_t android_hot_pixel[ANDROID_HOT_PIXEL_END -
199 ANDROID_HOT_PIXEL_START] = {
200 { "mode", TYPE_BYTE }
203 tag_info_t android_hot_pixel_info[ANDROID_HOT_PIXEL_INFO_END -
204 ANDROID_HOT_PIXEL_INFO_START];
206 tag_info_t android_demosaic[ANDROID_DEMOSAIC_END -
207 ANDROID_DEMOSAIC_START] = {
208 { "mode", TYPE_BYTE }
211 tag_info_t android_demosaic_info[ANDROID_DEMOSAIC_INFO_END -
212 ANDROID_DEMOSAIC_INFO_START];
214 tag_info_t android_noise[ANDROID_NOISE_END -
215 ANDROID_NOISE_START] = {
216 { "mode", TYPE_BYTE },
217 { "strength", TYPE_BYTE }
220 tag_info_t android_noise_info[ANDROID_NOISE_INFO_END -
221 ANDROID_NOISE_INFO_START];
223 tag_info_t android_shading[ANDROID_SHADING_END -
224 ANDROID_SHADING_START] = {
225 { "mode", TYPE_BYTE }
228 tag_info_t android_shading_info[ANDROID_SHADING_INFO_END -
229 ANDROID_SHADING_INFO_START];
231 tag_info_t android_geometric[ANDROID_GEOMETRIC_END -
232 ANDROID_GEOMETRIC_START] = {
233 { "mode", TYPE_BYTE }
236 tag_info_t android_geometric_info[ANDROID_GEOMETRIC_INFO_END -
237 ANDROID_GEOMETRIC_INFO_START];
239 tag_info_t android_color[ANDROID_COLOR_END -
240 ANDROID_COLOR_START] = {
241 { "mode", TYPE_BYTE },
242 { "transform", TYPE_FLOAT }
245 tag_info_t android_color_info[ANDROID_COLOR_INFO_END -
246 ANDROID_COLOR_INFO_START] = {
247 { "availableModes", TYPE_INT32 }
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 }
258 tag_info_t android_tonemap_info[ANDROID_TONEMAP_INFO_END -
259 ANDROID_TONEMAP_INFO_START] = {
260 { "maxCurvePoints", TYPE_INT32 }
263 tag_info_t android_edge[ANDROID_EDGE_END -
264 ANDROID_EDGE_START] = {
265 { "mode", TYPE_BYTE },
266 { "strength", TYPE_BYTE }
269 tag_info_t android_edge_info[ANDROID_EDGE_INFO_END -
270 ANDROID_EDGE_INFO_START];
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 },
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 }
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 }
300 tag_info_t android_jpeg_info[ANDROID_JPEG_INFO_END -
301 ANDROID_JPEG_INFO_START] = {
302 { "availableThumbnailSizes", TYPE_INT32 }
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 }
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 }
328 tag_info_t *tag_info[ANDROID_SECTION_COUNT] = {
337 android_hot_pixel_info,
339 android_demosaic_info,
343 android_shading_info,
345 android_geometric_info,
349 android_tonemap_info,