OSDN Git Service

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