OSDN Git Service

Merge "Make inlines static"
[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  * Array assignments are done using specified-index syntax to keep things in
24  * sync with camera_metadata_tags.h
25  */
26
27 /**
28  * ! Do not edit this file directly !
29  *
30  * Generated automatically from camera_metadata_tag_info.mako
31  */
32
33 const char *camera_metadata_section_names[ANDROID_SECTION_COUNT] = {
34     [ANDROID_COLOR_CORRECTION]     = "android.colorCorrection",
35     [ANDROID_CONTROL]              = "android.control",
36     [ANDROID_DEMOSAIC]             = "android.demosaic",
37     [ANDROID_EDGE]                 = "android.edge",
38     [ANDROID_FLASH]                = "android.flash",
39     [ANDROID_FLASH_INFO]           = "android.flash.info",
40     [ANDROID_HOT_PIXEL]            = "android.hotPixel",
41     [ANDROID_JPEG]                 = "android.jpeg",
42     [ANDROID_LENS]                 = "android.lens",
43     [ANDROID_LENS_INFO]            = "android.lens.info",
44     [ANDROID_NOISE_REDUCTION]      = "android.noiseReduction",
45     [ANDROID_QUIRKS]               = "android.quirks",
46     [ANDROID_REQUEST]              = "android.request",
47     [ANDROID_SCALER]               = "android.scaler",
48     [ANDROID_SENSOR]               = "android.sensor",
49     [ANDROID_SENSOR_INFO]          = "android.sensor.info",
50     [ANDROID_SHADING]              = "android.shading",
51     [ANDROID_STATISTICS]           = "android.statistics",
52     [ANDROID_STATISTICS_INFO]      = "android.statistics.info",
53     [ANDROID_TONEMAP]              = "android.tonemap",
54     [ANDROID_LED]                  = "android.led",
55     [ANDROID_INFO]                 = "android.info",
56     [ANDROID_BLACK_LEVEL]          = "android.blackLevel",
57     [ANDROID_SYNC]                 = "android.sync",
58     [ANDROID_REPROCESS]            = "android.reprocess",
59     [ANDROID_DEPTH]                = "android.depth",
60 };
61
62 unsigned int camera_metadata_section_bounds[ANDROID_SECTION_COUNT][2] = {
63     [ANDROID_COLOR_CORRECTION]     = { ANDROID_COLOR_CORRECTION_START,
64                                        ANDROID_COLOR_CORRECTION_END },
65     [ANDROID_CONTROL]              = { ANDROID_CONTROL_START,
66                                        ANDROID_CONTROL_END },
67     [ANDROID_DEMOSAIC]             = { ANDROID_DEMOSAIC_START,
68                                        ANDROID_DEMOSAIC_END },
69     [ANDROID_EDGE]                 = { ANDROID_EDGE_START,
70                                        ANDROID_EDGE_END },
71     [ANDROID_FLASH]                = { ANDROID_FLASH_START,
72                                        ANDROID_FLASH_END },
73     [ANDROID_FLASH_INFO]           = { ANDROID_FLASH_INFO_START,
74                                        ANDROID_FLASH_INFO_END },
75     [ANDROID_HOT_PIXEL]            = { ANDROID_HOT_PIXEL_START,
76                                        ANDROID_HOT_PIXEL_END },
77     [ANDROID_JPEG]                 = { ANDROID_JPEG_START,
78                                        ANDROID_JPEG_END },
79     [ANDROID_LENS]                 = { ANDROID_LENS_START,
80                                        ANDROID_LENS_END },
81     [ANDROID_LENS_INFO]            = { ANDROID_LENS_INFO_START,
82                                        ANDROID_LENS_INFO_END },
83     [ANDROID_NOISE_REDUCTION]      = { ANDROID_NOISE_REDUCTION_START,
84                                        ANDROID_NOISE_REDUCTION_END },
85     [ANDROID_QUIRKS]               = { ANDROID_QUIRKS_START,
86                                        ANDROID_QUIRKS_END },
87     [ANDROID_REQUEST]              = { ANDROID_REQUEST_START,
88                                        ANDROID_REQUEST_END },
89     [ANDROID_SCALER]               = { ANDROID_SCALER_START,
90                                        ANDROID_SCALER_END },
91     [ANDROID_SENSOR]               = { ANDROID_SENSOR_START,
92                                        ANDROID_SENSOR_END },
93     [ANDROID_SENSOR_INFO]          = { ANDROID_SENSOR_INFO_START,
94                                        ANDROID_SENSOR_INFO_END },
95     [ANDROID_SHADING]              = { ANDROID_SHADING_START,
96                                        ANDROID_SHADING_END },
97     [ANDROID_STATISTICS]           = { ANDROID_STATISTICS_START,
98                                        ANDROID_STATISTICS_END },
99     [ANDROID_STATISTICS_INFO]      = { ANDROID_STATISTICS_INFO_START,
100                                        ANDROID_STATISTICS_INFO_END },
101     [ANDROID_TONEMAP]              = { ANDROID_TONEMAP_START,
102                                        ANDROID_TONEMAP_END },
103     [ANDROID_LED]                  = { ANDROID_LED_START,
104                                        ANDROID_LED_END },
105     [ANDROID_INFO]                 = { ANDROID_INFO_START,
106                                        ANDROID_INFO_END },
107     [ANDROID_BLACK_LEVEL]          = { ANDROID_BLACK_LEVEL_START,
108                                        ANDROID_BLACK_LEVEL_END },
109     [ANDROID_SYNC]                 = { ANDROID_SYNC_START,
110                                        ANDROID_SYNC_END },
111     [ANDROID_REPROCESS]            = { ANDROID_REPROCESS_START,
112                                        ANDROID_REPROCESS_END },
113     [ANDROID_DEPTH]                = { ANDROID_DEPTH_START,
114                                        ANDROID_DEPTH_END },
115 };
116
117 static tag_info_t android_color_correction[ANDROID_COLOR_CORRECTION_END -
118         ANDROID_COLOR_CORRECTION_START] = {
119     [ ANDROID_COLOR_CORRECTION_MODE - ANDROID_COLOR_CORRECTION_START ] =
120     { "mode",                          TYPE_BYTE   },
121     [ ANDROID_COLOR_CORRECTION_TRANSFORM - ANDROID_COLOR_CORRECTION_START ] =
122     { "transform",                     TYPE_RATIONAL
123                 },
124     [ ANDROID_COLOR_CORRECTION_GAINS - ANDROID_COLOR_CORRECTION_START ] =
125     { "gains",                         TYPE_FLOAT  },
126     [ ANDROID_COLOR_CORRECTION_ABERRATION_MODE - ANDROID_COLOR_CORRECTION_START ] =
127     { "aberrationMode",                TYPE_BYTE   },
128     [ ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES - ANDROID_COLOR_CORRECTION_START ] =
129     { "availableAberrationModes",      TYPE_BYTE   },
130 };
131
132 static tag_info_t android_control[ANDROID_CONTROL_END -
133         ANDROID_CONTROL_START] = {
134     [ ANDROID_CONTROL_AE_ANTIBANDING_MODE - ANDROID_CONTROL_START ] =
135     { "aeAntibandingMode",             TYPE_BYTE   },
136     [ ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION - ANDROID_CONTROL_START ] =
137     { "aeExposureCompensation",        TYPE_INT32  },
138     [ ANDROID_CONTROL_AE_LOCK - ANDROID_CONTROL_START ] =
139     { "aeLock",                        TYPE_BYTE   },
140     [ ANDROID_CONTROL_AE_MODE - ANDROID_CONTROL_START ] =
141     { "aeMode",                        TYPE_BYTE   },
142     [ ANDROID_CONTROL_AE_REGIONS - ANDROID_CONTROL_START ] =
143     { "aeRegions",                     TYPE_INT32  },
144     [ ANDROID_CONTROL_AE_TARGET_FPS_RANGE - ANDROID_CONTROL_START ] =
145     { "aeTargetFpsRange",              TYPE_INT32  },
146     [ ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER - ANDROID_CONTROL_START ] =
147     { "aePrecaptureTrigger",           TYPE_BYTE   },
148     [ ANDROID_CONTROL_AF_MODE - ANDROID_CONTROL_START ] =
149     { "afMode",                        TYPE_BYTE   },
150     [ ANDROID_CONTROL_AF_REGIONS - ANDROID_CONTROL_START ] =
151     { "afRegions",                     TYPE_INT32  },
152     [ ANDROID_CONTROL_AF_TRIGGER - ANDROID_CONTROL_START ] =
153     { "afTrigger",                     TYPE_BYTE   },
154     [ ANDROID_CONTROL_AWB_LOCK - ANDROID_CONTROL_START ] =
155     { "awbLock",                       TYPE_BYTE   },
156     [ ANDROID_CONTROL_AWB_MODE - ANDROID_CONTROL_START ] =
157     { "awbMode",                       TYPE_BYTE   },
158     [ ANDROID_CONTROL_AWB_REGIONS - ANDROID_CONTROL_START ] =
159     { "awbRegions",                    TYPE_INT32  },
160     [ ANDROID_CONTROL_CAPTURE_INTENT - ANDROID_CONTROL_START ] =
161     { "captureIntent",                 TYPE_BYTE   },
162     [ ANDROID_CONTROL_EFFECT_MODE - ANDROID_CONTROL_START ] =
163     { "effectMode",                    TYPE_BYTE   },
164     [ ANDROID_CONTROL_MODE - ANDROID_CONTROL_START ] =
165     { "mode",                          TYPE_BYTE   },
166     [ ANDROID_CONTROL_SCENE_MODE - ANDROID_CONTROL_START ] =
167     { "sceneMode",                     TYPE_BYTE   },
168     [ ANDROID_CONTROL_VIDEO_STABILIZATION_MODE - ANDROID_CONTROL_START ] =
169     { "videoStabilizationMode",        TYPE_BYTE   },
170     [ ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES - ANDROID_CONTROL_START ] =
171     { "aeAvailableAntibandingModes",   TYPE_BYTE   },
172     [ ANDROID_CONTROL_AE_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
173     { "aeAvailableModes",              TYPE_BYTE   },
174     [ ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES - ANDROID_CONTROL_START ] =
175     { "aeAvailableTargetFpsRanges",    TYPE_INT32  },
176     [ ANDROID_CONTROL_AE_COMPENSATION_RANGE - ANDROID_CONTROL_START ] =
177     { "aeCompensationRange",           TYPE_INT32  },
178     [ ANDROID_CONTROL_AE_COMPENSATION_STEP - ANDROID_CONTROL_START ] =
179     { "aeCompensationStep",            TYPE_RATIONAL
180                 },
181     [ ANDROID_CONTROL_AF_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
182     { "afAvailableModes",              TYPE_BYTE   },
183     [ ANDROID_CONTROL_AVAILABLE_EFFECTS - ANDROID_CONTROL_START ] =
184     { "availableEffects",              TYPE_BYTE   },
185     [ ANDROID_CONTROL_AVAILABLE_SCENE_MODES - ANDROID_CONTROL_START ] =
186     { "availableSceneModes",           TYPE_BYTE   },
187     [ ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES - ANDROID_CONTROL_START ] =
188     { "availableVideoStabilizationModes",
189                                         TYPE_BYTE   },
190     [ ANDROID_CONTROL_AWB_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
191     { "awbAvailableModes",             TYPE_BYTE   },
192     [ ANDROID_CONTROL_MAX_REGIONS - ANDROID_CONTROL_START ] =
193     { "maxRegions",                    TYPE_INT32  },
194     [ ANDROID_CONTROL_SCENE_MODE_OVERRIDES - ANDROID_CONTROL_START ] =
195     { "sceneModeOverrides",            TYPE_BYTE   },
196     [ ANDROID_CONTROL_AE_PRECAPTURE_ID - ANDROID_CONTROL_START ] =
197     { "aePrecaptureId",                TYPE_INT32  },
198     [ ANDROID_CONTROL_AE_STATE - ANDROID_CONTROL_START ] =
199     { "aeState",                       TYPE_BYTE   },
200     [ ANDROID_CONTROL_AF_STATE - ANDROID_CONTROL_START ] =
201     { "afState",                       TYPE_BYTE   },
202     [ ANDROID_CONTROL_AF_TRIGGER_ID - ANDROID_CONTROL_START ] =
203     { "afTriggerId",                   TYPE_INT32  },
204     [ ANDROID_CONTROL_AWB_STATE - ANDROID_CONTROL_START ] =
205     { "awbState",                      TYPE_BYTE   },
206     [ ANDROID_CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS - ANDROID_CONTROL_START ] =
207     { "availableHighSpeedVideoConfigurations",
208                                         TYPE_INT32  },
209     [ ANDROID_CONTROL_AE_LOCK_AVAILABLE - ANDROID_CONTROL_START ] =
210     { "aeLockAvailable",               TYPE_BYTE   },
211     [ ANDROID_CONTROL_AWB_LOCK_AVAILABLE - ANDROID_CONTROL_START ] =
212     { "awbLockAvailable",              TYPE_BYTE   },
213     [ ANDROID_CONTROL_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
214     { "availableModes",                TYPE_BYTE   },
215     [ ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE - ANDROID_CONTROL_START ] =
216     { "postRawSensitivityBoostRange",  TYPE_INT32  },
217     [ ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST - ANDROID_CONTROL_START ] =
218     { "postRawSensitivityBoost",       TYPE_INT32  },
219     [ ANDROID_CONTROL_ENABLE_ZSL - ANDROID_CONTROL_START ] =
220     { "enableZsl",                     TYPE_BYTE   },
221 };
222
223 static tag_info_t android_demosaic[ANDROID_DEMOSAIC_END -
224         ANDROID_DEMOSAIC_START] = {
225     [ ANDROID_DEMOSAIC_MODE - ANDROID_DEMOSAIC_START ] =
226     { "mode",                          TYPE_BYTE   },
227 };
228
229 static tag_info_t android_edge[ANDROID_EDGE_END -
230         ANDROID_EDGE_START] = {
231     [ ANDROID_EDGE_MODE - ANDROID_EDGE_START ] =
232     { "mode",                          TYPE_BYTE   },
233     [ ANDROID_EDGE_STRENGTH - ANDROID_EDGE_START ] =
234     { "strength",                      TYPE_BYTE   },
235     [ ANDROID_EDGE_AVAILABLE_EDGE_MODES - ANDROID_EDGE_START ] =
236     { "availableEdgeModes",            TYPE_BYTE   },
237 };
238
239 static tag_info_t android_flash[ANDROID_FLASH_END -
240         ANDROID_FLASH_START] = {
241     [ ANDROID_FLASH_FIRING_POWER - ANDROID_FLASH_START ] =
242     { "firingPower",                   TYPE_BYTE   },
243     [ ANDROID_FLASH_FIRING_TIME - ANDROID_FLASH_START ] =
244     { "firingTime",                    TYPE_INT64  },
245     [ ANDROID_FLASH_MODE - ANDROID_FLASH_START ] =
246     { "mode",                          TYPE_BYTE   },
247     [ ANDROID_FLASH_COLOR_TEMPERATURE - ANDROID_FLASH_START ] =
248     { "colorTemperature",              TYPE_BYTE   },
249     [ ANDROID_FLASH_MAX_ENERGY - ANDROID_FLASH_START ] =
250     { "maxEnergy",                     TYPE_BYTE   },
251     [ ANDROID_FLASH_STATE - ANDROID_FLASH_START ] =
252     { "state",                         TYPE_BYTE   },
253 };
254
255 static tag_info_t android_flash_info[ANDROID_FLASH_INFO_END -
256         ANDROID_FLASH_INFO_START] = {
257     [ ANDROID_FLASH_INFO_AVAILABLE - ANDROID_FLASH_INFO_START ] =
258     { "available",                     TYPE_BYTE   },
259     [ ANDROID_FLASH_INFO_CHARGE_DURATION - ANDROID_FLASH_INFO_START ] =
260     { "chargeDuration",                TYPE_INT64  },
261 };
262
263 static tag_info_t android_hot_pixel[ANDROID_HOT_PIXEL_END -
264         ANDROID_HOT_PIXEL_START] = {
265     [ ANDROID_HOT_PIXEL_MODE - ANDROID_HOT_PIXEL_START ] =
266     { "mode",                          TYPE_BYTE   },
267     [ ANDROID_HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES - ANDROID_HOT_PIXEL_START ] =
268     { "availableHotPixelModes",        TYPE_BYTE   },
269 };
270
271 static tag_info_t android_jpeg[ANDROID_JPEG_END -
272         ANDROID_JPEG_START] = {
273     [ ANDROID_JPEG_GPS_COORDINATES - ANDROID_JPEG_START ] =
274     { "gpsCoordinates",                TYPE_DOUBLE },
275     [ ANDROID_JPEG_GPS_PROCESSING_METHOD - ANDROID_JPEG_START ] =
276     { "gpsProcessingMethod",           TYPE_BYTE   },
277     [ ANDROID_JPEG_GPS_TIMESTAMP - ANDROID_JPEG_START ] =
278     { "gpsTimestamp",                  TYPE_INT64  },
279     [ ANDROID_JPEG_ORIENTATION - ANDROID_JPEG_START ] =
280     { "orientation",                   TYPE_INT32  },
281     [ ANDROID_JPEG_QUALITY - ANDROID_JPEG_START ] =
282     { "quality",                       TYPE_BYTE   },
283     [ ANDROID_JPEG_THUMBNAIL_QUALITY - ANDROID_JPEG_START ] =
284     { "thumbnailQuality",              TYPE_BYTE   },
285     [ ANDROID_JPEG_THUMBNAIL_SIZE - ANDROID_JPEG_START ] =
286     { "thumbnailSize",                 TYPE_INT32  },
287     [ ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES - ANDROID_JPEG_START ] =
288     { "availableThumbnailSizes",       TYPE_INT32  },
289     [ ANDROID_JPEG_MAX_SIZE - ANDROID_JPEG_START ] =
290     { "maxSize",                       TYPE_INT32  },
291     [ ANDROID_JPEG_SIZE - ANDROID_JPEG_START ] =
292     { "size",                          TYPE_INT32  },
293 };
294
295 static tag_info_t android_lens[ANDROID_LENS_END -
296         ANDROID_LENS_START] = {
297     [ ANDROID_LENS_APERTURE - ANDROID_LENS_START ] =
298     { "aperture",                      TYPE_FLOAT  },
299     [ ANDROID_LENS_FILTER_DENSITY - ANDROID_LENS_START ] =
300     { "filterDensity",                 TYPE_FLOAT  },
301     [ ANDROID_LENS_FOCAL_LENGTH - ANDROID_LENS_START ] =
302     { "focalLength",                   TYPE_FLOAT  },
303     [ ANDROID_LENS_FOCUS_DISTANCE - ANDROID_LENS_START ] =
304     { "focusDistance",                 TYPE_FLOAT  },
305     [ ANDROID_LENS_OPTICAL_STABILIZATION_MODE - ANDROID_LENS_START ] =
306     { "opticalStabilizationMode",      TYPE_BYTE   },
307     [ ANDROID_LENS_FACING - ANDROID_LENS_START ] =
308     { "facing",                        TYPE_BYTE   },
309     [ ANDROID_LENS_POSE_ROTATION - ANDROID_LENS_START ] =
310     { "poseRotation",                  TYPE_FLOAT  },
311     [ ANDROID_LENS_POSE_TRANSLATION - ANDROID_LENS_START ] =
312     { "poseTranslation",               TYPE_FLOAT  },
313     [ ANDROID_LENS_FOCUS_RANGE - ANDROID_LENS_START ] =
314     { "focusRange",                    TYPE_FLOAT  },
315     [ ANDROID_LENS_STATE - ANDROID_LENS_START ] =
316     { "state",                         TYPE_BYTE   },
317     [ ANDROID_LENS_INTRINSIC_CALIBRATION - ANDROID_LENS_START ] =
318     { "intrinsicCalibration",          TYPE_FLOAT  },
319     [ ANDROID_LENS_RADIAL_DISTORTION - ANDROID_LENS_START ] =
320     { "radialDistortion",              TYPE_FLOAT  },
321 };
322
323 static tag_info_t android_lens_info[ANDROID_LENS_INFO_END -
324         ANDROID_LENS_INFO_START] = {
325     [ ANDROID_LENS_INFO_AVAILABLE_APERTURES - ANDROID_LENS_INFO_START ] =
326     { "availableApertures",            TYPE_FLOAT  },
327     [ ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES - ANDROID_LENS_INFO_START ] =
328     { "availableFilterDensities",      TYPE_FLOAT  },
329     [ ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS - ANDROID_LENS_INFO_START ] =
330     { "availableFocalLengths",         TYPE_FLOAT  },
331     [ ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION - ANDROID_LENS_INFO_START ] =
332     { "availableOpticalStabilization", TYPE_BYTE   },
333     [ ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE - ANDROID_LENS_INFO_START ] =
334     { "hyperfocalDistance",            TYPE_FLOAT  },
335     [ ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE - ANDROID_LENS_INFO_START ] =
336     { "minimumFocusDistance",          TYPE_FLOAT  },
337     [ ANDROID_LENS_INFO_SHADING_MAP_SIZE - ANDROID_LENS_INFO_START ] =
338     { "shadingMapSize",                TYPE_INT32  },
339     [ ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION - ANDROID_LENS_INFO_START ] =
340     { "focusDistanceCalibration",      TYPE_BYTE   },
341 };
342
343 static tag_info_t android_noise_reduction[ANDROID_NOISE_REDUCTION_END -
344         ANDROID_NOISE_REDUCTION_START] = {
345     [ ANDROID_NOISE_REDUCTION_MODE - ANDROID_NOISE_REDUCTION_START ] =
346     { "mode",                          TYPE_BYTE   },
347     [ ANDROID_NOISE_REDUCTION_STRENGTH - ANDROID_NOISE_REDUCTION_START ] =
348     { "strength",                      TYPE_BYTE   },
349     [ ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES - ANDROID_NOISE_REDUCTION_START ] =
350     { "availableNoiseReductionModes",  TYPE_BYTE   },
351 };
352
353 static tag_info_t android_quirks[ANDROID_QUIRKS_END -
354         ANDROID_QUIRKS_START] = {
355     [ ANDROID_QUIRKS_METERING_CROP_REGION - ANDROID_QUIRKS_START ] =
356     { "meteringCropRegion",            TYPE_BYTE   },
357     [ ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO - ANDROID_QUIRKS_START ] =
358     { "triggerAfWithAuto",             TYPE_BYTE   },
359     [ ANDROID_QUIRKS_USE_ZSL_FORMAT - ANDROID_QUIRKS_START ] =
360     { "useZslFormat",                  TYPE_BYTE   },
361     [ ANDROID_QUIRKS_USE_PARTIAL_RESULT - ANDROID_QUIRKS_START ] =
362     { "usePartialResult",              TYPE_BYTE   },
363     [ ANDROID_QUIRKS_PARTIAL_RESULT - ANDROID_QUIRKS_START ] =
364     { "partialResult",                 TYPE_BYTE   },
365 };
366
367 static tag_info_t android_request[ANDROID_REQUEST_END -
368         ANDROID_REQUEST_START] = {
369     [ ANDROID_REQUEST_FRAME_COUNT - ANDROID_REQUEST_START ] =
370     { "frameCount",                    TYPE_INT32  },
371     [ ANDROID_REQUEST_ID - ANDROID_REQUEST_START ] =
372     { "id",                            TYPE_INT32  },
373     [ ANDROID_REQUEST_INPUT_STREAMS - ANDROID_REQUEST_START ] =
374     { "inputStreams",                  TYPE_INT32  },
375     [ ANDROID_REQUEST_METADATA_MODE - ANDROID_REQUEST_START ] =
376     { "metadataMode",                  TYPE_BYTE   },
377     [ ANDROID_REQUEST_OUTPUT_STREAMS - ANDROID_REQUEST_START ] =
378     { "outputStreams",                 TYPE_INT32  },
379     [ ANDROID_REQUEST_TYPE - ANDROID_REQUEST_START ] =
380     { "type",                          TYPE_BYTE   },
381     [ ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS - ANDROID_REQUEST_START ] =
382     { "maxNumOutputStreams",           TYPE_INT32  },
383     [ ANDROID_REQUEST_MAX_NUM_REPROCESS_STREAMS - ANDROID_REQUEST_START ] =
384     { "maxNumReprocessStreams",        TYPE_INT32  },
385     [ ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS - ANDROID_REQUEST_START ] =
386     { "maxNumInputStreams",            TYPE_INT32  },
387     [ ANDROID_REQUEST_PIPELINE_DEPTH - ANDROID_REQUEST_START ] =
388     { "pipelineDepth",                 TYPE_BYTE   },
389     [ ANDROID_REQUEST_PIPELINE_MAX_DEPTH - ANDROID_REQUEST_START ] =
390     { "pipelineMaxDepth",              TYPE_BYTE   },
391     [ ANDROID_REQUEST_PARTIAL_RESULT_COUNT - ANDROID_REQUEST_START ] =
392     { "partialResultCount",            TYPE_INT32  },
393     [ ANDROID_REQUEST_AVAILABLE_CAPABILITIES - ANDROID_REQUEST_START ] =
394     { "availableCapabilities",         TYPE_BYTE   },
395     [ ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS - ANDROID_REQUEST_START ] =
396     { "availableRequestKeys",          TYPE_INT32  },
397     [ ANDROID_REQUEST_AVAILABLE_RESULT_KEYS - ANDROID_REQUEST_START ] =
398     { "availableResultKeys",           TYPE_INT32  },
399     [ ANDROID_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS - ANDROID_REQUEST_START ] =
400     { "availableCharacteristicsKeys",  TYPE_INT32  },
401 };
402
403 static tag_info_t android_scaler[ANDROID_SCALER_END -
404         ANDROID_SCALER_START] = {
405     [ ANDROID_SCALER_CROP_REGION - ANDROID_SCALER_START ] =
406     { "cropRegion",                    TYPE_INT32  },
407     [ ANDROID_SCALER_AVAILABLE_FORMATS - ANDROID_SCALER_START ] =
408     { "availableFormats",              TYPE_INT32  },
409     [ ANDROID_SCALER_AVAILABLE_JPEG_MIN_DURATIONS - ANDROID_SCALER_START ] =
410     { "availableJpegMinDurations",     TYPE_INT64  },
411     [ ANDROID_SCALER_AVAILABLE_JPEG_SIZES - ANDROID_SCALER_START ] =
412     { "availableJpegSizes",            TYPE_INT32  },
413     [ ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM - ANDROID_SCALER_START ] =
414     { "availableMaxDigitalZoom",       TYPE_FLOAT  },
415     [ ANDROID_SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS - ANDROID_SCALER_START ] =
416     { "availableProcessedMinDurations",
417                                         TYPE_INT64  },
418     [ ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES - ANDROID_SCALER_START ] =
419     { "availableProcessedSizes",       TYPE_INT32  },
420     [ ANDROID_SCALER_AVAILABLE_RAW_MIN_DURATIONS - ANDROID_SCALER_START ] =
421     { "availableRawMinDurations",      TYPE_INT64  },
422     [ ANDROID_SCALER_AVAILABLE_RAW_SIZES - ANDROID_SCALER_START ] =
423     { "availableRawSizes",             TYPE_INT32  },
424     [ ANDROID_SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP - ANDROID_SCALER_START ] =
425     { "availableInputOutputFormatsMap",
426                                         TYPE_INT32  },
427     [ ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS - ANDROID_SCALER_START ] =
428     { "availableStreamConfigurations", TYPE_INT32  },
429     [ ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS - ANDROID_SCALER_START ] =
430     { "availableMinFrameDurations",    TYPE_INT64  },
431     [ ANDROID_SCALER_AVAILABLE_STALL_DURATIONS - ANDROID_SCALER_START ] =
432     { "availableStallDurations",       TYPE_INT64  },
433     [ ANDROID_SCALER_CROPPING_TYPE - ANDROID_SCALER_START ] =
434     { "croppingType",                  TYPE_BYTE   },
435 };
436
437 static tag_info_t android_sensor[ANDROID_SENSOR_END -
438         ANDROID_SENSOR_START] = {
439     [ ANDROID_SENSOR_EXPOSURE_TIME - ANDROID_SENSOR_START ] =
440     { "exposureTime",                  TYPE_INT64  },
441     [ ANDROID_SENSOR_FRAME_DURATION - ANDROID_SENSOR_START ] =
442     { "frameDuration",                 TYPE_INT64  },
443     [ ANDROID_SENSOR_SENSITIVITY - ANDROID_SENSOR_START ] =
444     { "sensitivity",                   TYPE_INT32  },
445     [ ANDROID_SENSOR_REFERENCE_ILLUMINANT1 - ANDROID_SENSOR_START ] =
446     { "referenceIlluminant1",          TYPE_BYTE   },
447     [ ANDROID_SENSOR_REFERENCE_ILLUMINANT2 - ANDROID_SENSOR_START ] =
448     { "referenceIlluminant2",          TYPE_BYTE   },
449     [ ANDROID_SENSOR_CALIBRATION_TRANSFORM1 - ANDROID_SENSOR_START ] =
450     { "calibrationTransform1",         TYPE_RATIONAL
451                 },
452     [ ANDROID_SENSOR_CALIBRATION_TRANSFORM2 - ANDROID_SENSOR_START ] =
453     { "calibrationTransform2",         TYPE_RATIONAL
454                 },
455     [ ANDROID_SENSOR_COLOR_TRANSFORM1 - ANDROID_SENSOR_START ] =
456     { "colorTransform1",               TYPE_RATIONAL
457                 },
458     [ ANDROID_SENSOR_COLOR_TRANSFORM2 - ANDROID_SENSOR_START ] =
459     { "colorTransform2",               TYPE_RATIONAL
460                 },
461     [ ANDROID_SENSOR_FORWARD_MATRIX1 - ANDROID_SENSOR_START ] =
462     { "forwardMatrix1",                TYPE_RATIONAL
463                 },
464     [ ANDROID_SENSOR_FORWARD_MATRIX2 - ANDROID_SENSOR_START ] =
465     { "forwardMatrix2",                TYPE_RATIONAL
466                 },
467     [ ANDROID_SENSOR_BASE_GAIN_FACTOR - ANDROID_SENSOR_START ] =
468     { "baseGainFactor",                TYPE_RATIONAL
469                 },
470     [ ANDROID_SENSOR_BLACK_LEVEL_PATTERN - ANDROID_SENSOR_START ] =
471     { "blackLevelPattern",             TYPE_INT32  },
472     [ ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY - ANDROID_SENSOR_START ] =
473     { "maxAnalogSensitivity",          TYPE_INT32  },
474     [ ANDROID_SENSOR_ORIENTATION - ANDROID_SENSOR_START ] =
475     { "orientation",                   TYPE_INT32  },
476     [ ANDROID_SENSOR_PROFILE_HUE_SAT_MAP_DIMENSIONS - ANDROID_SENSOR_START ] =
477     { "profileHueSatMapDimensions",    TYPE_INT32  },
478     [ ANDROID_SENSOR_TIMESTAMP - ANDROID_SENSOR_START ] =
479     { "timestamp",                     TYPE_INT64  },
480     [ ANDROID_SENSOR_TEMPERATURE - ANDROID_SENSOR_START ] =
481     { "temperature",                   TYPE_FLOAT  },
482     [ ANDROID_SENSOR_NEUTRAL_COLOR_POINT - ANDROID_SENSOR_START ] =
483     { "neutralColorPoint",             TYPE_RATIONAL
484                 },
485     [ ANDROID_SENSOR_NOISE_PROFILE - ANDROID_SENSOR_START ] =
486     { "noiseProfile",                  TYPE_DOUBLE },
487     [ ANDROID_SENSOR_PROFILE_HUE_SAT_MAP - ANDROID_SENSOR_START ] =
488     { "profileHueSatMap",              TYPE_FLOAT  },
489     [ ANDROID_SENSOR_PROFILE_TONE_CURVE - ANDROID_SENSOR_START ] =
490     { "profileToneCurve",              TYPE_FLOAT  },
491     [ ANDROID_SENSOR_GREEN_SPLIT - ANDROID_SENSOR_START ] =
492     { "greenSplit",                    TYPE_FLOAT  },
493     [ ANDROID_SENSOR_TEST_PATTERN_DATA - ANDROID_SENSOR_START ] =
494     { "testPatternData",               TYPE_INT32  },
495     [ ANDROID_SENSOR_TEST_PATTERN_MODE - ANDROID_SENSOR_START ] =
496     { "testPatternMode",               TYPE_INT32  },
497     [ ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES - ANDROID_SENSOR_START ] =
498     { "availableTestPatternModes",     TYPE_INT32  },
499     [ ANDROID_SENSOR_ROLLING_SHUTTER_SKEW - ANDROID_SENSOR_START ] =
500     { "rollingShutterSkew",            TYPE_INT64  },
501     [ ANDROID_SENSOR_OPTICAL_BLACK_REGIONS - ANDROID_SENSOR_START ] =
502     { "opticalBlackRegions",           TYPE_INT32  },
503     [ ANDROID_SENSOR_DYNAMIC_BLACK_LEVEL - ANDROID_SENSOR_START ] =
504     { "dynamicBlackLevel",             TYPE_FLOAT  },
505     [ ANDROID_SENSOR_DYNAMIC_WHITE_LEVEL - ANDROID_SENSOR_START ] =
506     { "dynamicWhiteLevel",             TYPE_INT32  },
507     [ ANDROID_SENSOR_OPAQUE_RAW_SIZE - ANDROID_SENSOR_START ] =
508     { "opaqueRawSize",                 TYPE_INT32  },
509 };
510
511 static tag_info_t android_sensor_info[ANDROID_SENSOR_INFO_END -
512         ANDROID_SENSOR_INFO_START] = {
513     [ ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE - ANDROID_SENSOR_INFO_START ] =
514     { "activeArraySize",               TYPE_INT32  },
515     [ ANDROID_SENSOR_INFO_SENSITIVITY_RANGE - ANDROID_SENSOR_INFO_START ] =
516     { "sensitivityRange",              TYPE_INT32  },
517     [ ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT - ANDROID_SENSOR_INFO_START ] =
518     { "colorFilterArrangement",        TYPE_BYTE   },
519     [ ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE - ANDROID_SENSOR_INFO_START ] =
520     { "exposureTimeRange",             TYPE_INT64  },
521     [ ANDROID_SENSOR_INFO_MAX_FRAME_DURATION - ANDROID_SENSOR_INFO_START ] =
522     { "maxFrameDuration",              TYPE_INT64  },
523     [ ANDROID_SENSOR_INFO_PHYSICAL_SIZE - ANDROID_SENSOR_INFO_START ] =
524     { "physicalSize",                  TYPE_FLOAT  },
525     [ ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE - ANDROID_SENSOR_INFO_START ] =
526     { "pixelArraySize",                TYPE_INT32  },
527     [ ANDROID_SENSOR_INFO_WHITE_LEVEL - ANDROID_SENSOR_INFO_START ] =
528     { "whiteLevel",                    TYPE_INT32  },
529     [ ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE - ANDROID_SENSOR_INFO_START ] =
530     { "timestampSource",               TYPE_BYTE   },
531     [ ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED - ANDROID_SENSOR_INFO_START ] =
532     { "lensShadingApplied",            TYPE_BYTE   },
533     [ ANDROID_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE - ANDROID_SENSOR_INFO_START ] =
534     { "preCorrectionActiveArraySize",  TYPE_INT32  },
535 };
536
537 static tag_info_t android_shading[ANDROID_SHADING_END -
538         ANDROID_SHADING_START] = {
539     [ ANDROID_SHADING_MODE - ANDROID_SHADING_START ] =
540     { "mode",                          TYPE_BYTE   },
541     [ ANDROID_SHADING_STRENGTH - ANDROID_SHADING_START ] =
542     { "strength",                      TYPE_BYTE   },
543     [ ANDROID_SHADING_AVAILABLE_MODES - ANDROID_SHADING_START ] =
544     { "availableModes",                TYPE_BYTE   },
545 };
546
547 static tag_info_t android_statistics[ANDROID_STATISTICS_END -
548         ANDROID_STATISTICS_START] = {
549     [ ANDROID_STATISTICS_FACE_DETECT_MODE - ANDROID_STATISTICS_START ] =
550     { "faceDetectMode",                TYPE_BYTE   },
551     [ ANDROID_STATISTICS_HISTOGRAM_MODE - ANDROID_STATISTICS_START ] =
552     { "histogramMode",                 TYPE_BYTE   },
553     [ ANDROID_STATISTICS_SHARPNESS_MAP_MODE - ANDROID_STATISTICS_START ] =
554     { "sharpnessMapMode",              TYPE_BYTE   },
555     [ ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE - ANDROID_STATISTICS_START ] =
556     { "hotPixelMapMode",               TYPE_BYTE   },
557     [ ANDROID_STATISTICS_FACE_IDS - ANDROID_STATISTICS_START ] =
558     { "faceIds",                       TYPE_INT32  },
559     [ ANDROID_STATISTICS_FACE_LANDMARKS - ANDROID_STATISTICS_START ] =
560     { "faceLandmarks",                 TYPE_INT32  },
561     [ ANDROID_STATISTICS_FACE_RECTANGLES - ANDROID_STATISTICS_START ] =
562     { "faceRectangles",                TYPE_INT32  },
563     [ ANDROID_STATISTICS_FACE_SCORES - ANDROID_STATISTICS_START ] =
564     { "faceScores",                    TYPE_BYTE   },
565     [ ANDROID_STATISTICS_HISTOGRAM - ANDROID_STATISTICS_START ] =
566     { "histogram",                     TYPE_INT32  },
567     [ ANDROID_STATISTICS_SHARPNESS_MAP - ANDROID_STATISTICS_START ] =
568     { "sharpnessMap",                  TYPE_INT32  },
569     [ ANDROID_STATISTICS_LENS_SHADING_CORRECTION_MAP - ANDROID_STATISTICS_START ] =
570     { "lensShadingCorrectionMap",      TYPE_BYTE   },
571     [ ANDROID_STATISTICS_LENS_SHADING_MAP - ANDROID_STATISTICS_START ] =
572     { "lensShadingMap",                TYPE_FLOAT  },
573     [ ANDROID_STATISTICS_PREDICTED_COLOR_GAINS - ANDROID_STATISTICS_START ] =
574     { "predictedColorGains",           TYPE_FLOAT  },
575     [ ANDROID_STATISTICS_PREDICTED_COLOR_TRANSFORM - ANDROID_STATISTICS_START ] =
576     { "predictedColorTransform",       TYPE_RATIONAL
577                 },
578     [ ANDROID_STATISTICS_SCENE_FLICKER - ANDROID_STATISTICS_START ] =
579     { "sceneFlicker",                  TYPE_BYTE   },
580     [ ANDROID_STATISTICS_HOT_PIXEL_MAP - ANDROID_STATISTICS_START ] =
581     { "hotPixelMap",                   TYPE_INT32  },
582     [ ANDROID_STATISTICS_LENS_SHADING_MAP_MODE - ANDROID_STATISTICS_START ] =
583     { "lensShadingMapMode",            TYPE_BYTE   },
584 };
585
586 static tag_info_t android_statistics_info[ANDROID_STATISTICS_INFO_END -
587         ANDROID_STATISTICS_INFO_START] = {
588     [ ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES - ANDROID_STATISTICS_INFO_START ] =
589     { "availableFaceDetectModes",      TYPE_BYTE   },
590     [ ANDROID_STATISTICS_INFO_HISTOGRAM_BUCKET_COUNT - ANDROID_STATISTICS_INFO_START ] =
591     { "histogramBucketCount",          TYPE_INT32  },
592     [ ANDROID_STATISTICS_INFO_MAX_FACE_COUNT - ANDROID_STATISTICS_INFO_START ] =
593     { "maxFaceCount",                  TYPE_INT32  },
594     [ ANDROID_STATISTICS_INFO_MAX_HISTOGRAM_COUNT - ANDROID_STATISTICS_INFO_START ] =
595     { "maxHistogramCount",             TYPE_INT32  },
596     [ ANDROID_STATISTICS_INFO_MAX_SHARPNESS_MAP_VALUE - ANDROID_STATISTICS_INFO_START ] =
597     { "maxSharpnessMapValue",          TYPE_INT32  },
598     [ ANDROID_STATISTICS_INFO_SHARPNESS_MAP_SIZE - ANDROID_STATISTICS_INFO_START ] =
599     { "sharpnessMapSize",              TYPE_INT32  },
600     [ ANDROID_STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES - ANDROID_STATISTICS_INFO_START ] =
601     { "availableHotPixelMapModes",     TYPE_BYTE   },
602     [ ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES - ANDROID_STATISTICS_INFO_START ] =
603     { "availableLensShadingMapModes",  TYPE_BYTE   },
604 };
605
606 static tag_info_t android_tonemap[ANDROID_TONEMAP_END -
607         ANDROID_TONEMAP_START] = {
608     [ ANDROID_TONEMAP_CURVE_BLUE - ANDROID_TONEMAP_START ] =
609     { "curveBlue",                     TYPE_FLOAT  },
610     [ ANDROID_TONEMAP_CURVE_GREEN - ANDROID_TONEMAP_START ] =
611     { "curveGreen",                    TYPE_FLOAT  },
612     [ ANDROID_TONEMAP_CURVE_RED - ANDROID_TONEMAP_START ] =
613     { "curveRed",                      TYPE_FLOAT  },
614     [ ANDROID_TONEMAP_MODE - ANDROID_TONEMAP_START ] =
615     { "mode",                          TYPE_BYTE   },
616     [ ANDROID_TONEMAP_MAX_CURVE_POINTS - ANDROID_TONEMAP_START ] =
617     { "maxCurvePoints",                TYPE_INT32  },
618     [ ANDROID_TONEMAP_AVAILABLE_TONE_MAP_MODES - ANDROID_TONEMAP_START ] =
619     { "availableToneMapModes",         TYPE_BYTE   },
620     [ ANDROID_TONEMAP_GAMMA - ANDROID_TONEMAP_START ] =
621     { "gamma",                         TYPE_FLOAT  },
622     [ ANDROID_TONEMAP_PRESET_CURVE - ANDROID_TONEMAP_START ] =
623     { "presetCurve",                   TYPE_BYTE   },
624 };
625
626 static tag_info_t android_led[ANDROID_LED_END -
627         ANDROID_LED_START] = {
628     [ ANDROID_LED_TRANSMIT - ANDROID_LED_START ] =
629     { "transmit",                      TYPE_BYTE   },
630     [ ANDROID_LED_AVAILABLE_LEDS - ANDROID_LED_START ] =
631     { "availableLeds",                 TYPE_BYTE   },
632 };
633
634 static tag_info_t android_info[ANDROID_INFO_END -
635         ANDROID_INFO_START] = {
636     [ ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL - ANDROID_INFO_START ] =
637     { "supportedHardwareLevel",        TYPE_BYTE   },
638 };
639
640 static tag_info_t android_black_level[ANDROID_BLACK_LEVEL_END -
641         ANDROID_BLACK_LEVEL_START] = {
642     [ ANDROID_BLACK_LEVEL_LOCK - ANDROID_BLACK_LEVEL_START ] =
643     { "lock",                          TYPE_BYTE   },
644 };
645
646 static tag_info_t android_sync[ANDROID_SYNC_END -
647         ANDROID_SYNC_START] = {
648     [ ANDROID_SYNC_FRAME_NUMBER - ANDROID_SYNC_START ] =
649     { "frameNumber",                   TYPE_INT64  },
650     [ ANDROID_SYNC_MAX_LATENCY - ANDROID_SYNC_START ] =
651     { "maxLatency",                    TYPE_INT32  },
652 };
653
654 static tag_info_t android_reprocess[ANDROID_REPROCESS_END -
655         ANDROID_REPROCESS_START] = {
656     [ ANDROID_REPROCESS_EFFECTIVE_EXPOSURE_FACTOR - ANDROID_REPROCESS_START ] =
657     { "effectiveExposureFactor",       TYPE_FLOAT  },
658     [ ANDROID_REPROCESS_MAX_CAPTURE_STALL - ANDROID_REPROCESS_START ] =
659     { "maxCaptureStall",               TYPE_INT32  },
660 };
661
662 static tag_info_t android_depth[ANDROID_DEPTH_END -
663         ANDROID_DEPTH_START] = {
664     [ ANDROID_DEPTH_MAX_DEPTH_SAMPLES - ANDROID_DEPTH_START ] =
665     { "maxDepthSamples",               TYPE_INT32  },
666     [ ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS - ANDROID_DEPTH_START ] =
667     { "availableDepthStreamConfigurations",
668                                         TYPE_INT32  },
669     [ ANDROID_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS - ANDROID_DEPTH_START ] =
670     { "availableDepthMinFrameDurations",
671                                         TYPE_INT64  },
672     [ ANDROID_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS - ANDROID_DEPTH_START ] =
673     { "availableDepthStallDurations",  TYPE_INT64  },
674     [ ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE - ANDROID_DEPTH_START ] =
675     { "depthIsExclusive",              TYPE_BYTE   },
676 };
677
678
679 tag_info_t *tag_info[ANDROID_SECTION_COUNT] = {
680     android_color_correction,
681     android_control,
682     android_demosaic,
683     android_edge,
684     android_flash,
685     android_flash_info,
686     android_hot_pixel,
687     android_jpeg,
688     android_lens,
689     android_lens_info,
690     android_noise_reduction,
691     android_quirks,
692     android_request,
693     android_scaler,
694     android_sensor,
695     android_sensor_info,
696     android_shading,
697     android_statistics,
698     android_statistics_info,
699     android_tonemap,
700     android_led,
701     android_info,
702     android_black_level,
703     android_sync,
704     android_reprocess,
705     android_depth,
706 };
707
708 int camera_metadata_enum_snprint(uint32_t tag,
709                                  uint32_t value,
710                                  char *dst,
711                                  size_t size) {
712     const char *msg = "error: not an enum";
713     int ret = -1;
714
715     switch(tag) {
716         case ANDROID_COLOR_CORRECTION_MODE: {
717             switch (value) {
718                 case ANDROID_COLOR_CORRECTION_MODE_TRANSFORM_MATRIX:
719                     msg = "TRANSFORM_MATRIX";
720                     ret = 0;
721                     break;
722                 case ANDROID_COLOR_CORRECTION_MODE_FAST:
723                     msg = "FAST";
724                     ret = 0;
725                     break;
726                 case ANDROID_COLOR_CORRECTION_MODE_HIGH_QUALITY:
727                     msg = "HIGH_QUALITY";
728                     ret = 0;
729                     break;
730                 default:
731                     msg = "error: enum value out of range";
732             }
733             break;
734         }
735         case ANDROID_COLOR_CORRECTION_TRANSFORM: {
736             break;
737         }
738         case ANDROID_COLOR_CORRECTION_GAINS: {
739             break;
740         }
741         case ANDROID_COLOR_CORRECTION_ABERRATION_MODE: {
742             switch (value) {
743                 case ANDROID_COLOR_CORRECTION_ABERRATION_MODE_OFF:
744                     msg = "OFF";
745                     ret = 0;
746                     break;
747                 case ANDROID_COLOR_CORRECTION_ABERRATION_MODE_FAST:
748                     msg = "FAST";
749                     ret = 0;
750                     break;
751                 case ANDROID_COLOR_CORRECTION_ABERRATION_MODE_HIGH_QUALITY:
752                     msg = "HIGH_QUALITY";
753                     ret = 0;
754                     break;
755                 default:
756                     msg = "error: enum value out of range";
757             }
758             break;
759         }
760         case ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES: {
761             break;
762         }
763
764         case ANDROID_CONTROL_AE_ANTIBANDING_MODE: {
765             switch (value) {
766                 case ANDROID_CONTROL_AE_ANTIBANDING_MODE_OFF:
767                     msg = "OFF";
768                     ret = 0;
769                     break;
770                 case ANDROID_CONTROL_AE_ANTIBANDING_MODE_50HZ:
771                     msg = "50HZ";
772                     ret = 0;
773                     break;
774                 case ANDROID_CONTROL_AE_ANTIBANDING_MODE_60HZ:
775                     msg = "60HZ";
776                     ret = 0;
777                     break;
778                 case ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO:
779                     msg = "AUTO";
780                     ret = 0;
781                     break;
782                 default:
783                     msg = "error: enum value out of range";
784             }
785             break;
786         }
787         case ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION: {
788             break;
789         }
790         case ANDROID_CONTROL_AE_LOCK: {
791             switch (value) {
792                 case ANDROID_CONTROL_AE_LOCK_OFF:
793                     msg = "OFF";
794                     ret = 0;
795                     break;
796                 case ANDROID_CONTROL_AE_LOCK_ON:
797                     msg = "ON";
798                     ret = 0;
799                     break;
800                 default:
801                     msg = "error: enum value out of range";
802             }
803             break;
804         }
805         case ANDROID_CONTROL_AE_MODE: {
806             switch (value) {
807                 case ANDROID_CONTROL_AE_MODE_OFF:
808                     msg = "OFF";
809                     ret = 0;
810                     break;
811                 case ANDROID_CONTROL_AE_MODE_ON:
812                     msg = "ON";
813                     ret = 0;
814                     break;
815                 case ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH:
816                     msg = "ON_AUTO_FLASH";
817                     ret = 0;
818                     break;
819                 case ANDROID_CONTROL_AE_MODE_ON_ALWAYS_FLASH:
820                     msg = "ON_ALWAYS_FLASH";
821                     ret = 0;
822                     break;
823                 case ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE:
824                     msg = "ON_AUTO_FLASH_REDEYE";
825                     ret = 0;
826                     break;
827                 default:
828                     msg = "error: enum value out of range";
829             }
830             break;
831         }
832         case ANDROID_CONTROL_AE_REGIONS: {
833             break;
834         }
835         case ANDROID_CONTROL_AE_TARGET_FPS_RANGE: {
836             break;
837         }
838         case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER: {
839             switch (value) {
840                 case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE:
841                     msg = "IDLE";
842                     ret = 0;
843                     break;
844                 case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_START:
845                     msg = "START";
846                     ret = 0;
847                     break;
848                 case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL:
849                     msg = "CANCEL";
850                     ret = 0;
851                     break;
852                 default:
853                     msg = "error: enum value out of range";
854             }
855             break;
856         }
857         case ANDROID_CONTROL_AF_MODE: {
858             switch (value) {
859                 case ANDROID_CONTROL_AF_MODE_OFF:
860                     msg = "OFF";
861                     ret = 0;
862                     break;
863                 case ANDROID_CONTROL_AF_MODE_AUTO:
864                     msg = "AUTO";
865                     ret = 0;
866                     break;
867                 case ANDROID_CONTROL_AF_MODE_MACRO:
868                     msg = "MACRO";
869                     ret = 0;
870                     break;
871                 case ANDROID_CONTROL_AF_MODE_CONTINUOUS_VIDEO:
872                     msg = "CONTINUOUS_VIDEO";
873                     ret = 0;
874                     break;
875                 case ANDROID_CONTROL_AF_MODE_CONTINUOUS_PICTURE:
876                     msg = "CONTINUOUS_PICTURE";
877                     ret = 0;
878                     break;
879                 case ANDROID_CONTROL_AF_MODE_EDOF:
880                     msg = "EDOF";
881                     ret = 0;
882                     break;
883                 default:
884                     msg = "error: enum value out of range";
885             }
886             break;
887         }
888         case ANDROID_CONTROL_AF_REGIONS: {
889             break;
890         }
891         case ANDROID_CONTROL_AF_TRIGGER: {
892             switch (value) {
893                 case ANDROID_CONTROL_AF_TRIGGER_IDLE:
894                     msg = "IDLE";
895                     ret = 0;
896                     break;
897                 case ANDROID_CONTROL_AF_TRIGGER_START:
898                     msg = "START";
899                     ret = 0;
900                     break;
901                 case ANDROID_CONTROL_AF_TRIGGER_CANCEL:
902                     msg = "CANCEL";
903                     ret = 0;
904                     break;
905                 default:
906                     msg = "error: enum value out of range";
907             }
908             break;
909         }
910         case ANDROID_CONTROL_AWB_LOCK: {
911             switch (value) {
912                 case ANDROID_CONTROL_AWB_LOCK_OFF:
913                     msg = "OFF";
914                     ret = 0;
915                     break;
916                 case ANDROID_CONTROL_AWB_LOCK_ON:
917                     msg = "ON";
918                     ret = 0;
919                     break;
920                 default:
921                     msg = "error: enum value out of range";
922             }
923             break;
924         }
925         case ANDROID_CONTROL_AWB_MODE: {
926             switch (value) {
927                 case ANDROID_CONTROL_AWB_MODE_OFF:
928                     msg = "OFF";
929                     ret = 0;
930                     break;
931                 case ANDROID_CONTROL_AWB_MODE_AUTO:
932                     msg = "AUTO";
933                     ret = 0;
934                     break;
935                 case ANDROID_CONTROL_AWB_MODE_INCANDESCENT:
936                     msg = "INCANDESCENT";
937                     ret = 0;
938                     break;
939                 case ANDROID_CONTROL_AWB_MODE_FLUORESCENT:
940                     msg = "FLUORESCENT";
941                     ret = 0;
942                     break;
943                 case ANDROID_CONTROL_AWB_MODE_WARM_FLUORESCENT:
944                     msg = "WARM_FLUORESCENT";
945                     ret = 0;
946                     break;
947                 case ANDROID_CONTROL_AWB_MODE_DAYLIGHT:
948                     msg = "DAYLIGHT";
949                     ret = 0;
950                     break;
951                 case ANDROID_CONTROL_AWB_MODE_CLOUDY_DAYLIGHT:
952                     msg = "CLOUDY_DAYLIGHT";
953                     ret = 0;
954                     break;
955                 case ANDROID_CONTROL_AWB_MODE_TWILIGHT:
956                     msg = "TWILIGHT";
957                     ret = 0;
958                     break;
959                 case ANDROID_CONTROL_AWB_MODE_SHADE:
960                     msg = "SHADE";
961                     ret = 0;
962                     break;
963                 default:
964                     msg = "error: enum value out of range";
965             }
966             break;
967         }
968         case ANDROID_CONTROL_AWB_REGIONS: {
969             break;
970         }
971         case ANDROID_CONTROL_CAPTURE_INTENT: {
972             switch (value) {
973                 case ANDROID_CONTROL_CAPTURE_INTENT_CUSTOM:
974                     msg = "CUSTOM";
975                     ret = 0;
976                     break;
977                 case ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW:
978                     msg = "PREVIEW";
979                     ret = 0;
980                     break;
981                 case ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE:
982                     msg = "STILL_CAPTURE";
983                     ret = 0;
984                     break;
985                 case ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_RECORD:
986                     msg = "VIDEO_RECORD";
987                     ret = 0;
988                     break;
989                 case ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT:
990                     msg = "VIDEO_SNAPSHOT";
991                     ret = 0;
992                     break;
993                 case ANDROID_CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG:
994                     msg = "ZERO_SHUTTER_LAG";
995                     ret = 0;
996                     break;
997                 case ANDROID_CONTROL_CAPTURE_INTENT_MANUAL:
998                     msg = "MANUAL";
999                     ret = 0;
1000                     break;
1001                 default:
1002                     msg = "error: enum value out of range";
1003             }
1004             break;
1005         }
1006         case ANDROID_CONTROL_EFFECT_MODE: {
1007             switch (value) {
1008                 case ANDROID_CONTROL_EFFECT_MODE_OFF:
1009                     msg = "OFF";
1010                     ret = 0;
1011                     break;
1012                 case ANDROID_CONTROL_EFFECT_MODE_MONO:
1013                     msg = "MONO";
1014                     ret = 0;
1015                     break;
1016                 case ANDROID_CONTROL_EFFECT_MODE_NEGATIVE:
1017                     msg = "NEGATIVE";
1018                     ret = 0;
1019                     break;
1020                 case ANDROID_CONTROL_EFFECT_MODE_SOLARIZE:
1021                     msg = "SOLARIZE";
1022                     ret = 0;
1023                     break;
1024                 case ANDROID_CONTROL_EFFECT_MODE_SEPIA:
1025                     msg = "SEPIA";
1026                     ret = 0;
1027                     break;
1028                 case ANDROID_CONTROL_EFFECT_MODE_POSTERIZE:
1029                     msg = "POSTERIZE";
1030                     ret = 0;
1031                     break;
1032                 case ANDROID_CONTROL_EFFECT_MODE_WHITEBOARD:
1033                     msg = "WHITEBOARD";
1034                     ret = 0;
1035                     break;
1036                 case ANDROID_CONTROL_EFFECT_MODE_BLACKBOARD:
1037                     msg = "BLACKBOARD";
1038                     ret = 0;
1039                     break;
1040                 case ANDROID_CONTROL_EFFECT_MODE_AQUA:
1041                     msg = "AQUA";
1042                     ret = 0;
1043                     break;
1044                 default:
1045                     msg = "error: enum value out of range";
1046             }
1047             break;
1048         }
1049         case ANDROID_CONTROL_MODE: {
1050             switch (value) {
1051                 case ANDROID_CONTROL_MODE_OFF:
1052                     msg = "OFF";
1053                     ret = 0;
1054                     break;
1055                 case ANDROID_CONTROL_MODE_AUTO:
1056                     msg = "AUTO";
1057                     ret = 0;
1058                     break;
1059                 case ANDROID_CONTROL_MODE_USE_SCENE_MODE:
1060                     msg = "USE_SCENE_MODE";
1061                     ret = 0;
1062                     break;
1063                 case ANDROID_CONTROL_MODE_OFF_KEEP_STATE:
1064                     msg = "OFF_KEEP_STATE";
1065                     ret = 0;
1066                     break;
1067                 default:
1068                     msg = "error: enum value out of range";
1069             }
1070             break;
1071         }
1072         case ANDROID_CONTROL_SCENE_MODE: {
1073             switch (value) {
1074                 case ANDROID_CONTROL_SCENE_MODE_DISABLED:
1075                     msg = "DISABLED";
1076                     ret = 0;
1077                     break;
1078                 case ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY:
1079                     msg = "FACE_PRIORITY";
1080                     ret = 0;
1081                     break;
1082                 case ANDROID_CONTROL_SCENE_MODE_ACTION:
1083                     msg = "ACTION";
1084                     ret = 0;
1085                     break;
1086                 case ANDROID_CONTROL_SCENE_MODE_PORTRAIT:
1087                     msg = "PORTRAIT";
1088                     ret = 0;
1089                     break;
1090                 case ANDROID_CONTROL_SCENE_MODE_LANDSCAPE:
1091                     msg = "LANDSCAPE";
1092                     ret = 0;
1093                     break;
1094                 case ANDROID_CONTROL_SCENE_MODE_NIGHT:
1095                     msg = "NIGHT";
1096                     ret = 0;
1097                     break;
1098                 case ANDROID_CONTROL_SCENE_MODE_NIGHT_PORTRAIT:
1099                     msg = "NIGHT_PORTRAIT";
1100                     ret = 0;
1101                     break;
1102                 case ANDROID_CONTROL_SCENE_MODE_THEATRE:
1103                     msg = "THEATRE";
1104                     ret = 0;
1105                     break;
1106                 case ANDROID_CONTROL_SCENE_MODE_BEACH:
1107                     msg = "BEACH";
1108                     ret = 0;
1109                     break;
1110                 case ANDROID_CONTROL_SCENE_MODE_SNOW:
1111                     msg = "SNOW";
1112                     ret = 0;
1113                     break;
1114                 case ANDROID_CONTROL_SCENE_MODE_SUNSET:
1115                     msg = "SUNSET";
1116                     ret = 0;
1117                     break;
1118                 case ANDROID_CONTROL_SCENE_MODE_STEADYPHOTO:
1119                     msg = "STEADYPHOTO";
1120                     ret = 0;
1121                     break;
1122                 case ANDROID_CONTROL_SCENE_MODE_FIREWORKS:
1123                     msg = "FIREWORKS";
1124                     ret = 0;
1125                     break;
1126                 case ANDROID_CONTROL_SCENE_MODE_SPORTS:
1127                     msg = "SPORTS";
1128                     ret = 0;
1129                     break;
1130                 case ANDROID_CONTROL_SCENE_MODE_PARTY:
1131                     msg = "PARTY";
1132                     ret = 0;
1133                     break;
1134                 case ANDROID_CONTROL_SCENE_MODE_CANDLELIGHT:
1135                     msg = "CANDLELIGHT";
1136                     ret = 0;
1137                     break;
1138                 case ANDROID_CONTROL_SCENE_MODE_BARCODE:
1139                     msg = "BARCODE";
1140                     ret = 0;
1141                     break;
1142                 case ANDROID_CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO:
1143                     msg = "HIGH_SPEED_VIDEO";
1144                     ret = 0;
1145                     break;
1146                 case ANDROID_CONTROL_SCENE_MODE_HDR:
1147                     msg = "HDR";
1148                     ret = 0;
1149                     break;
1150                 case ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY_LOW_LIGHT:
1151                     msg = "FACE_PRIORITY_LOW_LIGHT";
1152                     ret = 0;
1153                     break;
1154                 case ANDROID_CONTROL_SCENE_MODE_DEVICE_CUSTOM_START:
1155                     msg = "DEVICE_CUSTOM_START";
1156                     ret = 0;
1157                     break;
1158                 case ANDROID_CONTROL_SCENE_MODE_DEVICE_CUSTOM_END:
1159                     msg = "DEVICE_CUSTOM_END";
1160                     ret = 0;
1161                     break;
1162                 default:
1163                     msg = "error: enum value out of range";
1164             }
1165             break;
1166         }
1167         case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE: {
1168             switch (value) {
1169                 case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_OFF:
1170                     msg = "OFF";
1171                     ret = 0;
1172                     break;
1173                 case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_ON:
1174                     msg = "ON";
1175                     ret = 0;
1176                     break;
1177                 default:
1178                     msg = "error: enum value out of range";
1179             }
1180             break;
1181         }
1182         case ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES: {
1183             break;
1184         }
1185         case ANDROID_CONTROL_AE_AVAILABLE_MODES: {
1186             break;
1187         }
1188         case ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES: {
1189             break;
1190         }
1191         case ANDROID_CONTROL_AE_COMPENSATION_RANGE: {
1192             break;
1193         }
1194         case ANDROID_CONTROL_AE_COMPENSATION_STEP: {
1195             break;
1196         }
1197         case ANDROID_CONTROL_AF_AVAILABLE_MODES: {
1198             break;
1199         }
1200         case ANDROID_CONTROL_AVAILABLE_EFFECTS: {
1201             break;
1202         }
1203         case ANDROID_CONTROL_AVAILABLE_SCENE_MODES: {
1204             break;
1205         }
1206         case ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES: {
1207             break;
1208         }
1209         case ANDROID_CONTROL_AWB_AVAILABLE_MODES: {
1210             break;
1211         }
1212         case ANDROID_CONTROL_MAX_REGIONS: {
1213             break;
1214         }
1215         case ANDROID_CONTROL_SCENE_MODE_OVERRIDES: {
1216             break;
1217         }
1218         case ANDROID_CONTROL_AE_PRECAPTURE_ID: {
1219             break;
1220         }
1221         case ANDROID_CONTROL_AE_STATE: {
1222             switch (value) {
1223                 case ANDROID_CONTROL_AE_STATE_INACTIVE:
1224                     msg = "INACTIVE";
1225                     ret = 0;
1226                     break;
1227                 case ANDROID_CONTROL_AE_STATE_SEARCHING:
1228                     msg = "SEARCHING";
1229                     ret = 0;
1230                     break;
1231                 case ANDROID_CONTROL_AE_STATE_CONVERGED:
1232                     msg = "CONVERGED";
1233                     ret = 0;
1234                     break;
1235                 case ANDROID_CONTROL_AE_STATE_LOCKED:
1236                     msg = "LOCKED";
1237                     ret = 0;
1238                     break;
1239                 case ANDROID_CONTROL_AE_STATE_FLASH_REQUIRED:
1240                     msg = "FLASH_REQUIRED";
1241                     ret = 0;
1242                     break;
1243                 case ANDROID_CONTROL_AE_STATE_PRECAPTURE:
1244                     msg = "PRECAPTURE";
1245                     ret = 0;
1246                     break;
1247                 default:
1248                     msg = "error: enum value out of range";
1249             }
1250             break;
1251         }
1252         case ANDROID_CONTROL_AF_STATE: {
1253             switch (value) {
1254                 case ANDROID_CONTROL_AF_STATE_INACTIVE:
1255                     msg = "INACTIVE";
1256                     ret = 0;
1257                     break;
1258                 case ANDROID_CONTROL_AF_STATE_PASSIVE_SCAN:
1259                     msg = "PASSIVE_SCAN";
1260                     ret = 0;
1261                     break;
1262                 case ANDROID_CONTROL_AF_STATE_PASSIVE_FOCUSED:
1263                     msg = "PASSIVE_FOCUSED";
1264                     ret = 0;
1265                     break;
1266                 case ANDROID_CONTROL_AF_STATE_ACTIVE_SCAN:
1267                     msg = "ACTIVE_SCAN";
1268                     ret = 0;
1269                     break;
1270                 case ANDROID_CONTROL_AF_STATE_FOCUSED_LOCKED:
1271                     msg = "FOCUSED_LOCKED";
1272                     ret = 0;
1273                     break;
1274                 case ANDROID_CONTROL_AF_STATE_NOT_FOCUSED_LOCKED:
1275                     msg = "NOT_FOCUSED_LOCKED";
1276                     ret = 0;
1277                     break;
1278                 case ANDROID_CONTROL_AF_STATE_PASSIVE_UNFOCUSED:
1279                     msg = "PASSIVE_UNFOCUSED";
1280                     ret = 0;
1281                     break;
1282                 default:
1283                     msg = "error: enum value out of range";
1284             }
1285             break;
1286         }
1287         case ANDROID_CONTROL_AF_TRIGGER_ID: {
1288             break;
1289         }
1290         case ANDROID_CONTROL_AWB_STATE: {
1291             switch (value) {
1292                 case ANDROID_CONTROL_AWB_STATE_INACTIVE:
1293                     msg = "INACTIVE";
1294                     ret = 0;
1295                     break;
1296                 case ANDROID_CONTROL_AWB_STATE_SEARCHING:
1297                     msg = "SEARCHING";
1298                     ret = 0;
1299                     break;
1300                 case ANDROID_CONTROL_AWB_STATE_CONVERGED:
1301                     msg = "CONVERGED";
1302                     ret = 0;
1303                     break;
1304                 case ANDROID_CONTROL_AWB_STATE_LOCKED:
1305                     msg = "LOCKED";
1306                     ret = 0;
1307                     break;
1308                 default:
1309                     msg = "error: enum value out of range";
1310             }
1311             break;
1312         }
1313         case ANDROID_CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS: {
1314             break;
1315         }
1316         case ANDROID_CONTROL_AE_LOCK_AVAILABLE: {
1317             switch (value) {
1318                 case ANDROID_CONTROL_AE_LOCK_AVAILABLE_FALSE:
1319                     msg = "FALSE";
1320                     ret = 0;
1321                     break;
1322                 case ANDROID_CONTROL_AE_LOCK_AVAILABLE_TRUE:
1323                     msg = "TRUE";
1324                     ret = 0;
1325                     break;
1326                 default:
1327                     msg = "error: enum value out of range";
1328             }
1329             break;
1330         }
1331         case ANDROID_CONTROL_AWB_LOCK_AVAILABLE: {
1332             switch (value) {
1333                 case ANDROID_CONTROL_AWB_LOCK_AVAILABLE_FALSE:
1334                     msg = "FALSE";
1335                     ret = 0;
1336                     break;
1337                 case ANDROID_CONTROL_AWB_LOCK_AVAILABLE_TRUE:
1338                     msg = "TRUE";
1339                     ret = 0;
1340                     break;
1341                 default:
1342                     msg = "error: enum value out of range";
1343             }
1344             break;
1345         }
1346         case ANDROID_CONTROL_AVAILABLE_MODES: {
1347             break;
1348         }
1349         case ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE: {
1350             break;
1351         }
1352         case ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST: {
1353             break;
1354         }
1355         case ANDROID_CONTROL_ENABLE_ZSL: {
1356             switch (value) {
1357                 case ANDROID_CONTROL_ENABLE_ZSL_FALSE:
1358                     msg = "FALSE";
1359                     ret = 0;
1360                     break;
1361                 case ANDROID_CONTROL_ENABLE_ZSL_TRUE:
1362                     msg = "TRUE";
1363                     ret = 0;
1364                     break;
1365                 default:
1366                     msg = "error: enum value out of range";
1367             }
1368             break;
1369         }
1370
1371         case ANDROID_DEMOSAIC_MODE: {
1372             switch (value) {
1373                 case ANDROID_DEMOSAIC_MODE_FAST:
1374                     msg = "FAST";
1375                     ret = 0;
1376                     break;
1377                 case ANDROID_DEMOSAIC_MODE_HIGH_QUALITY:
1378                     msg = "HIGH_QUALITY";
1379                     ret = 0;
1380                     break;
1381                 default:
1382                     msg = "error: enum value out of range";
1383             }
1384             break;
1385         }
1386
1387         case ANDROID_EDGE_MODE: {
1388             switch (value) {
1389                 case ANDROID_EDGE_MODE_OFF:
1390                     msg = "OFF";
1391                     ret = 0;
1392                     break;
1393                 case ANDROID_EDGE_MODE_FAST:
1394                     msg = "FAST";
1395                     ret = 0;
1396                     break;
1397                 case ANDROID_EDGE_MODE_HIGH_QUALITY:
1398                     msg = "HIGH_QUALITY";
1399                     ret = 0;
1400                     break;
1401                 case ANDROID_EDGE_MODE_ZERO_SHUTTER_LAG:
1402                     msg = "ZERO_SHUTTER_LAG";
1403                     ret = 0;
1404                     break;
1405                 default:
1406                     msg = "error: enum value out of range";
1407             }
1408             break;
1409         }
1410         case ANDROID_EDGE_STRENGTH: {
1411             break;
1412         }
1413         case ANDROID_EDGE_AVAILABLE_EDGE_MODES: {
1414             break;
1415         }
1416
1417         case ANDROID_FLASH_FIRING_POWER: {
1418             break;
1419         }
1420         case ANDROID_FLASH_FIRING_TIME: {
1421             break;
1422         }
1423         case ANDROID_FLASH_MODE: {
1424             switch (value) {
1425                 case ANDROID_FLASH_MODE_OFF:
1426                     msg = "OFF";
1427                     ret = 0;
1428                     break;
1429                 case ANDROID_FLASH_MODE_SINGLE:
1430                     msg = "SINGLE";
1431                     ret = 0;
1432                     break;
1433                 case ANDROID_FLASH_MODE_TORCH:
1434                     msg = "TORCH";
1435                     ret = 0;
1436                     break;
1437                 default:
1438                     msg = "error: enum value out of range";
1439             }
1440             break;
1441         }
1442         case ANDROID_FLASH_COLOR_TEMPERATURE: {
1443             break;
1444         }
1445         case ANDROID_FLASH_MAX_ENERGY: {
1446             break;
1447         }
1448         case ANDROID_FLASH_STATE: {
1449             switch (value) {
1450                 case ANDROID_FLASH_STATE_UNAVAILABLE:
1451                     msg = "UNAVAILABLE";
1452                     ret = 0;
1453                     break;
1454                 case ANDROID_FLASH_STATE_CHARGING:
1455                     msg = "CHARGING";
1456                     ret = 0;
1457                     break;
1458                 case ANDROID_FLASH_STATE_READY:
1459                     msg = "READY";
1460                     ret = 0;
1461                     break;
1462                 case ANDROID_FLASH_STATE_FIRED:
1463                     msg = "FIRED";
1464                     ret = 0;
1465                     break;
1466                 case ANDROID_FLASH_STATE_PARTIAL:
1467                     msg = "PARTIAL";
1468                     ret = 0;
1469                     break;
1470                 default:
1471                     msg = "error: enum value out of range";
1472             }
1473             break;
1474         }
1475
1476         case ANDROID_FLASH_INFO_AVAILABLE: {
1477             switch (value) {
1478                 case ANDROID_FLASH_INFO_AVAILABLE_FALSE:
1479                     msg = "FALSE";
1480                     ret = 0;
1481                     break;
1482                 case ANDROID_FLASH_INFO_AVAILABLE_TRUE:
1483                     msg = "TRUE";
1484                     ret = 0;
1485                     break;
1486                 default:
1487                     msg = "error: enum value out of range";
1488             }
1489             break;
1490         }
1491         case ANDROID_FLASH_INFO_CHARGE_DURATION: {
1492             break;
1493         }
1494
1495         case ANDROID_HOT_PIXEL_MODE: {
1496             switch (value) {
1497                 case ANDROID_HOT_PIXEL_MODE_OFF:
1498                     msg = "OFF";
1499                     ret = 0;
1500                     break;
1501                 case ANDROID_HOT_PIXEL_MODE_FAST:
1502                     msg = "FAST";
1503                     ret = 0;
1504                     break;
1505                 case ANDROID_HOT_PIXEL_MODE_HIGH_QUALITY:
1506                     msg = "HIGH_QUALITY";
1507                     ret = 0;
1508                     break;
1509                 default:
1510                     msg = "error: enum value out of range";
1511             }
1512             break;
1513         }
1514         case ANDROID_HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES: {
1515             break;
1516         }
1517
1518         case ANDROID_JPEG_GPS_COORDINATES: {
1519             break;
1520         }
1521         case ANDROID_JPEG_GPS_PROCESSING_METHOD: {
1522             break;
1523         }
1524         case ANDROID_JPEG_GPS_TIMESTAMP: {
1525             break;
1526         }
1527         case ANDROID_JPEG_ORIENTATION: {
1528             break;
1529         }
1530         case ANDROID_JPEG_QUALITY: {
1531             break;
1532         }
1533         case ANDROID_JPEG_THUMBNAIL_QUALITY: {
1534             break;
1535         }
1536         case ANDROID_JPEG_THUMBNAIL_SIZE: {
1537             break;
1538         }
1539         case ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES: {
1540             break;
1541         }
1542         case ANDROID_JPEG_MAX_SIZE: {
1543             break;
1544         }
1545         case ANDROID_JPEG_SIZE: {
1546             break;
1547         }
1548
1549         case ANDROID_LENS_APERTURE: {
1550             break;
1551         }
1552         case ANDROID_LENS_FILTER_DENSITY: {
1553             break;
1554         }
1555         case ANDROID_LENS_FOCAL_LENGTH: {
1556             break;
1557         }
1558         case ANDROID_LENS_FOCUS_DISTANCE: {
1559             break;
1560         }
1561         case ANDROID_LENS_OPTICAL_STABILIZATION_MODE: {
1562             switch (value) {
1563                 case ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF:
1564                     msg = "OFF";
1565                     ret = 0;
1566                     break;
1567                 case ANDROID_LENS_OPTICAL_STABILIZATION_MODE_ON:
1568                     msg = "ON";
1569                     ret = 0;
1570                     break;
1571                 default:
1572                     msg = "error: enum value out of range";
1573             }
1574             break;
1575         }
1576         case ANDROID_LENS_FACING: {
1577             switch (value) {
1578                 case ANDROID_LENS_FACING_FRONT:
1579                     msg = "FRONT";
1580                     ret = 0;
1581                     break;
1582                 case ANDROID_LENS_FACING_BACK:
1583                     msg = "BACK";
1584                     ret = 0;
1585                     break;
1586                 case ANDROID_LENS_FACING_EXTERNAL:
1587                     msg = "EXTERNAL";
1588                     ret = 0;
1589                     break;
1590                 default:
1591                     msg = "error: enum value out of range";
1592             }
1593             break;
1594         }
1595         case ANDROID_LENS_POSE_ROTATION: {
1596             break;
1597         }
1598         case ANDROID_LENS_POSE_TRANSLATION: {
1599             break;
1600         }
1601         case ANDROID_LENS_FOCUS_RANGE: {
1602             break;
1603         }
1604         case ANDROID_LENS_STATE: {
1605             switch (value) {
1606                 case ANDROID_LENS_STATE_STATIONARY:
1607                     msg = "STATIONARY";
1608                     ret = 0;
1609                     break;
1610                 case ANDROID_LENS_STATE_MOVING:
1611                     msg = "MOVING";
1612                     ret = 0;
1613                     break;
1614                 default:
1615                     msg = "error: enum value out of range";
1616             }
1617             break;
1618         }
1619         case ANDROID_LENS_INTRINSIC_CALIBRATION: {
1620             break;
1621         }
1622         case ANDROID_LENS_RADIAL_DISTORTION: {
1623             break;
1624         }
1625
1626         case ANDROID_LENS_INFO_AVAILABLE_APERTURES: {
1627             break;
1628         }
1629         case ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES: {
1630             break;
1631         }
1632         case ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS: {
1633             break;
1634         }
1635         case ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION: {
1636             break;
1637         }
1638         case ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE: {
1639             break;
1640         }
1641         case ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE: {
1642             break;
1643         }
1644         case ANDROID_LENS_INFO_SHADING_MAP_SIZE: {
1645             break;
1646         }
1647         case ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION: {
1648             switch (value) {
1649                 case ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED:
1650                     msg = "UNCALIBRATED";
1651                     ret = 0;
1652                     break;
1653                 case ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE:
1654                     msg = "APPROXIMATE";
1655                     ret = 0;
1656                     break;
1657                 case ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED:
1658                     msg = "CALIBRATED";
1659                     ret = 0;
1660                     break;
1661                 default:
1662                     msg = "error: enum value out of range";
1663             }
1664             break;
1665         }
1666
1667         case ANDROID_NOISE_REDUCTION_MODE: {
1668             switch (value) {
1669                 case ANDROID_NOISE_REDUCTION_MODE_OFF:
1670                     msg = "OFF";
1671                     ret = 0;
1672                     break;
1673                 case ANDROID_NOISE_REDUCTION_MODE_FAST:
1674                     msg = "FAST";
1675                     ret = 0;
1676                     break;
1677                 case ANDROID_NOISE_REDUCTION_MODE_HIGH_QUALITY:
1678                     msg = "HIGH_QUALITY";
1679                     ret = 0;
1680                     break;
1681                 case ANDROID_NOISE_REDUCTION_MODE_MINIMAL:
1682                     msg = "MINIMAL";
1683                     ret = 0;
1684                     break;
1685                 case ANDROID_NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG:
1686                     msg = "ZERO_SHUTTER_LAG";
1687                     ret = 0;
1688                     break;
1689                 default:
1690                     msg = "error: enum value out of range";
1691             }
1692             break;
1693         }
1694         case ANDROID_NOISE_REDUCTION_STRENGTH: {
1695             break;
1696         }
1697         case ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES: {
1698             break;
1699         }
1700
1701         case ANDROID_QUIRKS_METERING_CROP_REGION: {
1702             break;
1703         }
1704         case ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO: {
1705             break;
1706         }
1707         case ANDROID_QUIRKS_USE_ZSL_FORMAT: {
1708             break;
1709         }
1710         case ANDROID_QUIRKS_USE_PARTIAL_RESULT: {
1711             break;
1712         }
1713         case ANDROID_QUIRKS_PARTIAL_RESULT: {
1714             switch (value) {
1715                 case ANDROID_QUIRKS_PARTIAL_RESULT_FINAL:
1716                     msg = "FINAL";
1717                     ret = 0;
1718                     break;
1719                 case ANDROID_QUIRKS_PARTIAL_RESULT_PARTIAL:
1720                     msg = "PARTIAL";
1721                     ret = 0;
1722                     break;
1723                 default:
1724                     msg = "error: enum value out of range";
1725             }
1726             break;
1727         }
1728
1729         case ANDROID_REQUEST_FRAME_COUNT: {
1730             break;
1731         }
1732         case ANDROID_REQUEST_ID: {
1733             break;
1734         }
1735         case ANDROID_REQUEST_INPUT_STREAMS: {
1736             break;
1737         }
1738         case ANDROID_REQUEST_METADATA_MODE: {
1739             switch (value) {
1740                 case ANDROID_REQUEST_METADATA_MODE_NONE:
1741                     msg = "NONE";
1742                     ret = 0;
1743                     break;
1744                 case ANDROID_REQUEST_METADATA_MODE_FULL:
1745                     msg = "FULL";
1746                     ret = 0;
1747                     break;
1748                 default:
1749                     msg = "error: enum value out of range";
1750             }
1751             break;
1752         }
1753         case ANDROID_REQUEST_OUTPUT_STREAMS: {
1754             break;
1755         }
1756         case ANDROID_REQUEST_TYPE: {
1757             switch (value) {
1758                 case ANDROID_REQUEST_TYPE_CAPTURE:
1759                     msg = "CAPTURE";
1760                     ret = 0;
1761                     break;
1762                 case ANDROID_REQUEST_TYPE_REPROCESS:
1763                     msg = "REPROCESS";
1764                     ret = 0;
1765                     break;
1766                 default:
1767                     msg = "error: enum value out of range";
1768             }
1769             break;
1770         }
1771         case ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS: {
1772             break;
1773         }
1774         case ANDROID_REQUEST_MAX_NUM_REPROCESS_STREAMS: {
1775             break;
1776         }
1777         case ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS: {
1778             break;
1779         }
1780         case ANDROID_REQUEST_PIPELINE_DEPTH: {
1781             break;
1782         }
1783         case ANDROID_REQUEST_PIPELINE_MAX_DEPTH: {
1784             break;
1785         }
1786         case ANDROID_REQUEST_PARTIAL_RESULT_COUNT: {
1787             break;
1788         }
1789         case ANDROID_REQUEST_AVAILABLE_CAPABILITIES: {
1790             switch (value) {
1791                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE:
1792                     msg = "BACKWARD_COMPATIBLE";
1793                     ret = 0;
1794                     break;
1795                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR:
1796                     msg = "MANUAL_SENSOR";
1797                     ret = 0;
1798                     break;
1799                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING:
1800                     msg = "MANUAL_POST_PROCESSING";
1801                     ret = 0;
1802                     break;
1803                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_RAW:
1804                     msg = "RAW";
1805                     ret = 0;
1806                     break;
1807                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING:
1808                     msg = "PRIVATE_REPROCESSING";
1809                     ret = 0;
1810                     break;
1811                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS:
1812                     msg = "READ_SENSOR_SETTINGS";
1813                     ret = 0;
1814                     break;
1815                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE:
1816                     msg = "BURST_CAPTURE";
1817                     ret = 0;
1818                     break;
1819                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING:
1820                     msg = "YUV_REPROCESSING";
1821                     ret = 0;
1822                     break;
1823                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT:
1824                     msg = "DEPTH_OUTPUT";
1825                     ret = 0;
1826                     break;
1827                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO:
1828                     msg = "CONSTRAINED_HIGH_SPEED_VIDEO";
1829                     ret = 0;
1830                     break;
1831                 default:
1832                     msg = "error: enum value out of range";
1833             }
1834             break;
1835         }
1836         case ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS: {
1837             break;
1838         }
1839         case ANDROID_REQUEST_AVAILABLE_RESULT_KEYS: {
1840             break;
1841         }
1842         case ANDROID_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS: {
1843             break;
1844         }
1845
1846         case ANDROID_SCALER_CROP_REGION: {
1847             break;
1848         }
1849         case ANDROID_SCALER_AVAILABLE_FORMATS: {
1850             switch (value) {
1851                 case ANDROID_SCALER_AVAILABLE_FORMATS_RAW16:
1852                     msg = "RAW16";
1853                     ret = 0;
1854                     break;
1855                 case ANDROID_SCALER_AVAILABLE_FORMATS_RAW_OPAQUE:
1856                     msg = "RAW_OPAQUE";
1857                     ret = 0;
1858                     break;
1859                 case ANDROID_SCALER_AVAILABLE_FORMATS_YV12:
1860                     msg = "YV12";
1861                     ret = 0;
1862                     break;
1863                 case ANDROID_SCALER_AVAILABLE_FORMATS_YCrCb_420_SP:
1864                     msg = "YCrCb_420_SP";
1865                     ret = 0;
1866                     break;
1867                 case ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED:
1868                     msg = "IMPLEMENTATION_DEFINED";
1869                     ret = 0;
1870                     break;
1871                 case ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888:
1872                     msg = "YCbCr_420_888";
1873                     ret = 0;
1874                     break;
1875                 case ANDROID_SCALER_AVAILABLE_FORMATS_BLOB:
1876                     msg = "BLOB";
1877                     ret = 0;
1878                     break;
1879                 default:
1880                     msg = "error: enum value out of range";
1881             }
1882             break;
1883         }
1884         case ANDROID_SCALER_AVAILABLE_JPEG_MIN_DURATIONS: {
1885             break;
1886         }
1887         case ANDROID_SCALER_AVAILABLE_JPEG_SIZES: {
1888             break;
1889         }
1890         case ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM: {
1891             break;
1892         }
1893         case ANDROID_SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS: {
1894             break;
1895         }
1896         case ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES: {
1897             break;
1898         }
1899         case ANDROID_SCALER_AVAILABLE_RAW_MIN_DURATIONS: {
1900             break;
1901         }
1902         case ANDROID_SCALER_AVAILABLE_RAW_SIZES: {
1903             break;
1904         }
1905         case ANDROID_SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP: {
1906             break;
1907         }
1908         case ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS: {
1909             switch (value) {
1910                 case ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT:
1911                     msg = "OUTPUT";
1912                     ret = 0;
1913                     break;
1914                 case ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_INPUT:
1915                     msg = "INPUT";
1916                     ret = 0;
1917                     break;
1918                 default:
1919                     msg = "error: enum value out of range";
1920             }
1921             break;
1922         }
1923         case ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS: {
1924             break;
1925         }
1926         case ANDROID_SCALER_AVAILABLE_STALL_DURATIONS: {
1927             break;
1928         }
1929         case ANDROID_SCALER_CROPPING_TYPE: {
1930             switch (value) {
1931                 case ANDROID_SCALER_CROPPING_TYPE_CENTER_ONLY:
1932                     msg = "CENTER_ONLY";
1933                     ret = 0;
1934                     break;
1935                 case ANDROID_SCALER_CROPPING_TYPE_FREEFORM:
1936                     msg = "FREEFORM";
1937                     ret = 0;
1938                     break;
1939                 default:
1940                     msg = "error: enum value out of range";
1941             }
1942             break;
1943         }
1944
1945         case ANDROID_SENSOR_EXPOSURE_TIME: {
1946             break;
1947         }
1948         case ANDROID_SENSOR_FRAME_DURATION: {
1949             break;
1950         }
1951         case ANDROID_SENSOR_SENSITIVITY: {
1952             break;
1953         }
1954         case ANDROID_SENSOR_REFERENCE_ILLUMINANT1: {
1955             switch (value) {
1956                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT:
1957                     msg = "DAYLIGHT";
1958                     ret = 0;
1959                     break;
1960                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FLUORESCENT:
1961                     msg = "FLUORESCENT";
1962                     ret = 0;
1963                     break;
1964                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_TUNGSTEN:
1965                     msg = "TUNGSTEN";
1966                     ret = 0;
1967                     break;
1968                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FLASH:
1969                     msg = "FLASH";
1970                     ret = 0;
1971                     break;
1972                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FINE_WEATHER:
1973                     msg = "FINE_WEATHER";
1974                     ret = 0;
1975                     break;
1976                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_CLOUDY_WEATHER:
1977                     msg = "CLOUDY_WEATHER";
1978                     ret = 0;
1979                     break;
1980                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_SHADE:
1981                     msg = "SHADE";
1982                     ret = 0;
1983                     break;
1984                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT_FLUORESCENT:
1985                     msg = "DAYLIGHT_FLUORESCENT";
1986                     ret = 0;
1987                     break;
1988                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAY_WHITE_FLUORESCENT:
1989                     msg = "DAY_WHITE_FLUORESCENT";
1990                     ret = 0;
1991                     break;
1992                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_COOL_WHITE_FLUORESCENT:
1993                     msg = "COOL_WHITE_FLUORESCENT";
1994                     ret = 0;
1995                     break;
1996                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_WHITE_FLUORESCENT:
1997                     msg = "WHITE_FLUORESCENT";
1998                     ret = 0;
1999                     break;
2000                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_A:
2001                     msg = "STANDARD_A";
2002                     ret = 0;
2003                     break;
2004                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_B:
2005                     msg = "STANDARD_B";
2006                     ret = 0;
2007                     break;
2008                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_C:
2009                     msg = "STANDARD_C";
2010                     ret = 0;
2011                     break;
2012                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D55:
2013                     msg = "D55";
2014                     ret = 0;
2015                     break;
2016                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D65:
2017                     msg = "D65";
2018                     ret = 0;
2019                     break;
2020                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D75:
2021                     msg = "D75";
2022                     ret = 0;
2023                     break;
2024                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D50:
2025                     msg = "D50";
2026                     ret = 0;
2027                     break;
2028                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_ISO_STUDIO_TUNGSTEN:
2029                     msg = "ISO_STUDIO_TUNGSTEN";
2030                     ret = 0;
2031                     break;
2032                 default:
2033                     msg = "error: enum value out of range";
2034             }
2035             break;
2036         }
2037         case ANDROID_SENSOR_REFERENCE_ILLUMINANT2: {
2038             break;
2039         }
2040         case ANDROID_SENSOR_CALIBRATION_TRANSFORM1: {
2041             break;
2042         }
2043         case ANDROID_SENSOR_CALIBRATION_TRANSFORM2: {
2044             break;
2045         }
2046         case ANDROID_SENSOR_COLOR_TRANSFORM1: {
2047             break;
2048         }
2049         case ANDROID_SENSOR_COLOR_TRANSFORM2: {
2050             break;
2051         }
2052         case ANDROID_SENSOR_FORWARD_MATRIX1: {
2053             break;
2054         }
2055         case ANDROID_SENSOR_FORWARD_MATRIX2: {
2056             break;
2057         }
2058         case ANDROID_SENSOR_BASE_GAIN_FACTOR: {
2059             break;
2060         }
2061         case ANDROID_SENSOR_BLACK_LEVEL_PATTERN: {
2062             break;
2063         }
2064         case ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY: {
2065             break;
2066         }
2067         case ANDROID_SENSOR_ORIENTATION: {
2068             break;
2069         }
2070         case ANDROID_SENSOR_PROFILE_HUE_SAT_MAP_DIMENSIONS: {
2071             break;
2072         }
2073         case ANDROID_SENSOR_TIMESTAMP: {
2074             break;
2075         }
2076         case ANDROID_SENSOR_TEMPERATURE: {
2077             break;
2078         }
2079         case ANDROID_SENSOR_NEUTRAL_COLOR_POINT: {
2080             break;
2081         }
2082         case ANDROID_SENSOR_NOISE_PROFILE: {
2083             break;
2084         }
2085         case ANDROID_SENSOR_PROFILE_HUE_SAT_MAP: {
2086             break;
2087         }
2088         case ANDROID_SENSOR_PROFILE_TONE_CURVE: {
2089             break;
2090         }
2091         case ANDROID_SENSOR_GREEN_SPLIT: {
2092             break;
2093         }
2094         case ANDROID_SENSOR_TEST_PATTERN_DATA: {
2095             break;
2096         }
2097         case ANDROID_SENSOR_TEST_PATTERN_MODE: {
2098             switch (value) {
2099                 case ANDROID_SENSOR_TEST_PATTERN_MODE_OFF:
2100                     msg = "OFF";
2101                     ret = 0;
2102                     break;
2103                 case ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR:
2104                     msg = "SOLID_COLOR";
2105                     ret = 0;
2106                     break;
2107                 case ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS:
2108                     msg = "COLOR_BARS";
2109                     ret = 0;
2110                     break;
2111                 case ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY:
2112                     msg = "COLOR_BARS_FADE_TO_GRAY";
2113                     ret = 0;
2114                     break;
2115                 case ANDROID_SENSOR_TEST_PATTERN_MODE_PN9:
2116                     msg = "PN9";
2117                     ret = 0;
2118                     break;
2119                 case ANDROID_SENSOR_TEST_PATTERN_MODE_CUSTOM1:
2120                     msg = "CUSTOM1";
2121                     ret = 0;
2122                     break;
2123                 default:
2124                     msg = "error: enum value out of range";
2125             }
2126             break;
2127         }
2128         case ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES: {
2129             break;
2130         }
2131         case ANDROID_SENSOR_ROLLING_SHUTTER_SKEW: {
2132             break;
2133         }
2134         case ANDROID_SENSOR_OPTICAL_BLACK_REGIONS: {
2135             break;
2136         }
2137         case ANDROID_SENSOR_DYNAMIC_BLACK_LEVEL: {
2138             break;
2139         }
2140         case ANDROID_SENSOR_DYNAMIC_WHITE_LEVEL: {
2141             break;
2142         }
2143         case ANDROID_SENSOR_OPAQUE_RAW_SIZE: {
2144             break;
2145         }
2146
2147         case ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE: {
2148             break;
2149         }
2150         case ANDROID_SENSOR_INFO_SENSITIVITY_RANGE: {
2151             break;
2152         }
2153         case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT: {
2154             switch (value) {
2155                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB:
2156                     msg = "RGGB";
2157                     ret = 0;
2158                     break;
2159                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG:
2160                     msg = "GRBG";
2161                     ret = 0;
2162                     break;
2163                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG:
2164                     msg = "GBRG";
2165                     ret = 0;
2166                     break;
2167                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_BGGR:
2168                     msg = "BGGR";
2169                     ret = 0;
2170                     break;
2171                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGB:
2172                     msg = "RGB";
2173                     ret = 0;
2174                     break;
2175                 default:
2176                     msg = "error: enum value out of range";
2177             }
2178             break;
2179         }
2180         case ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE: {
2181             break;
2182         }
2183         case ANDROID_SENSOR_INFO_MAX_FRAME_DURATION: {
2184             break;
2185         }
2186         case ANDROID_SENSOR_INFO_PHYSICAL_SIZE: {
2187             break;
2188         }
2189         case ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE: {
2190             break;
2191         }
2192         case ANDROID_SENSOR_INFO_WHITE_LEVEL: {
2193             break;
2194         }
2195         case ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE: {
2196             switch (value) {
2197                 case ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN:
2198                     msg = "UNKNOWN";
2199                     ret = 0;
2200                     break;
2201                 case ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME:
2202                     msg = "REALTIME";
2203                     ret = 0;
2204                     break;
2205                 default:
2206                     msg = "error: enum value out of range";
2207             }
2208             break;
2209         }
2210         case ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED: {
2211             switch (value) {
2212                 case ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED_FALSE:
2213                     msg = "FALSE";
2214                     ret = 0;
2215                     break;
2216                 case ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED_TRUE:
2217                     msg = "TRUE";
2218                     ret = 0;
2219                     break;
2220                 default:
2221                     msg = "error: enum value out of range";
2222             }
2223             break;
2224         }
2225         case ANDROID_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE: {
2226             break;
2227         }
2228
2229         case ANDROID_SHADING_MODE: {
2230             switch (value) {
2231                 case ANDROID_SHADING_MODE_OFF:
2232                     msg = "OFF";
2233                     ret = 0;
2234                     break;
2235                 case ANDROID_SHADING_MODE_FAST:
2236                     msg = "FAST";
2237                     ret = 0;
2238                     break;
2239                 case ANDROID_SHADING_MODE_HIGH_QUALITY:
2240                     msg = "HIGH_QUALITY";
2241                     ret = 0;
2242                     break;
2243                 default:
2244                     msg = "error: enum value out of range";
2245             }
2246             break;
2247         }
2248         case ANDROID_SHADING_STRENGTH: {
2249             break;
2250         }
2251         case ANDROID_SHADING_AVAILABLE_MODES: {
2252             break;
2253         }
2254
2255         case ANDROID_STATISTICS_FACE_DETECT_MODE: {
2256             switch (value) {
2257                 case ANDROID_STATISTICS_FACE_DETECT_MODE_OFF:
2258                     msg = "OFF";
2259                     ret = 0;
2260                     break;
2261                 case ANDROID_STATISTICS_FACE_DETECT_MODE_SIMPLE:
2262                     msg = "SIMPLE";
2263                     ret = 0;
2264                     break;
2265                 case ANDROID_STATISTICS_FACE_DETECT_MODE_FULL:
2266                     msg = "FULL";
2267                     ret = 0;
2268                     break;
2269                 default:
2270                     msg = "error: enum value out of range";
2271             }
2272             break;
2273         }
2274         case ANDROID_STATISTICS_HISTOGRAM_MODE: {
2275             switch (value) {
2276                 case ANDROID_STATISTICS_HISTOGRAM_MODE_OFF:
2277                     msg = "OFF";
2278                     ret = 0;
2279                     break;
2280                 case ANDROID_STATISTICS_HISTOGRAM_MODE_ON:
2281                     msg = "ON";
2282                     ret = 0;
2283                     break;
2284                 default:
2285                     msg = "error: enum value out of range";
2286             }
2287             break;
2288         }
2289         case ANDROID_STATISTICS_SHARPNESS_MAP_MODE: {
2290             switch (value) {
2291                 case ANDROID_STATISTICS_SHARPNESS_MAP_MODE_OFF:
2292                     msg = "OFF";
2293                     ret = 0;
2294                     break;
2295                 case ANDROID_STATISTICS_SHARPNESS_MAP_MODE_ON:
2296                     msg = "ON";
2297                     ret = 0;
2298                     break;
2299                 default:
2300                     msg = "error: enum value out of range";
2301             }
2302             break;
2303         }
2304         case ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE: {
2305             switch (value) {
2306                 case ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE_OFF:
2307                     msg = "OFF";
2308                     ret = 0;
2309                     break;
2310                 case ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE_ON:
2311                     msg = "ON";
2312                     ret = 0;
2313                     break;
2314                 default:
2315                     msg = "error: enum value out of range";
2316             }
2317             break;
2318         }
2319         case ANDROID_STATISTICS_FACE_IDS: {
2320             break;
2321         }
2322         case ANDROID_STATISTICS_FACE_LANDMARKS: {
2323             break;
2324         }
2325         case ANDROID_STATISTICS_FACE_RECTANGLES: {
2326             break;
2327         }
2328         case ANDROID_STATISTICS_FACE_SCORES: {
2329             break;
2330         }
2331         case ANDROID_STATISTICS_HISTOGRAM: {
2332             break;
2333         }
2334         case ANDROID_STATISTICS_SHARPNESS_MAP: {
2335             break;
2336         }
2337         case ANDROID_STATISTICS_LENS_SHADING_CORRECTION_MAP: {
2338             break;
2339         }
2340         case ANDROID_STATISTICS_LENS_SHADING_MAP: {
2341             break;
2342         }
2343         case ANDROID_STATISTICS_PREDICTED_COLOR_GAINS: {
2344             break;
2345         }
2346         case ANDROID_STATISTICS_PREDICTED_COLOR_TRANSFORM: {
2347             break;
2348         }
2349         case ANDROID_STATISTICS_SCENE_FLICKER: {
2350             switch (value) {
2351                 case ANDROID_STATISTICS_SCENE_FLICKER_NONE:
2352                     msg = "NONE";
2353                     ret = 0;
2354                     break;
2355                 case ANDROID_STATISTICS_SCENE_FLICKER_50HZ:
2356                     msg = "50HZ";
2357                     ret = 0;
2358                     break;
2359                 case ANDROID_STATISTICS_SCENE_FLICKER_60HZ:
2360                     msg = "60HZ";
2361                     ret = 0;
2362                     break;
2363                 default:
2364                     msg = "error: enum value out of range";
2365             }
2366             break;
2367         }
2368         case ANDROID_STATISTICS_HOT_PIXEL_MAP: {
2369             break;
2370         }
2371         case ANDROID_STATISTICS_LENS_SHADING_MAP_MODE: {
2372             switch (value) {
2373                 case ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF:
2374                     msg = "OFF";
2375                     ret = 0;
2376                     break;
2377                 case ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_ON:
2378                     msg = "ON";
2379                     ret = 0;
2380                     break;
2381                 default:
2382                     msg = "error: enum value out of range";
2383             }
2384             break;
2385         }
2386
2387         case ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES: {
2388             break;
2389         }
2390         case ANDROID_STATISTICS_INFO_HISTOGRAM_BUCKET_COUNT: {
2391             break;
2392         }
2393         case ANDROID_STATISTICS_INFO_MAX_FACE_COUNT: {
2394             break;
2395         }
2396         case ANDROID_STATISTICS_INFO_MAX_HISTOGRAM_COUNT: {
2397             break;
2398         }
2399         case ANDROID_STATISTICS_INFO_MAX_SHARPNESS_MAP_VALUE: {
2400             break;
2401         }
2402         case ANDROID_STATISTICS_INFO_SHARPNESS_MAP_SIZE: {
2403             break;
2404         }
2405         case ANDROID_STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES: {
2406             break;
2407         }
2408         case ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES: {
2409             break;
2410         }
2411
2412         case ANDROID_TONEMAP_CURVE_BLUE: {
2413             break;
2414         }
2415         case ANDROID_TONEMAP_CURVE_GREEN: {
2416             break;
2417         }
2418         case ANDROID_TONEMAP_CURVE_RED: {
2419             break;
2420         }
2421         case ANDROID_TONEMAP_MODE: {
2422             switch (value) {
2423                 case ANDROID_TONEMAP_MODE_CONTRAST_CURVE:
2424                     msg = "CONTRAST_CURVE";
2425                     ret = 0;
2426                     break;
2427                 case ANDROID_TONEMAP_MODE_FAST:
2428                     msg = "FAST";
2429                     ret = 0;
2430                     break;
2431                 case ANDROID_TONEMAP_MODE_HIGH_QUALITY:
2432                     msg = "HIGH_QUALITY";
2433                     ret = 0;
2434                     break;
2435                 case ANDROID_TONEMAP_MODE_GAMMA_VALUE:
2436                     msg = "GAMMA_VALUE";
2437                     ret = 0;
2438                     break;
2439                 case ANDROID_TONEMAP_MODE_PRESET_CURVE:
2440                     msg = "PRESET_CURVE";
2441                     ret = 0;
2442                     break;
2443                 default:
2444                     msg = "error: enum value out of range";
2445             }
2446             break;
2447         }
2448         case ANDROID_TONEMAP_MAX_CURVE_POINTS: {
2449             break;
2450         }
2451         case ANDROID_TONEMAP_AVAILABLE_TONE_MAP_MODES: {
2452             break;
2453         }
2454         case ANDROID_TONEMAP_GAMMA: {
2455             break;
2456         }
2457         case ANDROID_TONEMAP_PRESET_CURVE: {
2458             switch (value) {
2459                 case ANDROID_TONEMAP_PRESET_CURVE_SRGB:
2460                     msg = "SRGB";
2461                     ret = 0;
2462                     break;
2463                 case ANDROID_TONEMAP_PRESET_CURVE_REC709:
2464                     msg = "REC709";
2465                     ret = 0;
2466                     break;
2467                 default:
2468                     msg = "error: enum value out of range";
2469             }
2470             break;
2471         }
2472
2473         case ANDROID_LED_TRANSMIT: {
2474             switch (value) {
2475                 case ANDROID_LED_TRANSMIT_OFF:
2476                     msg = "OFF";
2477                     ret = 0;
2478                     break;
2479                 case ANDROID_LED_TRANSMIT_ON:
2480                     msg = "ON";
2481                     ret = 0;
2482                     break;
2483                 default:
2484                     msg = "error: enum value out of range";
2485             }
2486             break;
2487         }
2488         case ANDROID_LED_AVAILABLE_LEDS: {
2489             switch (value) {
2490                 case ANDROID_LED_AVAILABLE_LEDS_TRANSMIT:
2491                     msg = "TRANSMIT";
2492                     ret = 0;
2493                     break;
2494                 default:
2495                     msg = "error: enum value out of range";
2496             }
2497             break;
2498         }
2499
2500         case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL: {
2501             switch (value) {
2502                 case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED:
2503                     msg = "LIMITED";
2504                     ret = 0;
2505                     break;
2506                 case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_FULL:
2507                     msg = "FULL";
2508                     ret = 0;
2509                     break;
2510                 case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY:
2511                     msg = "LEGACY";
2512                     ret = 0;
2513                     break;
2514                 case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_3:
2515                     msg = "3";
2516                     ret = 0;
2517                     break;
2518                 default:
2519                     msg = "error: enum value out of range";
2520             }
2521             break;
2522         }
2523
2524         case ANDROID_BLACK_LEVEL_LOCK: {
2525             switch (value) {
2526                 case ANDROID_BLACK_LEVEL_LOCK_OFF:
2527                     msg = "OFF";
2528                     ret = 0;
2529                     break;
2530                 case ANDROID_BLACK_LEVEL_LOCK_ON:
2531                     msg = "ON";
2532                     ret = 0;
2533                     break;
2534                 default:
2535                     msg = "error: enum value out of range";
2536             }
2537             break;
2538         }
2539
2540         case ANDROID_SYNC_FRAME_NUMBER: {
2541             switch (value) {
2542                 case ANDROID_SYNC_FRAME_NUMBER_CONVERGING:
2543                     msg = "CONVERGING";
2544                     ret = 0;
2545                     break;
2546                 case ANDROID_SYNC_FRAME_NUMBER_UNKNOWN:
2547                     msg = "UNKNOWN";
2548                     ret = 0;
2549                     break;
2550                 default:
2551                     msg = "error: enum value out of range";
2552             }
2553             break;
2554         }
2555         case ANDROID_SYNC_MAX_LATENCY: {
2556             switch (value) {
2557                 case ANDROID_SYNC_MAX_LATENCY_PER_FRAME_CONTROL:
2558                     msg = "PER_FRAME_CONTROL";
2559                     ret = 0;
2560                     break;
2561                 case ANDROID_SYNC_MAX_LATENCY_UNKNOWN:
2562                     msg = "UNKNOWN";
2563                     ret = 0;
2564                     break;
2565                 default:
2566                     msg = "error: enum value out of range";
2567             }
2568             break;
2569         }
2570
2571         case ANDROID_REPROCESS_EFFECTIVE_EXPOSURE_FACTOR: {
2572             break;
2573         }
2574         case ANDROID_REPROCESS_MAX_CAPTURE_STALL: {
2575             break;
2576         }
2577
2578         case ANDROID_DEPTH_MAX_DEPTH_SAMPLES: {
2579             break;
2580         }
2581         case ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS: {
2582             switch (value) {
2583                 case ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_OUTPUT:
2584                     msg = "OUTPUT";
2585                     ret = 0;
2586                     break;
2587                 case ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_INPUT:
2588                     msg = "INPUT";
2589                     ret = 0;
2590                     break;
2591                 default:
2592                     msg = "error: enum value out of range";
2593             }
2594             break;
2595         }
2596         case ANDROID_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS: {
2597             break;
2598         }
2599         case ANDROID_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS: {
2600             break;
2601         }
2602         case ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE: {
2603             switch (value) {
2604                 case ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE_FALSE:
2605                     msg = "FALSE";
2606                     ret = 0;
2607                     break;
2608                 case ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE_TRUE:
2609                     msg = "TRUE";
2610                     ret = 0;
2611                     break;
2612                 default:
2613                     msg = "error: enum value out of range";
2614             }
2615             break;
2616         }
2617
2618     }
2619
2620     strncpy(dst, msg, size - 1);
2621     dst[size - 1] = '\0';
2622
2623     return ret;
2624 }
2625
2626
2627 #define CAMERA_METADATA_ENUM_STRING_MAX_SIZE 29