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