OSDN Git Service

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