• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 /**
18  * !! Do not reference this file directly !!
19  *
20  * It is logically a part of camera_metadata.c.  It is broken out for ease of
21  * maintaining the tag info.
22  *
23  * Array assignments are done using specified-index syntax to keep things in
24  * sync with camera_metadata_tags.h
25  */
26 
27 /**
28  * ! Do not edit this file directly !
29  *
30  * Generated automatically from camera_metadata_tag_info.mako
31  */
32 
33 const char *camera_metadata_section_names[ANDROID_SECTION_COUNT] = {
34     [ANDROID_COLOR_CORRECTION]     = "android.colorCorrection",
35     [ANDROID_CONTROL]              = "android.control",
36     [ANDROID_DEMOSAIC]             = "android.demosaic",
37     [ANDROID_EDGE]                 = "android.edge",
38     [ANDROID_FLASH]                = "android.flash",
39     [ANDROID_FLASH_INFO]           = "android.flash.info",
40     [ANDROID_HOT_PIXEL]            = "android.hotPixel",
41     [ANDROID_JPEG]                 = "android.jpeg",
42     [ANDROID_LENS]                 = "android.lens",
43     [ANDROID_LENS_INFO]            = "android.lens.info",
44     [ANDROID_NOISE_REDUCTION]      = "android.noiseReduction",
45     [ANDROID_QUIRKS]               = "android.quirks",
46     [ANDROID_REQUEST]              = "android.request",
47     [ANDROID_SCALER]               = "android.scaler",
48     [ANDROID_SENSOR]               = "android.sensor",
49     [ANDROID_SENSOR_INFO]          = "android.sensor.info",
50     [ANDROID_SHADING]              = "android.shading",
51     [ANDROID_STATISTICS]           = "android.statistics",
52     [ANDROID_STATISTICS_INFO]      = "android.statistics.info",
53     [ANDROID_TONEMAP]              = "android.tonemap",
54     [ANDROID_LED]                  = "android.led",
55     [ANDROID_INFO]                 = "android.info",
56     [ANDROID_BLACK_LEVEL]          = "android.blackLevel",
57     [ANDROID_SYNC]                 = "android.sync",
58     [ANDROID_REPROCESS]            = "android.reprocess",
59     [ANDROID_DEPTH]                = "android.depth",
60     [ANDROID_LOGICAL_MULTI_CAMERA] = "android.logicalMultiCamera",
61     [ANDROID_DISTORTION_CORRECTION]
62                                     = "android.distortionCorrection",
63     [ANDROID_HEIC]                 = "android.heic",
64     [ANDROID_HEIC_INFO]            = "android.heic.info",
65 };
66 
67 unsigned int camera_metadata_section_bounds[ANDROID_SECTION_COUNT][2] = {
68     [ANDROID_COLOR_CORRECTION]     = { ANDROID_COLOR_CORRECTION_START,
69                                        ANDROID_COLOR_CORRECTION_END },
70     [ANDROID_CONTROL]              = { ANDROID_CONTROL_START,
71                                        ANDROID_CONTROL_END },
72     [ANDROID_DEMOSAIC]             = { ANDROID_DEMOSAIC_START,
73                                        ANDROID_DEMOSAIC_END },
74     [ANDROID_EDGE]                 = { ANDROID_EDGE_START,
75                                        ANDROID_EDGE_END },
76     [ANDROID_FLASH]                = { ANDROID_FLASH_START,
77                                        ANDROID_FLASH_END },
78     [ANDROID_FLASH_INFO]           = { ANDROID_FLASH_INFO_START,
79                                        ANDROID_FLASH_INFO_END },
80     [ANDROID_HOT_PIXEL]            = { ANDROID_HOT_PIXEL_START,
81                                        ANDROID_HOT_PIXEL_END },
82     [ANDROID_JPEG]                 = { ANDROID_JPEG_START,
83                                        ANDROID_JPEG_END },
84     [ANDROID_LENS]                 = { ANDROID_LENS_START,
85                                        ANDROID_LENS_END },
86     [ANDROID_LENS_INFO]            = { ANDROID_LENS_INFO_START,
87                                        ANDROID_LENS_INFO_END },
88     [ANDROID_NOISE_REDUCTION]      = { ANDROID_NOISE_REDUCTION_START,
89                                        ANDROID_NOISE_REDUCTION_END },
90     [ANDROID_QUIRKS]               = { ANDROID_QUIRKS_START,
91                                        ANDROID_QUIRKS_END },
92     [ANDROID_REQUEST]              = { ANDROID_REQUEST_START,
93                                        ANDROID_REQUEST_END },
94     [ANDROID_SCALER]               = { ANDROID_SCALER_START,
95                                        ANDROID_SCALER_END },
96     [ANDROID_SENSOR]               = { ANDROID_SENSOR_START,
97                                        ANDROID_SENSOR_END },
98     [ANDROID_SENSOR_INFO]          = { ANDROID_SENSOR_INFO_START,
99                                        ANDROID_SENSOR_INFO_END },
100     [ANDROID_SHADING]              = { ANDROID_SHADING_START,
101                                        ANDROID_SHADING_END },
102     [ANDROID_STATISTICS]           = { ANDROID_STATISTICS_START,
103                                        ANDROID_STATISTICS_END },
104     [ANDROID_STATISTICS_INFO]      = { ANDROID_STATISTICS_INFO_START,
105                                        ANDROID_STATISTICS_INFO_END },
106     [ANDROID_TONEMAP]              = { ANDROID_TONEMAP_START,
107                                        ANDROID_TONEMAP_END },
108     [ANDROID_LED]                  = { ANDROID_LED_START,
109                                        ANDROID_LED_END },
110     [ANDROID_INFO]                 = { ANDROID_INFO_START,
111                                        ANDROID_INFO_END },
112     [ANDROID_BLACK_LEVEL]          = { ANDROID_BLACK_LEVEL_START,
113                                        ANDROID_BLACK_LEVEL_END },
114     [ANDROID_SYNC]                 = { ANDROID_SYNC_START,
115                                        ANDROID_SYNC_END },
116     [ANDROID_REPROCESS]            = { ANDROID_REPROCESS_START,
117                                        ANDROID_REPROCESS_END },
118     [ANDROID_DEPTH]                = { ANDROID_DEPTH_START,
119                                        ANDROID_DEPTH_END },
120     [ANDROID_LOGICAL_MULTI_CAMERA] = { ANDROID_LOGICAL_MULTI_CAMERA_START,
121                                        ANDROID_LOGICAL_MULTI_CAMERA_END },
122     [ANDROID_DISTORTION_CORRECTION]
123                                     = { ANDROID_DISTORTION_CORRECTION_START,
124                                        ANDROID_DISTORTION_CORRECTION_END },
125     [ANDROID_HEIC]                 = { ANDROID_HEIC_START,
126                                        ANDROID_HEIC_END },
127     [ANDROID_HEIC_INFO]            = { ANDROID_HEIC_INFO_START,
128                                        ANDROID_HEIC_INFO_END },
129 };
130 
131 static tag_info_t android_color_correction[ANDROID_COLOR_CORRECTION_END -
132         ANDROID_COLOR_CORRECTION_START] = {
133     [ ANDROID_COLOR_CORRECTION_MODE - ANDROID_COLOR_CORRECTION_START ] =
134     { "mode",                          TYPE_BYTE   },
135     [ ANDROID_COLOR_CORRECTION_TRANSFORM - ANDROID_COLOR_CORRECTION_START ] =
136     { "transform",                     TYPE_RATIONAL
137                 },
138     [ ANDROID_COLOR_CORRECTION_GAINS - ANDROID_COLOR_CORRECTION_START ] =
139     { "gains",                         TYPE_FLOAT  },
140     [ ANDROID_COLOR_CORRECTION_ABERRATION_MODE - ANDROID_COLOR_CORRECTION_START ] =
141     { "aberrationMode",                TYPE_BYTE   },
142     [ ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES - ANDROID_COLOR_CORRECTION_START ] =
143     { "availableAberrationModes",      TYPE_BYTE   },
144 };
145 
146 static tag_info_t android_control[ANDROID_CONTROL_END -
147         ANDROID_CONTROL_START] = {
148     [ ANDROID_CONTROL_AE_ANTIBANDING_MODE - ANDROID_CONTROL_START ] =
149     { "aeAntibandingMode",             TYPE_BYTE   },
150     [ ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION - ANDROID_CONTROL_START ] =
151     { "aeExposureCompensation",        TYPE_INT32  },
152     [ ANDROID_CONTROL_AE_LOCK - ANDROID_CONTROL_START ] =
153     { "aeLock",                        TYPE_BYTE   },
154     [ ANDROID_CONTROL_AE_MODE - ANDROID_CONTROL_START ] =
155     { "aeMode",                        TYPE_BYTE   },
156     [ ANDROID_CONTROL_AE_REGIONS - ANDROID_CONTROL_START ] =
157     { "aeRegions",                     TYPE_INT32  },
158     [ ANDROID_CONTROL_AE_TARGET_FPS_RANGE - ANDROID_CONTROL_START ] =
159     { "aeTargetFpsRange",              TYPE_INT32  },
160     [ ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER - ANDROID_CONTROL_START ] =
161     { "aePrecaptureTrigger",           TYPE_BYTE   },
162     [ ANDROID_CONTROL_AF_MODE - ANDROID_CONTROL_START ] =
163     { "afMode",                        TYPE_BYTE   },
164     [ ANDROID_CONTROL_AF_REGIONS - ANDROID_CONTROL_START ] =
165     { "afRegions",                     TYPE_INT32  },
166     [ ANDROID_CONTROL_AF_TRIGGER - ANDROID_CONTROL_START ] =
167     { "afTrigger",                     TYPE_BYTE   },
168     [ ANDROID_CONTROL_AWB_LOCK - ANDROID_CONTROL_START ] =
169     { "awbLock",                       TYPE_BYTE   },
170     [ ANDROID_CONTROL_AWB_MODE - ANDROID_CONTROL_START ] =
171     { "awbMode",                       TYPE_BYTE   },
172     [ ANDROID_CONTROL_AWB_REGIONS - ANDROID_CONTROL_START ] =
173     { "awbRegions",                    TYPE_INT32  },
174     [ ANDROID_CONTROL_CAPTURE_INTENT - ANDROID_CONTROL_START ] =
175     { "captureIntent",                 TYPE_BYTE   },
176     [ ANDROID_CONTROL_EFFECT_MODE - ANDROID_CONTROL_START ] =
177     { "effectMode",                    TYPE_BYTE   },
178     [ ANDROID_CONTROL_MODE - ANDROID_CONTROL_START ] =
179     { "mode",                          TYPE_BYTE   },
180     [ ANDROID_CONTROL_SCENE_MODE - ANDROID_CONTROL_START ] =
181     { "sceneMode",                     TYPE_BYTE   },
182     [ ANDROID_CONTROL_VIDEO_STABILIZATION_MODE - ANDROID_CONTROL_START ] =
183     { "videoStabilizationMode",        TYPE_BYTE   },
184     [ ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES - ANDROID_CONTROL_START ] =
185     { "aeAvailableAntibandingModes",   TYPE_BYTE   },
186     [ ANDROID_CONTROL_AE_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
187     { "aeAvailableModes",              TYPE_BYTE   },
188     [ ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES - ANDROID_CONTROL_START ] =
189     { "aeAvailableTargetFpsRanges",    TYPE_INT32  },
190     [ ANDROID_CONTROL_AE_COMPENSATION_RANGE - ANDROID_CONTROL_START ] =
191     { "aeCompensationRange",           TYPE_INT32  },
192     [ ANDROID_CONTROL_AE_COMPENSATION_STEP - ANDROID_CONTROL_START ] =
193     { "aeCompensationStep",            TYPE_RATIONAL
194                 },
195     [ ANDROID_CONTROL_AF_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
196     { "afAvailableModes",              TYPE_BYTE   },
197     [ ANDROID_CONTROL_AVAILABLE_EFFECTS - ANDROID_CONTROL_START ] =
198     { "availableEffects",              TYPE_BYTE   },
199     [ ANDROID_CONTROL_AVAILABLE_SCENE_MODES - ANDROID_CONTROL_START ] =
200     { "availableSceneModes",           TYPE_BYTE   },
201     [ ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES - ANDROID_CONTROL_START ] =
202     { "availableVideoStabilizationModes",
203                                         TYPE_BYTE   },
204     [ ANDROID_CONTROL_AWB_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
205     { "awbAvailableModes",             TYPE_BYTE   },
206     [ ANDROID_CONTROL_MAX_REGIONS - ANDROID_CONTROL_START ] =
207     { "maxRegions",                    TYPE_INT32  },
208     [ ANDROID_CONTROL_SCENE_MODE_OVERRIDES - ANDROID_CONTROL_START ] =
209     { "sceneModeOverrides",            TYPE_BYTE   },
210     [ ANDROID_CONTROL_AE_PRECAPTURE_ID - ANDROID_CONTROL_START ] =
211     { "aePrecaptureId",                TYPE_INT32  },
212     [ ANDROID_CONTROL_AE_STATE - ANDROID_CONTROL_START ] =
213     { "aeState",                       TYPE_BYTE   },
214     [ ANDROID_CONTROL_AF_STATE - ANDROID_CONTROL_START ] =
215     { "afState",                       TYPE_BYTE   },
216     [ ANDROID_CONTROL_AF_TRIGGER_ID - ANDROID_CONTROL_START ] =
217     { "afTriggerId",                   TYPE_INT32  },
218     [ ANDROID_CONTROL_AWB_STATE - ANDROID_CONTROL_START ] =
219     { "awbState",                      TYPE_BYTE   },
220     [ ANDROID_CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS - ANDROID_CONTROL_START ] =
221     { "availableHighSpeedVideoConfigurations",
222                                         TYPE_INT32  },
223     [ ANDROID_CONTROL_AE_LOCK_AVAILABLE - ANDROID_CONTROL_START ] =
224     { "aeLockAvailable",               TYPE_BYTE   },
225     [ ANDROID_CONTROL_AWB_LOCK_AVAILABLE - ANDROID_CONTROL_START ] =
226     { "awbLockAvailable",              TYPE_BYTE   },
227     [ ANDROID_CONTROL_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
228     { "availableModes",                TYPE_BYTE   },
229     [ ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE - ANDROID_CONTROL_START ] =
230     { "postRawSensitivityBoostRange",  TYPE_INT32  },
231     [ ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST - ANDROID_CONTROL_START ] =
232     { "postRawSensitivityBoost",       TYPE_INT32  },
233     [ ANDROID_CONTROL_ENABLE_ZSL - ANDROID_CONTROL_START ] =
234     { "enableZsl",                     TYPE_BYTE   },
235     [ ANDROID_CONTROL_AF_SCENE_CHANGE - ANDROID_CONTROL_START ] =
236     { "afSceneChange",                 TYPE_BYTE   },
237     [ ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES - ANDROID_CONTROL_START ] =
238     { "availableExtendedSceneModeMaxSizes",
239                                         TYPE_INT32  },
240     [ ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES - ANDROID_CONTROL_START ] =
241     { "availableExtendedSceneModeZoomRatioRanges",
242                                         TYPE_FLOAT  },
243     [ ANDROID_CONTROL_EXTENDED_SCENE_MODE - ANDROID_CONTROL_START ] =
244     { "extendedSceneMode",             TYPE_BYTE   },
245     [ ANDROID_CONTROL_ZOOM_RATIO_RANGE - ANDROID_CONTROL_START ] =
246     { "zoomRatioRange",                TYPE_FLOAT  },
247     [ ANDROID_CONTROL_ZOOM_RATIO - ANDROID_CONTROL_START ] =
248     { "zoomRatio",                     TYPE_FLOAT  },
249     [ ANDROID_CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS_MAXIMUM_RESOLUTION - ANDROID_CONTROL_START ] =
250     { "availableHighSpeedVideoConfigurationsMaximumResolution",
251                                         TYPE_INT32  },
252     [ ANDROID_CONTROL_AF_REGIONS_SET - ANDROID_CONTROL_START ] =
253     { "afRegionsSet",                  TYPE_BYTE   },
254     [ ANDROID_CONTROL_AE_REGIONS_SET - ANDROID_CONTROL_START ] =
255     { "aeRegionsSet",                  TYPE_BYTE   },
256     [ ANDROID_CONTROL_AWB_REGIONS_SET - ANDROID_CONTROL_START ] =
257     { "awbRegionsSet",                 TYPE_BYTE   },
258 };
259 
260 static tag_info_t android_demosaic[ANDROID_DEMOSAIC_END -
261         ANDROID_DEMOSAIC_START] = {
262     [ ANDROID_DEMOSAIC_MODE - ANDROID_DEMOSAIC_START ] =
263     { "mode",                          TYPE_BYTE   },
264 };
265 
266 static tag_info_t android_edge[ANDROID_EDGE_END -
267         ANDROID_EDGE_START] = {
268     [ ANDROID_EDGE_MODE - ANDROID_EDGE_START ] =
269     { "mode",                          TYPE_BYTE   },
270     [ ANDROID_EDGE_STRENGTH - ANDROID_EDGE_START ] =
271     { "strength",                      TYPE_BYTE   },
272     [ ANDROID_EDGE_AVAILABLE_EDGE_MODES - ANDROID_EDGE_START ] =
273     { "availableEdgeModes",            TYPE_BYTE   },
274 };
275 
276 static tag_info_t android_flash[ANDROID_FLASH_END -
277         ANDROID_FLASH_START] = {
278     [ ANDROID_FLASH_FIRING_POWER - ANDROID_FLASH_START ] =
279     { "firingPower",                   TYPE_BYTE   },
280     [ ANDROID_FLASH_FIRING_TIME - ANDROID_FLASH_START ] =
281     { "firingTime",                    TYPE_INT64  },
282     [ ANDROID_FLASH_MODE - ANDROID_FLASH_START ] =
283     { "mode",                          TYPE_BYTE   },
284     [ ANDROID_FLASH_COLOR_TEMPERATURE - ANDROID_FLASH_START ] =
285     { "colorTemperature",              TYPE_BYTE   },
286     [ ANDROID_FLASH_MAX_ENERGY - ANDROID_FLASH_START ] =
287     { "maxEnergy",                     TYPE_BYTE   },
288     [ ANDROID_FLASH_STATE - ANDROID_FLASH_START ] =
289     { "state",                         TYPE_BYTE   },
290 };
291 
292 static tag_info_t android_flash_info[ANDROID_FLASH_INFO_END -
293         ANDROID_FLASH_INFO_START] = {
294     [ ANDROID_FLASH_INFO_AVAILABLE - ANDROID_FLASH_INFO_START ] =
295     { "available",                     TYPE_BYTE   },
296     [ ANDROID_FLASH_INFO_CHARGE_DURATION - ANDROID_FLASH_INFO_START ] =
297     { "chargeDuration",                TYPE_INT64  },
298 };
299 
300 static tag_info_t android_hot_pixel[ANDROID_HOT_PIXEL_END -
301         ANDROID_HOT_PIXEL_START] = {
302     [ ANDROID_HOT_PIXEL_MODE - ANDROID_HOT_PIXEL_START ] =
303     { "mode",                          TYPE_BYTE   },
304     [ ANDROID_HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES - ANDROID_HOT_PIXEL_START ] =
305     { "availableHotPixelModes",        TYPE_BYTE   },
306 };
307 
308 static tag_info_t android_jpeg[ANDROID_JPEG_END -
309         ANDROID_JPEG_START] = {
310     [ ANDROID_JPEG_GPS_COORDINATES - ANDROID_JPEG_START ] =
311     { "gpsCoordinates",                TYPE_DOUBLE },
312     [ ANDROID_JPEG_GPS_PROCESSING_METHOD - ANDROID_JPEG_START ] =
313     { "gpsProcessingMethod",           TYPE_BYTE   },
314     [ ANDROID_JPEG_GPS_TIMESTAMP - ANDROID_JPEG_START ] =
315     { "gpsTimestamp",                  TYPE_INT64  },
316     [ ANDROID_JPEG_ORIENTATION - ANDROID_JPEG_START ] =
317     { "orientation",                   TYPE_INT32  },
318     [ ANDROID_JPEG_QUALITY - ANDROID_JPEG_START ] =
319     { "quality",                       TYPE_BYTE   },
320     [ ANDROID_JPEG_THUMBNAIL_QUALITY - ANDROID_JPEG_START ] =
321     { "thumbnailQuality",              TYPE_BYTE   },
322     [ ANDROID_JPEG_THUMBNAIL_SIZE - ANDROID_JPEG_START ] =
323     { "thumbnailSize",                 TYPE_INT32  },
324     [ ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES - ANDROID_JPEG_START ] =
325     { "availableThumbnailSizes",       TYPE_INT32  },
326     [ ANDROID_JPEG_MAX_SIZE - ANDROID_JPEG_START ] =
327     { "maxSize",                       TYPE_INT32  },
328     [ ANDROID_JPEG_SIZE - ANDROID_JPEG_START ] =
329     { "size",                          TYPE_INT32  },
330 };
331 
332 static tag_info_t android_lens[ANDROID_LENS_END -
333         ANDROID_LENS_START] = {
334     [ ANDROID_LENS_APERTURE - ANDROID_LENS_START ] =
335     { "aperture",                      TYPE_FLOAT  },
336     [ ANDROID_LENS_FILTER_DENSITY - ANDROID_LENS_START ] =
337     { "filterDensity",                 TYPE_FLOAT  },
338     [ ANDROID_LENS_FOCAL_LENGTH - ANDROID_LENS_START ] =
339     { "focalLength",                   TYPE_FLOAT  },
340     [ ANDROID_LENS_FOCUS_DISTANCE - ANDROID_LENS_START ] =
341     { "focusDistance",                 TYPE_FLOAT  },
342     [ ANDROID_LENS_OPTICAL_STABILIZATION_MODE - ANDROID_LENS_START ] =
343     { "opticalStabilizationMode",      TYPE_BYTE   },
344     [ ANDROID_LENS_FACING - ANDROID_LENS_START ] =
345     { "facing",                        TYPE_BYTE   },
346     [ ANDROID_LENS_POSE_ROTATION - ANDROID_LENS_START ] =
347     { "poseRotation",                  TYPE_FLOAT  },
348     [ ANDROID_LENS_POSE_TRANSLATION - ANDROID_LENS_START ] =
349     { "poseTranslation",               TYPE_FLOAT  },
350     [ ANDROID_LENS_FOCUS_RANGE - ANDROID_LENS_START ] =
351     { "focusRange",                    TYPE_FLOAT  },
352     [ ANDROID_LENS_STATE - ANDROID_LENS_START ] =
353     { "state",                         TYPE_BYTE   },
354     [ ANDROID_LENS_INTRINSIC_CALIBRATION - ANDROID_LENS_START ] =
355     { "intrinsicCalibration",          TYPE_FLOAT  },
356     [ ANDROID_LENS_RADIAL_DISTORTION - ANDROID_LENS_START ] =
357     { "radialDistortion",              TYPE_FLOAT  },
358     [ ANDROID_LENS_POSE_REFERENCE - ANDROID_LENS_START ] =
359     { "poseReference",                 TYPE_BYTE   },
360     [ ANDROID_LENS_DISTORTION - ANDROID_LENS_START ] =
361     { "distortion",                    TYPE_FLOAT  },
362     [ ANDROID_LENS_DISTORTION_MAXIMUM_RESOLUTION - ANDROID_LENS_START ] =
363     { "distortionMaximumResolution",   TYPE_FLOAT  },
364     [ ANDROID_LENS_INTRINSIC_CALIBRATION_MAXIMUM_RESOLUTION - ANDROID_LENS_START ] =
365     { "intrinsicCalibrationMaximumResolution",
366                                         TYPE_FLOAT  },
367 };
368 
369 static tag_info_t android_lens_info[ANDROID_LENS_INFO_END -
370         ANDROID_LENS_INFO_START] = {
371     [ ANDROID_LENS_INFO_AVAILABLE_APERTURES - ANDROID_LENS_INFO_START ] =
372     { "availableApertures",            TYPE_FLOAT  },
373     [ ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES - ANDROID_LENS_INFO_START ] =
374     { "availableFilterDensities",      TYPE_FLOAT  },
375     [ ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS - ANDROID_LENS_INFO_START ] =
376     { "availableFocalLengths",         TYPE_FLOAT  },
377     [ ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION - ANDROID_LENS_INFO_START ] =
378     { "availableOpticalStabilization", TYPE_BYTE   },
379     [ ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE - ANDROID_LENS_INFO_START ] =
380     { "hyperfocalDistance",            TYPE_FLOAT  },
381     [ ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE - ANDROID_LENS_INFO_START ] =
382     { "minimumFocusDistance",          TYPE_FLOAT  },
383     [ ANDROID_LENS_INFO_SHADING_MAP_SIZE - ANDROID_LENS_INFO_START ] =
384     { "shadingMapSize",                TYPE_INT32  },
385     [ ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION - ANDROID_LENS_INFO_START ] =
386     { "focusDistanceCalibration",      TYPE_BYTE   },
387 };
388 
389 static tag_info_t android_noise_reduction[ANDROID_NOISE_REDUCTION_END -
390         ANDROID_NOISE_REDUCTION_START] = {
391     [ ANDROID_NOISE_REDUCTION_MODE - ANDROID_NOISE_REDUCTION_START ] =
392     { "mode",                          TYPE_BYTE   },
393     [ ANDROID_NOISE_REDUCTION_STRENGTH - ANDROID_NOISE_REDUCTION_START ] =
394     { "strength",                      TYPE_BYTE   },
395     [ ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES - ANDROID_NOISE_REDUCTION_START ] =
396     { "availableNoiseReductionModes",  TYPE_BYTE   },
397 };
398 
399 static tag_info_t android_quirks[ANDROID_QUIRKS_END -
400         ANDROID_QUIRKS_START] = {
401     [ ANDROID_QUIRKS_METERING_CROP_REGION - ANDROID_QUIRKS_START ] =
402     { "meteringCropRegion",            TYPE_BYTE   },
403     [ ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO - ANDROID_QUIRKS_START ] =
404     { "triggerAfWithAuto",             TYPE_BYTE   },
405     [ ANDROID_QUIRKS_USE_ZSL_FORMAT - ANDROID_QUIRKS_START ] =
406     { "useZslFormat",                  TYPE_BYTE   },
407     [ ANDROID_QUIRKS_USE_PARTIAL_RESULT - ANDROID_QUIRKS_START ] =
408     { "usePartialResult",              TYPE_BYTE   },
409     [ ANDROID_QUIRKS_PARTIAL_RESULT - ANDROID_QUIRKS_START ] =
410     { "partialResult",                 TYPE_BYTE   },
411 };
412 
413 static tag_info_t android_request[ANDROID_REQUEST_END -
414         ANDROID_REQUEST_START] = {
415     [ ANDROID_REQUEST_FRAME_COUNT - ANDROID_REQUEST_START ] =
416     { "frameCount",                    TYPE_INT32  },
417     [ ANDROID_REQUEST_ID - ANDROID_REQUEST_START ] =
418     { "id",                            TYPE_INT32  },
419     [ ANDROID_REQUEST_INPUT_STREAMS - ANDROID_REQUEST_START ] =
420     { "inputStreams",                  TYPE_INT32  },
421     [ ANDROID_REQUEST_METADATA_MODE - ANDROID_REQUEST_START ] =
422     { "metadataMode",                  TYPE_BYTE   },
423     [ ANDROID_REQUEST_OUTPUT_STREAMS - ANDROID_REQUEST_START ] =
424     { "outputStreams",                 TYPE_INT32  },
425     [ ANDROID_REQUEST_TYPE - ANDROID_REQUEST_START ] =
426     { "type",                          TYPE_BYTE   },
427     [ ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS - ANDROID_REQUEST_START ] =
428     { "maxNumOutputStreams",           TYPE_INT32  },
429     [ ANDROID_REQUEST_MAX_NUM_REPROCESS_STREAMS - ANDROID_REQUEST_START ] =
430     { "maxNumReprocessStreams",        TYPE_INT32  },
431     [ ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS - ANDROID_REQUEST_START ] =
432     { "maxNumInputStreams",            TYPE_INT32  },
433     [ ANDROID_REQUEST_PIPELINE_DEPTH - ANDROID_REQUEST_START ] =
434     { "pipelineDepth",                 TYPE_BYTE   },
435     [ ANDROID_REQUEST_PIPELINE_MAX_DEPTH - ANDROID_REQUEST_START ] =
436     { "pipelineMaxDepth",              TYPE_BYTE   },
437     [ ANDROID_REQUEST_PARTIAL_RESULT_COUNT - ANDROID_REQUEST_START ] =
438     { "partialResultCount",            TYPE_INT32  },
439     [ ANDROID_REQUEST_AVAILABLE_CAPABILITIES - ANDROID_REQUEST_START ] =
440     { "availableCapabilities",         TYPE_BYTE   },
441     [ ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS - ANDROID_REQUEST_START ] =
442     { "availableRequestKeys",          TYPE_INT32  },
443     [ ANDROID_REQUEST_AVAILABLE_RESULT_KEYS - ANDROID_REQUEST_START ] =
444     { "availableResultKeys",           TYPE_INT32  },
445     [ ANDROID_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS - ANDROID_REQUEST_START ] =
446     { "availableCharacteristicsKeys",  TYPE_INT32  },
447     [ ANDROID_REQUEST_AVAILABLE_SESSION_KEYS - ANDROID_REQUEST_START ] =
448     { "availableSessionKeys",          TYPE_INT32  },
449     [ ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS - ANDROID_REQUEST_START ] =
450     { "availablePhysicalCameraRequestKeys",
451                                         TYPE_INT32  },
452     [ ANDROID_REQUEST_CHARACTERISTIC_KEYS_NEEDING_PERMISSION - ANDROID_REQUEST_START ] =
453     { "characteristicKeysNeedingPermission",
454                                         TYPE_INT32  },
455 };
456 
457 static tag_info_t android_scaler[ANDROID_SCALER_END -
458         ANDROID_SCALER_START] = {
459     [ ANDROID_SCALER_CROP_REGION - ANDROID_SCALER_START ] =
460     { "cropRegion",                    TYPE_INT32  },
461     [ ANDROID_SCALER_AVAILABLE_FORMATS - ANDROID_SCALER_START ] =
462     { "availableFormats",              TYPE_INT32  },
463     [ ANDROID_SCALER_AVAILABLE_JPEG_MIN_DURATIONS - ANDROID_SCALER_START ] =
464     { "availableJpegMinDurations",     TYPE_INT64  },
465     [ ANDROID_SCALER_AVAILABLE_JPEG_SIZES - ANDROID_SCALER_START ] =
466     { "availableJpegSizes",            TYPE_INT32  },
467     [ ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM - ANDROID_SCALER_START ] =
468     { "availableMaxDigitalZoom",       TYPE_FLOAT  },
469     [ ANDROID_SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS - ANDROID_SCALER_START ] =
470     { "availableProcessedMinDurations",
471                                         TYPE_INT64  },
472     [ ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES - ANDROID_SCALER_START ] =
473     { "availableProcessedSizes",       TYPE_INT32  },
474     [ ANDROID_SCALER_AVAILABLE_RAW_MIN_DURATIONS - ANDROID_SCALER_START ] =
475     { "availableRawMinDurations",      TYPE_INT64  },
476     [ ANDROID_SCALER_AVAILABLE_RAW_SIZES - ANDROID_SCALER_START ] =
477     { "availableRawSizes",             TYPE_INT32  },
478     [ ANDROID_SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP - ANDROID_SCALER_START ] =
479     { "availableInputOutputFormatsMap",
480                                         TYPE_INT32  },
481     [ ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS - ANDROID_SCALER_START ] =
482     { "availableStreamConfigurations", TYPE_INT32  },
483     [ ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS - ANDROID_SCALER_START ] =
484     { "availableMinFrameDurations",    TYPE_INT64  },
485     [ ANDROID_SCALER_AVAILABLE_STALL_DURATIONS - ANDROID_SCALER_START ] =
486     { "availableStallDurations",       TYPE_INT64  },
487     [ ANDROID_SCALER_CROPPING_TYPE - ANDROID_SCALER_START ] =
488     { "croppingType",                  TYPE_BYTE   },
489     [ ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS - ANDROID_SCALER_START ] =
490     { "availableRecommendedStreamConfigurations",
491                                         TYPE_INT32  },
492     [ ANDROID_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP - ANDROID_SCALER_START ] =
493     { "availableRecommendedInputOutputFormatsMap",
494                                         TYPE_INT32  },
495     [ ANDROID_SCALER_AVAILABLE_ROTATE_AND_CROP_MODES - ANDROID_SCALER_START ] =
496     { "availableRotateAndCropModes",   TYPE_BYTE   },
497     [ ANDROID_SCALER_ROTATE_AND_CROP - ANDROID_SCALER_START ] =
498     { "rotateAndCrop",                 TYPE_BYTE   },
499     [ ANDROID_SCALER_DEFAULT_SECURE_IMAGE_SIZE - ANDROID_SCALER_START ] =
500     { "defaultSecureImageSize",        TYPE_INT32  },
501     [ ANDROID_SCALER_PHYSICAL_CAMERA_MULTI_RESOLUTION_STREAM_CONFIGURATIONS - ANDROID_SCALER_START ] =
502     { "physicalCameraMultiResolutionStreamConfigurations",
503                                         TYPE_INT32  },
504     [ ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION - ANDROID_SCALER_START ] =
505     { "availableStreamConfigurationsMaximumResolution",
506                                         TYPE_INT32  },
507     [ ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION - ANDROID_SCALER_START ] =
508     { "availableMinFrameDurationsMaximumResolution",
509                                         TYPE_INT64  },
510     [ ANDROID_SCALER_AVAILABLE_STALL_DURATIONS_MAXIMUM_RESOLUTION - ANDROID_SCALER_START ] =
511     { "availableStallDurationsMaximumResolution",
512                                         TYPE_INT64  },
513     [ ANDROID_SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP_MAXIMUM_RESOLUTION - ANDROID_SCALER_START ] =
514     { "availableInputOutputFormatsMapMaximumResolution",
515                                         TYPE_INT32  },
516     [ ANDROID_SCALER_MULTI_RESOLUTION_STREAM_SUPPORTED - ANDROID_SCALER_START ] =
517     { "multiResolutionStreamSupported",
518                                         TYPE_BYTE   },
519     [ ANDROID_SCALER_CROP_REGION_SET - ANDROID_SCALER_START ] =
520     { "cropRegionSet",                 TYPE_BYTE   },
521 };
522 
523 static tag_info_t android_sensor[ANDROID_SENSOR_END -
524         ANDROID_SENSOR_START] = {
525     [ ANDROID_SENSOR_EXPOSURE_TIME - ANDROID_SENSOR_START ] =
526     { "exposureTime",                  TYPE_INT64  },
527     [ ANDROID_SENSOR_FRAME_DURATION - ANDROID_SENSOR_START ] =
528     { "frameDuration",                 TYPE_INT64  },
529     [ ANDROID_SENSOR_SENSITIVITY - ANDROID_SENSOR_START ] =
530     { "sensitivity",                   TYPE_INT32  },
531     [ ANDROID_SENSOR_REFERENCE_ILLUMINANT1 - ANDROID_SENSOR_START ] =
532     { "referenceIlluminant1",          TYPE_BYTE   },
533     [ ANDROID_SENSOR_REFERENCE_ILLUMINANT2 - ANDROID_SENSOR_START ] =
534     { "referenceIlluminant2",          TYPE_BYTE   },
535     [ ANDROID_SENSOR_CALIBRATION_TRANSFORM1 - ANDROID_SENSOR_START ] =
536     { "calibrationTransform1",         TYPE_RATIONAL
537                 },
538     [ ANDROID_SENSOR_CALIBRATION_TRANSFORM2 - ANDROID_SENSOR_START ] =
539     { "calibrationTransform2",         TYPE_RATIONAL
540                 },
541     [ ANDROID_SENSOR_COLOR_TRANSFORM1 - ANDROID_SENSOR_START ] =
542     { "colorTransform1",               TYPE_RATIONAL
543                 },
544     [ ANDROID_SENSOR_COLOR_TRANSFORM2 - ANDROID_SENSOR_START ] =
545     { "colorTransform2",               TYPE_RATIONAL
546                 },
547     [ ANDROID_SENSOR_FORWARD_MATRIX1 - ANDROID_SENSOR_START ] =
548     { "forwardMatrix1",                TYPE_RATIONAL
549                 },
550     [ ANDROID_SENSOR_FORWARD_MATRIX2 - ANDROID_SENSOR_START ] =
551     { "forwardMatrix2",                TYPE_RATIONAL
552                 },
553     [ ANDROID_SENSOR_BASE_GAIN_FACTOR - ANDROID_SENSOR_START ] =
554     { "baseGainFactor",                TYPE_RATIONAL
555                 },
556     [ ANDROID_SENSOR_BLACK_LEVEL_PATTERN - ANDROID_SENSOR_START ] =
557     { "blackLevelPattern",             TYPE_INT32  },
558     [ ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY - ANDROID_SENSOR_START ] =
559     { "maxAnalogSensitivity",          TYPE_INT32  },
560     [ ANDROID_SENSOR_ORIENTATION - ANDROID_SENSOR_START ] =
561     { "orientation",                   TYPE_INT32  },
562     [ ANDROID_SENSOR_PROFILE_HUE_SAT_MAP_DIMENSIONS - ANDROID_SENSOR_START ] =
563     { "profileHueSatMapDimensions",    TYPE_INT32  },
564     [ ANDROID_SENSOR_TIMESTAMP - ANDROID_SENSOR_START ] =
565     { "timestamp",                     TYPE_INT64  },
566     [ ANDROID_SENSOR_TEMPERATURE - ANDROID_SENSOR_START ] =
567     { "temperature",                   TYPE_FLOAT  },
568     [ ANDROID_SENSOR_NEUTRAL_COLOR_POINT - ANDROID_SENSOR_START ] =
569     { "neutralColorPoint",             TYPE_RATIONAL
570                 },
571     [ ANDROID_SENSOR_NOISE_PROFILE - ANDROID_SENSOR_START ] =
572     { "noiseProfile",                  TYPE_DOUBLE },
573     [ ANDROID_SENSOR_PROFILE_HUE_SAT_MAP - ANDROID_SENSOR_START ] =
574     { "profileHueSatMap",              TYPE_FLOAT  },
575     [ ANDROID_SENSOR_PROFILE_TONE_CURVE - ANDROID_SENSOR_START ] =
576     { "profileToneCurve",              TYPE_FLOAT  },
577     [ ANDROID_SENSOR_GREEN_SPLIT - ANDROID_SENSOR_START ] =
578     { "greenSplit",                    TYPE_FLOAT  },
579     [ ANDROID_SENSOR_TEST_PATTERN_DATA - ANDROID_SENSOR_START ] =
580     { "testPatternData",               TYPE_INT32  },
581     [ ANDROID_SENSOR_TEST_PATTERN_MODE - ANDROID_SENSOR_START ] =
582     { "testPatternMode",               TYPE_INT32  },
583     [ ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES - ANDROID_SENSOR_START ] =
584     { "availableTestPatternModes",     TYPE_INT32  },
585     [ ANDROID_SENSOR_ROLLING_SHUTTER_SKEW - ANDROID_SENSOR_START ] =
586     { "rollingShutterSkew",            TYPE_INT64  },
587     [ ANDROID_SENSOR_OPTICAL_BLACK_REGIONS - ANDROID_SENSOR_START ] =
588     { "opticalBlackRegions",           TYPE_INT32  },
589     [ ANDROID_SENSOR_DYNAMIC_BLACK_LEVEL - ANDROID_SENSOR_START ] =
590     { "dynamicBlackLevel",             TYPE_FLOAT  },
591     [ ANDROID_SENSOR_DYNAMIC_WHITE_LEVEL - ANDROID_SENSOR_START ] =
592     { "dynamicWhiteLevel",             TYPE_INT32  },
593     [ ANDROID_SENSOR_OPAQUE_RAW_SIZE - ANDROID_SENSOR_START ] =
594     { "opaqueRawSize",                 TYPE_INT32  },
595     [ ANDROID_SENSOR_OPAQUE_RAW_SIZE_MAXIMUM_RESOLUTION - ANDROID_SENSOR_START ] =
596     { "opaqueRawSizeMaximumResolution",
597                                         TYPE_INT32  },
598     [ ANDROID_SENSOR_PIXEL_MODE - ANDROID_SENSOR_START ] =
599     { "pixelMode",                     TYPE_BYTE   },
600     [ ANDROID_SENSOR_RAW_BINNING_FACTOR_USED - ANDROID_SENSOR_START ] =
601     { "rawBinningFactorUsed",          TYPE_BYTE   },
602 };
603 
604 static tag_info_t android_sensor_info[ANDROID_SENSOR_INFO_END -
605         ANDROID_SENSOR_INFO_START] = {
606     [ ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE - ANDROID_SENSOR_INFO_START ] =
607     { "activeArraySize",               TYPE_INT32  },
608     [ ANDROID_SENSOR_INFO_SENSITIVITY_RANGE - ANDROID_SENSOR_INFO_START ] =
609     { "sensitivityRange",              TYPE_INT32  },
610     [ ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT - ANDROID_SENSOR_INFO_START ] =
611     { "colorFilterArrangement",        TYPE_BYTE   },
612     [ ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE - ANDROID_SENSOR_INFO_START ] =
613     { "exposureTimeRange",             TYPE_INT64  },
614     [ ANDROID_SENSOR_INFO_MAX_FRAME_DURATION - ANDROID_SENSOR_INFO_START ] =
615     { "maxFrameDuration",              TYPE_INT64  },
616     [ ANDROID_SENSOR_INFO_PHYSICAL_SIZE - ANDROID_SENSOR_INFO_START ] =
617     { "physicalSize",                  TYPE_FLOAT  },
618     [ ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE - ANDROID_SENSOR_INFO_START ] =
619     { "pixelArraySize",                TYPE_INT32  },
620     [ ANDROID_SENSOR_INFO_WHITE_LEVEL - ANDROID_SENSOR_INFO_START ] =
621     { "whiteLevel",                    TYPE_INT32  },
622     [ ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE - ANDROID_SENSOR_INFO_START ] =
623     { "timestampSource",               TYPE_BYTE   },
624     [ ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED - ANDROID_SENSOR_INFO_START ] =
625     { "lensShadingApplied",            TYPE_BYTE   },
626     [ ANDROID_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE - ANDROID_SENSOR_INFO_START ] =
627     { "preCorrectionActiveArraySize",  TYPE_INT32  },
628     [ ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION - ANDROID_SENSOR_INFO_START ] =
629     { "activeArraySizeMaximumResolution",
630                                         TYPE_INT32  },
631     [ ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE_MAXIMUM_RESOLUTION - ANDROID_SENSOR_INFO_START ] =
632     { "pixelArraySizeMaximumResolution",
633                                         TYPE_INT32  },
634     [ ANDROID_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION - ANDROID_SENSOR_INFO_START ] =
635     { "preCorrectionActiveArraySizeMaximumResolution",
636                                         TYPE_INT32  },
637     [ ANDROID_SENSOR_INFO_BINNING_FACTOR - ANDROID_SENSOR_INFO_START ] =
638     { "binningFactor",                 TYPE_INT32  },
639 };
640 
641 static tag_info_t android_shading[ANDROID_SHADING_END -
642         ANDROID_SHADING_START] = {
643     [ ANDROID_SHADING_MODE - ANDROID_SHADING_START ] =
644     { "mode",                          TYPE_BYTE   },
645     [ ANDROID_SHADING_STRENGTH - ANDROID_SHADING_START ] =
646     { "strength",                      TYPE_BYTE   },
647     [ ANDROID_SHADING_AVAILABLE_MODES - ANDROID_SHADING_START ] =
648     { "availableModes",                TYPE_BYTE   },
649 };
650 
651 static tag_info_t android_statistics[ANDROID_STATISTICS_END -
652         ANDROID_STATISTICS_START] = {
653     [ ANDROID_STATISTICS_FACE_DETECT_MODE - ANDROID_STATISTICS_START ] =
654     { "faceDetectMode",                TYPE_BYTE   },
655     [ ANDROID_STATISTICS_HISTOGRAM_MODE - ANDROID_STATISTICS_START ] =
656     { "histogramMode",                 TYPE_BYTE   },
657     [ ANDROID_STATISTICS_SHARPNESS_MAP_MODE - ANDROID_STATISTICS_START ] =
658     { "sharpnessMapMode",              TYPE_BYTE   },
659     [ ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE - ANDROID_STATISTICS_START ] =
660     { "hotPixelMapMode",               TYPE_BYTE   },
661     [ ANDROID_STATISTICS_FACE_IDS - ANDROID_STATISTICS_START ] =
662     { "faceIds",                       TYPE_INT32  },
663     [ ANDROID_STATISTICS_FACE_LANDMARKS - ANDROID_STATISTICS_START ] =
664     { "faceLandmarks",                 TYPE_INT32  },
665     [ ANDROID_STATISTICS_FACE_RECTANGLES - ANDROID_STATISTICS_START ] =
666     { "faceRectangles",                TYPE_INT32  },
667     [ ANDROID_STATISTICS_FACE_SCORES - ANDROID_STATISTICS_START ] =
668     { "faceScores",                    TYPE_BYTE   },
669     [ ANDROID_STATISTICS_HISTOGRAM - ANDROID_STATISTICS_START ] =
670     { "histogram",                     TYPE_INT32  },
671     [ ANDROID_STATISTICS_SHARPNESS_MAP - ANDROID_STATISTICS_START ] =
672     { "sharpnessMap",                  TYPE_INT32  },
673     [ ANDROID_STATISTICS_LENS_SHADING_CORRECTION_MAP - ANDROID_STATISTICS_START ] =
674     { "lensShadingCorrectionMap",      TYPE_BYTE   },
675     [ ANDROID_STATISTICS_LENS_SHADING_MAP - ANDROID_STATISTICS_START ] =
676     { "lensShadingMap",                TYPE_FLOAT  },
677     [ ANDROID_STATISTICS_PREDICTED_COLOR_GAINS - ANDROID_STATISTICS_START ] =
678     { "predictedColorGains",           TYPE_FLOAT  },
679     [ ANDROID_STATISTICS_PREDICTED_COLOR_TRANSFORM - ANDROID_STATISTICS_START ] =
680     { "predictedColorTransform",       TYPE_RATIONAL
681                 },
682     [ ANDROID_STATISTICS_SCENE_FLICKER - ANDROID_STATISTICS_START ] =
683     { "sceneFlicker",                  TYPE_BYTE   },
684     [ ANDROID_STATISTICS_HOT_PIXEL_MAP - ANDROID_STATISTICS_START ] =
685     { "hotPixelMap",                   TYPE_INT32  },
686     [ ANDROID_STATISTICS_LENS_SHADING_MAP_MODE - ANDROID_STATISTICS_START ] =
687     { "lensShadingMapMode",            TYPE_BYTE   },
688     [ ANDROID_STATISTICS_OIS_DATA_MODE - ANDROID_STATISTICS_START ] =
689     { "oisDataMode",                   TYPE_BYTE   },
690     [ ANDROID_STATISTICS_OIS_TIMESTAMPS - ANDROID_STATISTICS_START ] =
691     { "oisTimestamps",                 TYPE_INT64  },
692     [ ANDROID_STATISTICS_OIS_X_SHIFTS - ANDROID_STATISTICS_START ] =
693     { "oisXShifts",                    TYPE_FLOAT  },
694     [ ANDROID_STATISTICS_OIS_Y_SHIFTS - ANDROID_STATISTICS_START ] =
695     { "oisYShifts",                    TYPE_FLOAT  },
696 };
697 
698 static tag_info_t android_statistics_info[ANDROID_STATISTICS_INFO_END -
699         ANDROID_STATISTICS_INFO_START] = {
700     [ ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES - ANDROID_STATISTICS_INFO_START ] =
701     { "availableFaceDetectModes",      TYPE_BYTE   },
702     [ ANDROID_STATISTICS_INFO_HISTOGRAM_BUCKET_COUNT - ANDROID_STATISTICS_INFO_START ] =
703     { "histogramBucketCount",          TYPE_INT32  },
704     [ ANDROID_STATISTICS_INFO_MAX_FACE_COUNT - ANDROID_STATISTICS_INFO_START ] =
705     { "maxFaceCount",                  TYPE_INT32  },
706     [ ANDROID_STATISTICS_INFO_MAX_HISTOGRAM_COUNT - ANDROID_STATISTICS_INFO_START ] =
707     { "maxHistogramCount",             TYPE_INT32  },
708     [ ANDROID_STATISTICS_INFO_MAX_SHARPNESS_MAP_VALUE - ANDROID_STATISTICS_INFO_START ] =
709     { "maxSharpnessMapValue",          TYPE_INT32  },
710     [ ANDROID_STATISTICS_INFO_SHARPNESS_MAP_SIZE - ANDROID_STATISTICS_INFO_START ] =
711     { "sharpnessMapSize",              TYPE_INT32  },
712     [ ANDROID_STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES - ANDROID_STATISTICS_INFO_START ] =
713     { "availableHotPixelMapModes",     TYPE_BYTE   },
714     [ ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES - ANDROID_STATISTICS_INFO_START ] =
715     { "availableLensShadingMapModes",  TYPE_BYTE   },
716     [ ANDROID_STATISTICS_INFO_AVAILABLE_OIS_DATA_MODES - ANDROID_STATISTICS_INFO_START ] =
717     { "availableOisDataModes",         TYPE_BYTE   },
718 };
719 
720 static tag_info_t android_tonemap[ANDROID_TONEMAP_END -
721         ANDROID_TONEMAP_START] = {
722     [ ANDROID_TONEMAP_CURVE_BLUE - ANDROID_TONEMAP_START ] =
723     { "curveBlue",                     TYPE_FLOAT  },
724     [ ANDROID_TONEMAP_CURVE_GREEN - ANDROID_TONEMAP_START ] =
725     { "curveGreen",                    TYPE_FLOAT  },
726     [ ANDROID_TONEMAP_CURVE_RED - ANDROID_TONEMAP_START ] =
727     { "curveRed",                      TYPE_FLOAT  },
728     [ ANDROID_TONEMAP_MODE - ANDROID_TONEMAP_START ] =
729     { "mode",                          TYPE_BYTE   },
730     [ ANDROID_TONEMAP_MAX_CURVE_POINTS - ANDROID_TONEMAP_START ] =
731     { "maxCurvePoints",                TYPE_INT32  },
732     [ ANDROID_TONEMAP_AVAILABLE_TONE_MAP_MODES - ANDROID_TONEMAP_START ] =
733     { "availableToneMapModes",         TYPE_BYTE   },
734     [ ANDROID_TONEMAP_GAMMA - ANDROID_TONEMAP_START ] =
735     { "gamma",                         TYPE_FLOAT  },
736     [ ANDROID_TONEMAP_PRESET_CURVE - ANDROID_TONEMAP_START ] =
737     { "presetCurve",                   TYPE_BYTE   },
738 };
739 
740 static tag_info_t android_led[ANDROID_LED_END -
741         ANDROID_LED_START] = {
742     [ ANDROID_LED_TRANSMIT - ANDROID_LED_START ] =
743     { "transmit",                      TYPE_BYTE   },
744     [ ANDROID_LED_AVAILABLE_LEDS - ANDROID_LED_START ] =
745     { "availableLeds",                 TYPE_BYTE   },
746 };
747 
748 static tag_info_t android_info[ANDROID_INFO_END -
749         ANDROID_INFO_START] = {
750     [ ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL - ANDROID_INFO_START ] =
751     { "supportedHardwareLevel",        TYPE_BYTE   },
752     [ ANDROID_INFO_VERSION - ANDROID_INFO_START ] =
753     { "version",                       TYPE_BYTE   },
754     [ ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION - ANDROID_INFO_START ] =
755     { "supportedBufferManagementVersion",
756                                         TYPE_BYTE   },
757 };
758 
759 static tag_info_t android_black_level[ANDROID_BLACK_LEVEL_END -
760         ANDROID_BLACK_LEVEL_START] = {
761     [ ANDROID_BLACK_LEVEL_LOCK - ANDROID_BLACK_LEVEL_START ] =
762     { "lock",                          TYPE_BYTE   },
763 };
764 
765 static tag_info_t android_sync[ANDROID_SYNC_END -
766         ANDROID_SYNC_START] = {
767     [ ANDROID_SYNC_FRAME_NUMBER - ANDROID_SYNC_START ] =
768     { "frameNumber",                   TYPE_INT64  },
769     [ ANDROID_SYNC_MAX_LATENCY - ANDROID_SYNC_START ] =
770     { "maxLatency",                    TYPE_INT32  },
771 };
772 
773 static tag_info_t android_reprocess[ANDROID_REPROCESS_END -
774         ANDROID_REPROCESS_START] = {
775     [ ANDROID_REPROCESS_EFFECTIVE_EXPOSURE_FACTOR - ANDROID_REPROCESS_START ] =
776     { "effectiveExposureFactor",       TYPE_FLOAT  },
777     [ ANDROID_REPROCESS_MAX_CAPTURE_STALL - ANDROID_REPROCESS_START ] =
778     { "maxCaptureStall",               TYPE_INT32  },
779 };
780 
781 static tag_info_t android_depth[ANDROID_DEPTH_END -
782         ANDROID_DEPTH_START] = {
783     [ ANDROID_DEPTH_MAX_DEPTH_SAMPLES - ANDROID_DEPTH_START ] =
784     { "maxDepthSamples",               TYPE_INT32  },
785     [ ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS - ANDROID_DEPTH_START ] =
786     { "availableDepthStreamConfigurations",
787                                         TYPE_INT32  },
788     [ ANDROID_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS - ANDROID_DEPTH_START ] =
789     { "availableDepthMinFrameDurations",
790                                         TYPE_INT64  },
791     [ ANDROID_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS - ANDROID_DEPTH_START ] =
792     { "availableDepthStallDurations",  TYPE_INT64  },
793     [ ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE - ANDROID_DEPTH_START ] =
794     { "depthIsExclusive",              TYPE_BYTE   },
795     [ ANDROID_DEPTH_AVAILABLE_RECOMMENDED_DEPTH_STREAM_CONFIGURATIONS - ANDROID_DEPTH_START ] =
796     { "availableRecommendedDepthStreamConfigurations",
797                                         TYPE_INT32  },
798     [ ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS - ANDROID_DEPTH_START ] =
799     { "availableDynamicDepthStreamConfigurations",
800                                         TYPE_INT32  },
801     [ ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS - ANDROID_DEPTH_START ] =
802     { "availableDynamicDepthMinFrameDurations",
803                                         TYPE_INT64  },
804     [ ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS - ANDROID_DEPTH_START ] =
805     { "availableDynamicDepthStallDurations",
806                                         TYPE_INT64  },
807     [ ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION - ANDROID_DEPTH_START ] =
808     { "availableDepthStreamConfigurationsMaximumResolution",
809                                         TYPE_INT32  },
810     [ ANDROID_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION - ANDROID_DEPTH_START ] =
811     { "availableDepthMinFrameDurationsMaximumResolution",
812                                         TYPE_INT64  },
813     [ ANDROID_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS_MAXIMUM_RESOLUTION - ANDROID_DEPTH_START ] =
814     { "availableDepthStallDurationsMaximumResolution",
815                                         TYPE_INT64  },
816     [ ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION - ANDROID_DEPTH_START ] =
817     { "availableDynamicDepthStreamConfigurationsMaximumResolution",
818                                         TYPE_INT32  },
819     [ ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION - ANDROID_DEPTH_START ] =
820     { "availableDynamicDepthMinFrameDurationsMaximumResolution",
821                                         TYPE_INT64  },
822     [ ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS_MAXIMUM_RESOLUTION - ANDROID_DEPTH_START ] =
823     { "availableDynamicDepthStallDurationsMaximumResolution",
824                                         TYPE_INT64  },
825 };
826 
827 static tag_info_t android_logical_multi_camera[ANDROID_LOGICAL_MULTI_CAMERA_END -
828         ANDROID_LOGICAL_MULTI_CAMERA_START] = {
829     [ ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS - ANDROID_LOGICAL_MULTI_CAMERA_START ] =
830     { "physicalIds",                   TYPE_BYTE   },
831     [ ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE - ANDROID_LOGICAL_MULTI_CAMERA_START ] =
832     { "sensorSyncType",                TYPE_BYTE   },
833     [ ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID - ANDROID_LOGICAL_MULTI_CAMERA_START ] =
834     { "activePhysicalId",              TYPE_BYTE   },
835 };
836 
837 static tag_info_t android_distortion_correction[ANDROID_DISTORTION_CORRECTION_END -
838         ANDROID_DISTORTION_CORRECTION_START] = {
839     [ ANDROID_DISTORTION_CORRECTION_MODE - ANDROID_DISTORTION_CORRECTION_START ] =
840     { "mode",                          TYPE_BYTE   },
841     [ ANDROID_DISTORTION_CORRECTION_AVAILABLE_MODES - ANDROID_DISTORTION_CORRECTION_START ] =
842     { "availableModes",                TYPE_BYTE   },
843 };
844 
845 static tag_info_t android_heic[ANDROID_HEIC_END -
846         ANDROID_HEIC_START] = {
847     [ ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS - ANDROID_HEIC_START ] =
848     { "availableHeicStreamConfigurations",
849                                         TYPE_INT32  },
850     [ ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS - ANDROID_HEIC_START ] =
851     { "availableHeicMinFrameDurations",
852                                         TYPE_INT64  },
853     [ ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS - ANDROID_HEIC_START ] =
854     { "availableHeicStallDurations",   TYPE_INT64  },
855     [ ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION - ANDROID_HEIC_START ] =
856     { "availableHeicStreamConfigurationsMaximumResolution",
857                                         TYPE_INT32  },
858     [ ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION - ANDROID_HEIC_START ] =
859     { "availableHeicMinFrameDurationsMaximumResolution",
860                                         TYPE_INT64  },
861     [ ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS_MAXIMUM_RESOLUTION - ANDROID_HEIC_START ] =
862     { "availableHeicStallDurationsMaximumResolution",
863                                         TYPE_INT64  },
864 };
865 
866 static tag_info_t android_heic_info[ANDROID_HEIC_INFO_END -
867         ANDROID_HEIC_INFO_START] = {
868     [ ANDROID_HEIC_INFO_SUPPORTED - ANDROID_HEIC_INFO_START ] =
869     { "supported",                     TYPE_BYTE   },
870     [ ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT - ANDROID_HEIC_INFO_START ] =
871     { "maxJpegAppSegmentsCount",       TYPE_BYTE   },
872 };
873 
874 
875 tag_info_t *tag_info[ANDROID_SECTION_COUNT] = {
876     android_color_correction,
877     android_control,
878     android_demosaic,
879     android_edge,
880     android_flash,
881     android_flash_info,
882     android_hot_pixel,
883     android_jpeg,
884     android_lens,
885     android_lens_info,
886     android_noise_reduction,
887     android_quirks,
888     android_request,
889     android_scaler,
890     android_sensor,
891     android_sensor_info,
892     android_shading,
893     android_statistics,
894     android_statistics_info,
895     android_tonemap,
896     android_led,
897     android_info,
898     android_black_level,
899     android_sync,
900     android_reprocess,
901     android_depth,
902     android_logical_multi_camera,
903     android_distortion_correction,
904     android_heic,
905     android_heic_info,
906 };
907 
908 static int32_t tag_permission_needed[18] = {
909     ANDROID_LENS_POSE_ROTATION,
910     ANDROID_LENS_POSE_TRANSLATION,
911     ANDROID_LENS_INTRINSIC_CALIBRATION,
912     ANDROID_LENS_RADIAL_DISTORTION,
913     ANDROID_LENS_POSE_REFERENCE,
914     ANDROID_LENS_DISTORTION,
915     ANDROID_LENS_DISTORTION_MAXIMUM_RESOLUTION,
916     ANDROID_LENS_INTRINSIC_CALIBRATION_MAXIMUM_RESOLUTION,
917     ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE,
918     ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE,
919     ANDROID_SENSOR_REFERENCE_ILLUMINANT1,
920     ANDROID_SENSOR_REFERENCE_ILLUMINANT2,
921     ANDROID_SENSOR_CALIBRATION_TRANSFORM1,
922     ANDROID_SENSOR_CALIBRATION_TRANSFORM2,
923     ANDROID_SENSOR_COLOR_TRANSFORM1,
924     ANDROID_SENSOR_COLOR_TRANSFORM2,
925     ANDROID_SENSOR_FORWARD_MATRIX1,
926     ANDROID_SENSOR_FORWARD_MATRIX2,
927 };
928 
camera_metadata_enum_snprint(uint32_t tag,uint32_t value,char * dst,size_t size)929 int camera_metadata_enum_snprint(uint32_t tag,
930                                  uint32_t value,
931                                  char *dst,
932                                  size_t size) {
933     const char *msg = "error: not an enum";
934     int ret = -1;
935 
936     switch(tag) {
937         case ANDROID_COLOR_CORRECTION_MODE: {
938             switch (value) {
939                 case ANDROID_COLOR_CORRECTION_MODE_TRANSFORM_MATRIX:
940                     msg = "TRANSFORM_MATRIX";
941                     ret = 0;
942                     break;
943                 case ANDROID_COLOR_CORRECTION_MODE_FAST:
944                     msg = "FAST";
945                     ret = 0;
946                     break;
947                 case ANDROID_COLOR_CORRECTION_MODE_HIGH_QUALITY:
948                     msg = "HIGH_QUALITY";
949                     ret = 0;
950                     break;
951                 default:
952                     msg = "error: enum value out of range";
953             }
954             break;
955         }
956         case ANDROID_COLOR_CORRECTION_TRANSFORM: {
957             break;
958         }
959         case ANDROID_COLOR_CORRECTION_GAINS: {
960             break;
961         }
962         case ANDROID_COLOR_CORRECTION_ABERRATION_MODE: {
963             switch (value) {
964                 case ANDROID_COLOR_CORRECTION_ABERRATION_MODE_OFF:
965                     msg = "OFF";
966                     ret = 0;
967                     break;
968                 case ANDROID_COLOR_CORRECTION_ABERRATION_MODE_FAST:
969                     msg = "FAST";
970                     ret = 0;
971                     break;
972                 case ANDROID_COLOR_CORRECTION_ABERRATION_MODE_HIGH_QUALITY:
973                     msg = "HIGH_QUALITY";
974                     ret = 0;
975                     break;
976                 default:
977                     msg = "error: enum value out of range";
978             }
979             break;
980         }
981         case ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES: {
982             break;
983         }
984 
985         case ANDROID_CONTROL_AE_ANTIBANDING_MODE: {
986             switch (value) {
987                 case ANDROID_CONTROL_AE_ANTIBANDING_MODE_OFF:
988                     msg = "OFF";
989                     ret = 0;
990                     break;
991                 case ANDROID_CONTROL_AE_ANTIBANDING_MODE_50HZ:
992                     msg = "50HZ";
993                     ret = 0;
994                     break;
995                 case ANDROID_CONTROL_AE_ANTIBANDING_MODE_60HZ:
996                     msg = "60HZ";
997                     ret = 0;
998                     break;
999                 case ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO:
1000                     msg = "AUTO";
1001                     ret = 0;
1002                     break;
1003                 default:
1004                     msg = "error: enum value out of range";
1005             }
1006             break;
1007         }
1008         case ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION: {
1009             break;
1010         }
1011         case ANDROID_CONTROL_AE_LOCK: {
1012             switch (value) {
1013                 case ANDROID_CONTROL_AE_LOCK_OFF:
1014                     msg = "OFF";
1015                     ret = 0;
1016                     break;
1017                 case ANDROID_CONTROL_AE_LOCK_ON:
1018                     msg = "ON";
1019                     ret = 0;
1020                     break;
1021                 default:
1022                     msg = "error: enum value out of range";
1023             }
1024             break;
1025         }
1026         case ANDROID_CONTROL_AE_MODE: {
1027             switch (value) {
1028                 case ANDROID_CONTROL_AE_MODE_OFF:
1029                     msg = "OFF";
1030                     ret = 0;
1031                     break;
1032                 case ANDROID_CONTROL_AE_MODE_ON:
1033                     msg = "ON";
1034                     ret = 0;
1035                     break;
1036                 case ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH:
1037                     msg = "ON_AUTO_FLASH";
1038                     ret = 0;
1039                     break;
1040                 case ANDROID_CONTROL_AE_MODE_ON_ALWAYS_FLASH:
1041                     msg = "ON_ALWAYS_FLASH";
1042                     ret = 0;
1043                     break;
1044                 case ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE:
1045                     msg = "ON_AUTO_FLASH_REDEYE";
1046                     ret = 0;
1047                     break;
1048                 case ANDROID_CONTROL_AE_MODE_ON_EXTERNAL_FLASH:
1049                     msg = "ON_EXTERNAL_FLASH";
1050                     ret = 0;
1051                     break;
1052                 default:
1053                     msg = "error: enum value out of range";
1054             }
1055             break;
1056         }
1057         case ANDROID_CONTROL_AE_REGIONS: {
1058             break;
1059         }
1060         case ANDROID_CONTROL_AE_TARGET_FPS_RANGE: {
1061             break;
1062         }
1063         case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER: {
1064             switch (value) {
1065                 case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE:
1066                     msg = "IDLE";
1067                     ret = 0;
1068                     break;
1069                 case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_START:
1070                     msg = "START";
1071                     ret = 0;
1072                     break;
1073                 case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL:
1074                     msg = "CANCEL";
1075                     ret = 0;
1076                     break;
1077                 default:
1078                     msg = "error: enum value out of range";
1079             }
1080             break;
1081         }
1082         case ANDROID_CONTROL_AF_MODE: {
1083             switch (value) {
1084                 case ANDROID_CONTROL_AF_MODE_OFF:
1085                     msg = "OFF";
1086                     ret = 0;
1087                     break;
1088                 case ANDROID_CONTROL_AF_MODE_AUTO:
1089                     msg = "AUTO";
1090                     ret = 0;
1091                     break;
1092                 case ANDROID_CONTROL_AF_MODE_MACRO:
1093                     msg = "MACRO";
1094                     ret = 0;
1095                     break;
1096                 case ANDROID_CONTROL_AF_MODE_CONTINUOUS_VIDEO:
1097                     msg = "CONTINUOUS_VIDEO";
1098                     ret = 0;
1099                     break;
1100                 case ANDROID_CONTROL_AF_MODE_CONTINUOUS_PICTURE:
1101                     msg = "CONTINUOUS_PICTURE";
1102                     ret = 0;
1103                     break;
1104                 case ANDROID_CONTROL_AF_MODE_EDOF:
1105                     msg = "EDOF";
1106                     ret = 0;
1107                     break;
1108                 default:
1109                     msg = "error: enum value out of range";
1110             }
1111             break;
1112         }
1113         case ANDROID_CONTROL_AF_REGIONS: {
1114             break;
1115         }
1116         case ANDROID_CONTROL_AF_TRIGGER: {
1117             switch (value) {
1118                 case ANDROID_CONTROL_AF_TRIGGER_IDLE:
1119                     msg = "IDLE";
1120                     ret = 0;
1121                     break;
1122                 case ANDROID_CONTROL_AF_TRIGGER_START:
1123                     msg = "START";
1124                     ret = 0;
1125                     break;
1126                 case ANDROID_CONTROL_AF_TRIGGER_CANCEL:
1127                     msg = "CANCEL";
1128                     ret = 0;
1129                     break;
1130                 default:
1131                     msg = "error: enum value out of range";
1132             }
1133             break;
1134         }
1135         case ANDROID_CONTROL_AWB_LOCK: {
1136             switch (value) {
1137                 case ANDROID_CONTROL_AWB_LOCK_OFF:
1138                     msg = "OFF";
1139                     ret = 0;
1140                     break;
1141                 case ANDROID_CONTROL_AWB_LOCK_ON:
1142                     msg = "ON";
1143                     ret = 0;
1144                     break;
1145                 default:
1146                     msg = "error: enum value out of range";
1147             }
1148             break;
1149         }
1150         case ANDROID_CONTROL_AWB_MODE: {
1151             switch (value) {
1152                 case ANDROID_CONTROL_AWB_MODE_OFF:
1153                     msg = "OFF";
1154                     ret = 0;
1155                     break;
1156                 case ANDROID_CONTROL_AWB_MODE_AUTO:
1157                     msg = "AUTO";
1158                     ret = 0;
1159                     break;
1160                 case ANDROID_CONTROL_AWB_MODE_INCANDESCENT:
1161                     msg = "INCANDESCENT";
1162                     ret = 0;
1163                     break;
1164                 case ANDROID_CONTROL_AWB_MODE_FLUORESCENT:
1165                     msg = "FLUORESCENT";
1166                     ret = 0;
1167                     break;
1168                 case ANDROID_CONTROL_AWB_MODE_WARM_FLUORESCENT:
1169                     msg = "WARM_FLUORESCENT";
1170                     ret = 0;
1171                     break;
1172                 case ANDROID_CONTROL_AWB_MODE_DAYLIGHT:
1173                     msg = "DAYLIGHT";
1174                     ret = 0;
1175                     break;
1176                 case ANDROID_CONTROL_AWB_MODE_CLOUDY_DAYLIGHT:
1177                     msg = "CLOUDY_DAYLIGHT";
1178                     ret = 0;
1179                     break;
1180                 case ANDROID_CONTROL_AWB_MODE_TWILIGHT:
1181                     msg = "TWILIGHT";
1182                     ret = 0;
1183                     break;
1184                 case ANDROID_CONTROL_AWB_MODE_SHADE:
1185                     msg = "SHADE";
1186                     ret = 0;
1187                     break;
1188                 default:
1189                     msg = "error: enum value out of range";
1190             }
1191             break;
1192         }
1193         case ANDROID_CONTROL_AWB_REGIONS: {
1194             break;
1195         }
1196         case ANDROID_CONTROL_CAPTURE_INTENT: {
1197             switch (value) {
1198                 case ANDROID_CONTROL_CAPTURE_INTENT_CUSTOM:
1199                     msg = "CUSTOM";
1200                     ret = 0;
1201                     break;
1202                 case ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW:
1203                     msg = "PREVIEW";
1204                     ret = 0;
1205                     break;
1206                 case ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE:
1207                     msg = "STILL_CAPTURE";
1208                     ret = 0;
1209                     break;
1210                 case ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_RECORD:
1211                     msg = "VIDEO_RECORD";
1212                     ret = 0;
1213                     break;
1214                 case ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT:
1215                     msg = "VIDEO_SNAPSHOT";
1216                     ret = 0;
1217                     break;
1218                 case ANDROID_CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG:
1219                     msg = "ZERO_SHUTTER_LAG";
1220                     ret = 0;
1221                     break;
1222                 case ANDROID_CONTROL_CAPTURE_INTENT_MANUAL:
1223                     msg = "MANUAL";
1224                     ret = 0;
1225                     break;
1226                 case ANDROID_CONTROL_CAPTURE_INTENT_MOTION_TRACKING:
1227                     msg = "MOTION_TRACKING";
1228                     ret = 0;
1229                     break;
1230                 default:
1231                     msg = "error: enum value out of range";
1232             }
1233             break;
1234         }
1235         case ANDROID_CONTROL_EFFECT_MODE: {
1236             switch (value) {
1237                 case ANDROID_CONTROL_EFFECT_MODE_OFF:
1238                     msg = "OFF";
1239                     ret = 0;
1240                     break;
1241                 case ANDROID_CONTROL_EFFECT_MODE_MONO:
1242                     msg = "MONO";
1243                     ret = 0;
1244                     break;
1245                 case ANDROID_CONTROL_EFFECT_MODE_NEGATIVE:
1246                     msg = "NEGATIVE";
1247                     ret = 0;
1248                     break;
1249                 case ANDROID_CONTROL_EFFECT_MODE_SOLARIZE:
1250                     msg = "SOLARIZE";
1251                     ret = 0;
1252                     break;
1253                 case ANDROID_CONTROL_EFFECT_MODE_SEPIA:
1254                     msg = "SEPIA";
1255                     ret = 0;
1256                     break;
1257                 case ANDROID_CONTROL_EFFECT_MODE_POSTERIZE:
1258                     msg = "POSTERIZE";
1259                     ret = 0;
1260                     break;
1261                 case ANDROID_CONTROL_EFFECT_MODE_WHITEBOARD:
1262                     msg = "WHITEBOARD";
1263                     ret = 0;
1264                     break;
1265                 case ANDROID_CONTROL_EFFECT_MODE_BLACKBOARD:
1266                     msg = "BLACKBOARD";
1267                     ret = 0;
1268                     break;
1269                 case ANDROID_CONTROL_EFFECT_MODE_AQUA:
1270                     msg = "AQUA";
1271                     ret = 0;
1272                     break;
1273                 default:
1274                     msg = "error: enum value out of range";
1275             }
1276             break;
1277         }
1278         case ANDROID_CONTROL_MODE: {
1279             switch (value) {
1280                 case ANDROID_CONTROL_MODE_OFF:
1281                     msg = "OFF";
1282                     ret = 0;
1283                     break;
1284                 case ANDROID_CONTROL_MODE_AUTO:
1285                     msg = "AUTO";
1286                     ret = 0;
1287                     break;
1288                 case ANDROID_CONTROL_MODE_USE_SCENE_MODE:
1289                     msg = "USE_SCENE_MODE";
1290                     ret = 0;
1291                     break;
1292                 case ANDROID_CONTROL_MODE_OFF_KEEP_STATE:
1293                     msg = "OFF_KEEP_STATE";
1294                     ret = 0;
1295                     break;
1296                 case ANDROID_CONTROL_MODE_USE_EXTENDED_SCENE_MODE:
1297                     msg = "USE_EXTENDED_SCENE_MODE";
1298                     ret = 0;
1299                     break;
1300                 default:
1301                     msg = "error: enum value out of range";
1302             }
1303             break;
1304         }
1305         case ANDROID_CONTROL_SCENE_MODE: {
1306             switch (value) {
1307                 case ANDROID_CONTROL_SCENE_MODE_DISABLED:
1308                     msg = "DISABLED";
1309                     ret = 0;
1310                     break;
1311                 case ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY:
1312                     msg = "FACE_PRIORITY";
1313                     ret = 0;
1314                     break;
1315                 case ANDROID_CONTROL_SCENE_MODE_ACTION:
1316                     msg = "ACTION";
1317                     ret = 0;
1318                     break;
1319                 case ANDROID_CONTROL_SCENE_MODE_PORTRAIT:
1320                     msg = "PORTRAIT";
1321                     ret = 0;
1322                     break;
1323                 case ANDROID_CONTROL_SCENE_MODE_LANDSCAPE:
1324                     msg = "LANDSCAPE";
1325                     ret = 0;
1326                     break;
1327                 case ANDROID_CONTROL_SCENE_MODE_NIGHT:
1328                     msg = "NIGHT";
1329                     ret = 0;
1330                     break;
1331                 case ANDROID_CONTROL_SCENE_MODE_NIGHT_PORTRAIT:
1332                     msg = "NIGHT_PORTRAIT";
1333                     ret = 0;
1334                     break;
1335                 case ANDROID_CONTROL_SCENE_MODE_THEATRE:
1336                     msg = "THEATRE";
1337                     ret = 0;
1338                     break;
1339                 case ANDROID_CONTROL_SCENE_MODE_BEACH:
1340                     msg = "BEACH";
1341                     ret = 0;
1342                     break;
1343                 case ANDROID_CONTROL_SCENE_MODE_SNOW:
1344                     msg = "SNOW";
1345                     ret = 0;
1346                     break;
1347                 case ANDROID_CONTROL_SCENE_MODE_SUNSET:
1348                     msg = "SUNSET";
1349                     ret = 0;
1350                     break;
1351                 case ANDROID_CONTROL_SCENE_MODE_STEADYPHOTO:
1352                     msg = "STEADYPHOTO";
1353                     ret = 0;
1354                     break;
1355                 case ANDROID_CONTROL_SCENE_MODE_FIREWORKS:
1356                     msg = "FIREWORKS";
1357                     ret = 0;
1358                     break;
1359                 case ANDROID_CONTROL_SCENE_MODE_SPORTS:
1360                     msg = "SPORTS";
1361                     ret = 0;
1362                     break;
1363                 case ANDROID_CONTROL_SCENE_MODE_PARTY:
1364                     msg = "PARTY";
1365                     ret = 0;
1366                     break;
1367                 case ANDROID_CONTROL_SCENE_MODE_CANDLELIGHT:
1368                     msg = "CANDLELIGHT";
1369                     ret = 0;
1370                     break;
1371                 case ANDROID_CONTROL_SCENE_MODE_BARCODE:
1372                     msg = "BARCODE";
1373                     ret = 0;
1374                     break;
1375                 case ANDROID_CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO:
1376                     msg = "HIGH_SPEED_VIDEO";
1377                     ret = 0;
1378                     break;
1379                 case ANDROID_CONTROL_SCENE_MODE_HDR:
1380                     msg = "HDR";
1381                     ret = 0;
1382                     break;
1383                 case ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY_LOW_LIGHT:
1384                     msg = "FACE_PRIORITY_LOW_LIGHT";
1385                     ret = 0;
1386                     break;
1387                 case ANDROID_CONTROL_SCENE_MODE_DEVICE_CUSTOM_START:
1388                     msg = "DEVICE_CUSTOM_START";
1389                     ret = 0;
1390                     break;
1391                 case ANDROID_CONTROL_SCENE_MODE_DEVICE_CUSTOM_END:
1392                     msg = "DEVICE_CUSTOM_END";
1393                     ret = 0;
1394                     break;
1395                 default:
1396                     msg = "error: enum value out of range";
1397             }
1398             break;
1399         }
1400         case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE: {
1401             switch (value) {
1402                 case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_OFF:
1403                     msg = "OFF";
1404                     ret = 0;
1405                     break;
1406                 case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_ON:
1407                     msg = "ON";
1408                     ret = 0;
1409                     break;
1410                 default:
1411                     msg = "error: enum value out of range";
1412             }
1413             break;
1414         }
1415         case ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES: {
1416             break;
1417         }
1418         case ANDROID_CONTROL_AE_AVAILABLE_MODES: {
1419             break;
1420         }
1421         case ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES: {
1422             break;
1423         }
1424         case ANDROID_CONTROL_AE_COMPENSATION_RANGE: {
1425             break;
1426         }
1427         case ANDROID_CONTROL_AE_COMPENSATION_STEP: {
1428             break;
1429         }
1430         case ANDROID_CONTROL_AF_AVAILABLE_MODES: {
1431             break;
1432         }
1433         case ANDROID_CONTROL_AVAILABLE_EFFECTS: {
1434             break;
1435         }
1436         case ANDROID_CONTROL_AVAILABLE_SCENE_MODES: {
1437             break;
1438         }
1439         case ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES: {
1440             break;
1441         }
1442         case ANDROID_CONTROL_AWB_AVAILABLE_MODES: {
1443             break;
1444         }
1445         case ANDROID_CONTROL_MAX_REGIONS: {
1446             break;
1447         }
1448         case ANDROID_CONTROL_SCENE_MODE_OVERRIDES: {
1449             break;
1450         }
1451         case ANDROID_CONTROL_AE_PRECAPTURE_ID: {
1452             break;
1453         }
1454         case ANDROID_CONTROL_AE_STATE: {
1455             switch (value) {
1456                 case ANDROID_CONTROL_AE_STATE_INACTIVE:
1457                     msg = "INACTIVE";
1458                     ret = 0;
1459                     break;
1460                 case ANDROID_CONTROL_AE_STATE_SEARCHING:
1461                     msg = "SEARCHING";
1462                     ret = 0;
1463                     break;
1464                 case ANDROID_CONTROL_AE_STATE_CONVERGED:
1465                     msg = "CONVERGED";
1466                     ret = 0;
1467                     break;
1468                 case ANDROID_CONTROL_AE_STATE_LOCKED:
1469                     msg = "LOCKED";
1470                     ret = 0;
1471                     break;
1472                 case ANDROID_CONTROL_AE_STATE_FLASH_REQUIRED:
1473                     msg = "FLASH_REQUIRED";
1474                     ret = 0;
1475                     break;
1476                 case ANDROID_CONTROL_AE_STATE_PRECAPTURE:
1477                     msg = "PRECAPTURE";
1478                     ret = 0;
1479                     break;
1480                 default:
1481                     msg = "error: enum value out of range";
1482             }
1483             break;
1484         }
1485         case ANDROID_CONTROL_AF_STATE: {
1486             switch (value) {
1487                 case ANDROID_CONTROL_AF_STATE_INACTIVE:
1488                     msg = "INACTIVE";
1489                     ret = 0;
1490                     break;
1491                 case ANDROID_CONTROL_AF_STATE_PASSIVE_SCAN:
1492                     msg = "PASSIVE_SCAN";
1493                     ret = 0;
1494                     break;
1495                 case ANDROID_CONTROL_AF_STATE_PASSIVE_FOCUSED:
1496                     msg = "PASSIVE_FOCUSED";
1497                     ret = 0;
1498                     break;
1499                 case ANDROID_CONTROL_AF_STATE_ACTIVE_SCAN:
1500                     msg = "ACTIVE_SCAN";
1501                     ret = 0;
1502                     break;
1503                 case ANDROID_CONTROL_AF_STATE_FOCUSED_LOCKED:
1504                     msg = "FOCUSED_LOCKED";
1505                     ret = 0;
1506                     break;
1507                 case ANDROID_CONTROL_AF_STATE_NOT_FOCUSED_LOCKED:
1508                     msg = "NOT_FOCUSED_LOCKED";
1509                     ret = 0;
1510                     break;
1511                 case ANDROID_CONTROL_AF_STATE_PASSIVE_UNFOCUSED:
1512                     msg = "PASSIVE_UNFOCUSED";
1513                     ret = 0;
1514                     break;
1515                 default:
1516                     msg = "error: enum value out of range";
1517             }
1518             break;
1519         }
1520         case ANDROID_CONTROL_AF_TRIGGER_ID: {
1521             break;
1522         }
1523         case ANDROID_CONTROL_AWB_STATE: {
1524             switch (value) {
1525                 case ANDROID_CONTROL_AWB_STATE_INACTIVE:
1526                     msg = "INACTIVE";
1527                     ret = 0;
1528                     break;
1529                 case ANDROID_CONTROL_AWB_STATE_SEARCHING:
1530                     msg = "SEARCHING";
1531                     ret = 0;
1532                     break;
1533                 case ANDROID_CONTROL_AWB_STATE_CONVERGED:
1534                     msg = "CONVERGED";
1535                     ret = 0;
1536                     break;
1537                 case ANDROID_CONTROL_AWB_STATE_LOCKED:
1538                     msg = "LOCKED";
1539                     ret = 0;
1540                     break;
1541                 default:
1542                     msg = "error: enum value out of range";
1543             }
1544             break;
1545         }
1546         case ANDROID_CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS: {
1547             break;
1548         }
1549         case ANDROID_CONTROL_AE_LOCK_AVAILABLE: {
1550             switch (value) {
1551                 case ANDROID_CONTROL_AE_LOCK_AVAILABLE_FALSE:
1552                     msg = "FALSE";
1553                     ret = 0;
1554                     break;
1555                 case ANDROID_CONTROL_AE_LOCK_AVAILABLE_TRUE:
1556                     msg = "TRUE";
1557                     ret = 0;
1558                     break;
1559                 default:
1560                     msg = "error: enum value out of range";
1561             }
1562             break;
1563         }
1564         case ANDROID_CONTROL_AWB_LOCK_AVAILABLE: {
1565             switch (value) {
1566                 case ANDROID_CONTROL_AWB_LOCK_AVAILABLE_FALSE:
1567                     msg = "FALSE";
1568                     ret = 0;
1569                     break;
1570                 case ANDROID_CONTROL_AWB_LOCK_AVAILABLE_TRUE:
1571                     msg = "TRUE";
1572                     ret = 0;
1573                     break;
1574                 default:
1575                     msg = "error: enum value out of range";
1576             }
1577             break;
1578         }
1579         case ANDROID_CONTROL_AVAILABLE_MODES: {
1580             break;
1581         }
1582         case ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE: {
1583             break;
1584         }
1585         case ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST: {
1586             break;
1587         }
1588         case ANDROID_CONTROL_ENABLE_ZSL: {
1589             switch (value) {
1590                 case ANDROID_CONTROL_ENABLE_ZSL_FALSE:
1591                     msg = "FALSE";
1592                     ret = 0;
1593                     break;
1594                 case ANDROID_CONTROL_ENABLE_ZSL_TRUE:
1595                     msg = "TRUE";
1596                     ret = 0;
1597                     break;
1598                 default:
1599                     msg = "error: enum value out of range";
1600             }
1601             break;
1602         }
1603         case ANDROID_CONTROL_AF_SCENE_CHANGE: {
1604             switch (value) {
1605                 case ANDROID_CONTROL_AF_SCENE_CHANGE_NOT_DETECTED:
1606                     msg = "NOT_DETECTED";
1607                     ret = 0;
1608                     break;
1609                 case ANDROID_CONTROL_AF_SCENE_CHANGE_DETECTED:
1610                     msg = "DETECTED";
1611                     ret = 0;
1612                     break;
1613                 default:
1614                     msg = "error: enum value out of range";
1615             }
1616             break;
1617         }
1618         case ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES: {
1619             break;
1620         }
1621         case ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES: {
1622             break;
1623         }
1624         case ANDROID_CONTROL_EXTENDED_SCENE_MODE: {
1625             switch (value) {
1626                 case ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED:
1627                     msg = "DISABLED";
1628                     ret = 0;
1629                     break;
1630                 case ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE:
1631                     msg = "BOKEH_STILL_CAPTURE";
1632                     ret = 0;
1633                     break;
1634                 case ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS:
1635                     msg = "BOKEH_CONTINUOUS";
1636                     ret = 0;
1637                     break;
1638                 case ANDROID_CONTROL_EXTENDED_SCENE_MODE_VENDOR_START:
1639                     msg = "VENDOR_START";
1640                     ret = 0;
1641                     break;
1642                 default:
1643                     msg = "error: enum value out of range";
1644             }
1645             break;
1646         }
1647         case ANDROID_CONTROL_ZOOM_RATIO_RANGE: {
1648             break;
1649         }
1650         case ANDROID_CONTROL_ZOOM_RATIO: {
1651             break;
1652         }
1653         case ANDROID_CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS_MAXIMUM_RESOLUTION: {
1654             break;
1655         }
1656         case ANDROID_CONTROL_AF_REGIONS_SET: {
1657             switch (value) {
1658                 case ANDROID_CONTROL_AF_REGIONS_SET_TRUE:
1659                     msg = "TRUE";
1660                     ret = 0;
1661                     break;
1662                 case ANDROID_CONTROL_AF_REGIONS_SET_FALSE:
1663                     msg = "FALSE";
1664                     ret = 0;
1665                     break;
1666                 default:
1667                     msg = "error: enum value out of range";
1668             }
1669             break;
1670         }
1671         case ANDROID_CONTROL_AE_REGIONS_SET: {
1672             switch (value) {
1673                 case ANDROID_CONTROL_AE_REGIONS_SET_TRUE:
1674                     msg = "TRUE";
1675                     ret = 0;
1676                     break;
1677                 case ANDROID_CONTROL_AE_REGIONS_SET_FALSE:
1678                     msg = "FALSE";
1679                     ret = 0;
1680                     break;
1681                 default:
1682                     msg = "error: enum value out of range";
1683             }
1684             break;
1685         }
1686         case ANDROID_CONTROL_AWB_REGIONS_SET: {
1687             switch (value) {
1688                 case ANDROID_CONTROL_AWB_REGIONS_SET_TRUE:
1689                     msg = "TRUE";
1690                     ret = 0;
1691                     break;
1692                 case ANDROID_CONTROL_AWB_REGIONS_SET_FALSE:
1693                     msg = "FALSE";
1694                     ret = 0;
1695                     break;
1696                 default:
1697                     msg = "error: enum value out of range";
1698             }
1699             break;
1700         }
1701 
1702         case ANDROID_DEMOSAIC_MODE: {
1703             switch (value) {
1704                 case ANDROID_DEMOSAIC_MODE_FAST:
1705                     msg = "FAST";
1706                     ret = 0;
1707                     break;
1708                 case ANDROID_DEMOSAIC_MODE_HIGH_QUALITY:
1709                     msg = "HIGH_QUALITY";
1710                     ret = 0;
1711                     break;
1712                 default:
1713                     msg = "error: enum value out of range";
1714             }
1715             break;
1716         }
1717 
1718         case ANDROID_EDGE_MODE: {
1719             switch (value) {
1720                 case ANDROID_EDGE_MODE_OFF:
1721                     msg = "OFF";
1722                     ret = 0;
1723                     break;
1724                 case ANDROID_EDGE_MODE_FAST:
1725                     msg = "FAST";
1726                     ret = 0;
1727                     break;
1728                 case ANDROID_EDGE_MODE_HIGH_QUALITY:
1729                     msg = "HIGH_QUALITY";
1730                     ret = 0;
1731                     break;
1732                 case ANDROID_EDGE_MODE_ZERO_SHUTTER_LAG:
1733                     msg = "ZERO_SHUTTER_LAG";
1734                     ret = 0;
1735                     break;
1736                 default:
1737                     msg = "error: enum value out of range";
1738             }
1739             break;
1740         }
1741         case ANDROID_EDGE_STRENGTH: {
1742             break;
1743         }
1744         case ANDROID_EDGE_AVAILABLE_EDGE_MODES: {
1745             break;
1746         }
1747 
1748         case ANDROID_FLASH_FIRING_POWER: {
1749             break;
1750         }
1751         case ANDROID_FLASH_FIRING_TIME: {
1752             break;
1753         }
1754         case ANDROID_FLASH_MODE: {
1755             switch (value) {
1756                 case ANDROID_FLASH_MODE_OFF:
1757                     msg = "OFF";
1758                     ret = 0;
1759                     break;
1760                 case ANDROID_FLASH_MODE_SINGLE:
1761                     msg = "SINGLE";
1762                     ret = 0;
1763                     break;
1764                 case ANDROID_FLASH_MODE_TORCH:
1765                     msg = "TORCH";
1766                     ret = 0;
1767                     break;
1768                 default:
1769                     msg = "error: enum value out of range";
1770             }
1771             break;
1772         }
1773         case ANDROID_FLASH_COLOR_TEMPERATURE: {
1774             break;
1775         }
1776         case ANDROID_FLASH_MAX_ENERGY: {
1777             break;
1778         }
1779         case ANDROID_FLASH_STATE: {
1780             switch (value) {
1781                 case ANDROID_FLASH_STATE_UNAVAILABLE:
1782                     msg = "UNAVAILABLE";
1783                     ret = 0;
1784                     break;
1785                 case ANDROID_FLASH_STATE_CHARGING:
1786                     msg = "CHARGING";
1787                     ret = 0;
1788                     break;
1789                 case ANDROID_FLASH_STATE_READY:
1790                     msg = "READY";
1791                     ret = 0;
1792                     break;
1793                 case ANDROID_FLASH_STATE_FIRED:
1794                     msg = "FIRED";
1795                     ret = 0;
1796                     break;
1797                 case ANDROID_FLASH_STATE_PARTIAL:
1798                     msg = "PARTIAL";
1799                     ret = 0;
1800                     break;
1801                 default:
1802                     msg = "error: enum value out of range";
1803             }
1804             break;
1805         }
1806 
1807         case ANDROID_FLASH_INFO_AVAILABLE: {
1808             switch (value) {
1809                 case ANDROID_FLASH_INFO_AVAILABLE_FALSE:
1810                     msg = "FALSE";
1811                     ret = 0;
1812                     break;
1813                 case ANDROID_FLASH_INFO_AVAILABLE_TRUE:
1814                     msg = "TRUE";
1815                     ret = 0;
1816                     break;
1817                 default:
1818                     msg = "error: enum value out of range";
1819             }
1820             break;
1821         }
1822         case ANDROID_FLASH_INFO_CHARGE_DURATION: {
1823             break;
1824         }
1825 
1826         case ANDROID_HOT_PIXEL_MODE: {
1827             switch (value) {
1828                 case ANDROID_HOT_PIXEL_MODE_OFF:
1829                     msg = "OFF";
1830                     ret = 0;
1831                     break;
1832                 case ANDROID_HOT_PIXEL_MODE_FAST:
1833                     msg = "FAST";
1834                     ret = 0;
1835                     break;
1836                 case ANDROID_HOT_PIXEL_MODE_HIGH_QUALITY:
1837                     msg = "HIGH_QUALITY";
1838                     ret = 0;
1839                     break;
1840                 default:
1841                     msg = "error: enum value out of range";
1842             }
1843             break;
1844         }
1845         case ANDROID_HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES: {
1846             break;
1847         }
1848 
1849         case ANDROID_JPEG_GPS_COORDINATES: {
1850             break;
1851         }
1852         case ANDROID_JPEG_GPS_PROCESSING_METHOD: {
1853             break;
1854         }
1855         case ANDROID_JPEG_GPS_TIMESTAMP: {
1856             break;
1857         }
1858         case ANDROID_JPEG_ORIENTATION: {
1859             break;
1860         }
1861         case ANDROID_JPEG_QUALITY: {
1862             break;
1863         }
1864         case ANDROID_JPEG_THUMBNAIL_QUALITY: {
1865             break;
1866         }
1867         case ANDROID_JPEG_THUMBNAIL_SIZE: {
1868             break;
1869         }
1870         case ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES: {
1871             break;
1872         }
1873         case ANDROID_JPEG_MAX_SIZE: {
1874             break;
1875         }
1876         case ANDROID_JPEG_SIZE: {
1877             break;
1878         }
1879 
1880         case ANDROID_LENS_APERTURE: {
1881             break;
1882         }
1883         case ANDROID_LENS_FILTER_DENSITY: {
1884             break;
1885         }
1886         case ANDROID_LENS_FOCAL_LENGTH: {
1887             break;
1888         }
1889         case ANDROID_LENS_FOCUS_DISTANCE: {
1890             break;
1891         }
1892         case ANDROID_LENS_OPTICAL_STABILIZATION_MODE: {
1893             switch (value) {
1894                 case ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF:
1895                     msg = "OFF";
1896                     ret = 0;
1897                     break;
1898                 case ANDROID_LENS_OPTICAL_STABILIZATION_MODE_ON:
1899                     msg = "ON";
1900                     ret = 0;
1901                     break;
1902                 default:
1903                     msg = "error: enum value out of range";
1904             }
1905             break;
1906         }
1907         case ANDROID_LENS_FACING: {
1908             switch (value) {
1909                 case ANDROID_LENS_FACING_FRONT:
1910                     msg = "FRONT";
1911                     ret = 0;
1912                     break;
1913                 case ANDROID_LENS_FACING_BACK:
1914                     msg = "BACK";
1915                     ret = 0;
1916                     break;
1917                 case ANDROID_LENS_FACING_EXTERNAL:
1918                     msg = "EXTERNAL";
1919                     ret = 0;
1920                     break;
1921                 default:
1922                     msg = "error: enum value out of range";
1923             }
1924             break;
1925         }
1926         case ANDROID_LENS_POSE_ROTATION: {
1927             break;
1928         }
1929         case ANDROID_LENS_POSE_TRANSLATION: {
1930             break;
1931         }
1932         case ANDROID_LENS_FOCUS_RANGE: {
1933             break;
1934         }
1935         case ANDROID_LENS_STATE: {
1936             switch (value) {
1937                 case ANDROID_LENS_STATE_STATIONARY:
1938                     msg = "STATIONARY";
1939                     ret = 0;
1940                     break;
1941                 case ANDROID_LENS_STATE_MOVING:
1942                     msg = "MOVING";
1943                     ret = 0;
1944                     break;
1945                 default:
1946                     msg = "error: enum value out of range";
1947             }
1948             break;
1949         }
1950         case ANDROID_LENS_INTRINSIC_CALIBRATION: {
1951             break;
1952         }
1953         case ANDROID_LENS_RADIAL_DISTORTION: {
1954             break;
1955         }
1956         case ANDROID_LENS_POSE_REFERENCE: {
1957             switch (value) {
1958                 case ANDROID_LENS_POSE_REFERENCE_PRIMARY_CAMERA:
1959                     msg = "PRIMARY_CAMERA";
1960                     ret = 0;
1961                     break;
1962                 case ANDROID_LENS_POSE_REFERENCE_GYROSCOPE:
1963                     msg = "GYROSCOPE";
1964                     ret = 0;
1965                     break;
1966                 case ANDROID_LENS_POSE_REFERENCE_UNDEFINED:
1967                     msg = "UNDEFINED";
1968                     ret = 0;
1969                     break;
1970                 default:
1971                     msg = "error: enum value out of range";
1972             }
1973             break;
1974         }
1975         case ANDROID_LENS_DISTORTION: {
1976             break;
1977         }
1978         case ANDROID_LENS_DISTORTION_MAXIMUM_RESOLUTION: {
1979             break;
1980         }
1981         case ANDROID_LENS_INTRINSIC_CALIBRATION_MAXIMUM_RESOLUTION: {
1982             break;
1983         }
1984 
1985         case ANDROID_LENS_INFO_AVAILABLE_APERTURES: {
1986             break;
1987         }
1988         case ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES: {
1989             break;
1990         }
1991         case ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS: {
1992             break;
1993         }
1994         case ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION: {
1995             break;
1996         }
1997         case ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE: {
1998             break;
1999         }
2000         case ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE: {
2001             break;
2002         }
2003         case ANDROID_LENS_INFO_SHADING_MAP_SIZE: {
2004             break;
2005         }
2006         case ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION: {
2007             switch (value) {
2008                 case ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED:
2009                     msg = "UNCALIBRATED";
2010                     ret = 0;
2011                     break;
2012                 case ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE:
2013                     msg = "APPROXIMATE";
2014                     ret = 0;
2015                     break;
2016                 case ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED:
2017                     msg = "CALIBRATED";
2018                     ret = 0;
2019                     break;
2020                 default:
2021                     msg = "error: enum value out of range";
2022             }
2023             break;
2024         }
2025 
2026         case ANDROID_NOISE_REDUCTION_MODE: {
2027             switch (value) {
2028                 case ANDROID_NOISE_REDUCTION_MODE_OFF:
2029                     msg = "OFF";
2030                     ret = 0;
2031                     break;
2032                 case ANDROID_NOISE_REDUCTION_MODE_FAST:
2033                     msg = "FAST";
2034                     ret = 0;
2035                     break;
2036                 case ANDROID_NOISE_REDUCTION_MODE_HIGH_QUALITY:
2037                     msg = "HIGH_QUALITY";
2038                     ret = 0;
2039                     break;
2040                 case ANDROID_NOISE_REDUCTION_MODE_MINIMAL:
2041                     msg = "MINIMAL";
2042                     ret = 0;
2043                     break;
2044                 case ANDROID_NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG:
2045                     msg = "ZERO_SHUTTER_LAG";
2046                     ret = 0;
2047                     break;
2048                 default:
2049                     msg = "error: enum value out of range";
2050             }
2051             break;
2052         }
2053         case ANDROID_NOISE_REDUCTION_STRENGTH: {
2054             break;
2055         }
2056         case ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES: {
2057             break;
2058         }
2059 
2060         case ANDROID_QUIRKS_METERING_CROP_REGION: {
2061             break;
2062         }
2063         case ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO: {
2064             break;
2065         }
2066         case ANDROID_QUIRKS_USE_ZSL_FORMAT: {
2067             break;
2068         }
2069         case ANDROID_QUIRKS_USE_PARTIAL_RESULT: {
2070             break;
2071         }
2072         case ANDROID_QUIRKS_PARTIAL_RESULT: {
2073             switch (value) {
2074                 case ANDROID_QUIRKS_PARTIAL_RESULT_FINAL:
2075                     msg = "FINAL";
2076                     ret = 0;
2077                     break;
2078                 case ANDROID_QUIRKS_PARTIAL_RESULT_PARTIAL:
2079                     msg = "PARTIAL";
2080                     ret = 0;
2081                     break;
2082                 default:
2083                     msg = "error: enum value out of range";
2084             }
2085             break;
2086         }
2087 
2088         case ANDROID_REQUEST_FRAME_COUNT: {
2089             break;
2090         }
2091         case ANDROID_REQUEST_ID: {
2092             break;
2093         }
2094         case ANDROID_REQUEST_INPUT_STREAMS: {
2095             break;
2096         }
2097         case ANDROID_REQUEST_METADATA_MODE: {
2098             switch (value) {
2099                 case ANDROID_REQUEST_METADATA_MODE_NONE:
2100                     msg = "NONE";
2101                     ret = 0;
2102                     break;
2103                 case ANDROID_REQUEST_METADATA_MODE_FULL:
2104                     msg = "FULL";
2105                     ret = 0;
2106                     break;
2107                 default:
2108                     msg = "error: enum value out of range";
2109             }
2110             break;
2111         }
2112         case ANDROID_REQUEST_OUTPUT_STREAMS: {
2113             break;
2114         }
2115         case ANDROID_REQUEST_TYPE: {
2116             switch (value) {
2117                 case ANDROID_REQUEST_TYPE_CAPTURE:
2118                     msg = "CAPTURE";
2119                     ret = 0;
2120                     break;
2121                 case ANDROID_REQUEST_TYPE_REPROCESS:
2122                     msg = "REPROCESS";
2123                     ret = 0;
2124                     break;
2125                 default:
2126                     msg = "error: enum value out of range";
2127             }
2128             break;
2129         }
2130         case ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS: {
2131             break;
2132         }
2133         case ANDROID_REQUEST_MAX_NUM_REPROCESS_STREAMS: {
2134             break;
2135         }
2136         case ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS: {
2137             break;
2138         }
2139         case ANDROID_REQUEST_PIPELINE_DEPTH: {
2140             break;
2141         }
2142         case ANDROID_REQUEST_PIPELINE_MAX_DEPTH: {
2143             break;
2144         }
2145         case ANDROID_REQUEST_PARTIAL_RESULT_COUNT: {
2146             break;
2147         }
2148         case ANDROID_REQUEST_AVAILABLE_CAPABILITIES: {
2149             switch (value) {
2150                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE:
2151                     msg = "BACKWARD_COMPATIBLE";
2152                     ret = 0;
2153                     break;
2154                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR:
2155                     msg = "MANUAL_SENSOR";
2156                     ret = 0;
2157                     break;
2158                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING:
2159                     msg = "MANUAL_POST_PROCESSING";
2160                     ret = 0;
2161                     break;
2162                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_RAW:
2163                     msg = "RAW";
2164                     ret = 0;
2165                     break;
2166                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING:
2167                     msg = "PRIVATE_REPROCESSING";
2168                     ret = 0;
2169                     break;
2170                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS:
2171                     msg = "READ_SENSOR_SETTINGS";
2172                     ret = 0;
2173                     break;
2174                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE:
2175                     msg = "BURST_CAPTURE";
2176                     ret = 0;
2177                     break;
2178                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING:
2179                     msg = "YUV_REPROCESSING";
2180                     ret = 0;
2181                     break;
2182                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT:
2183                     msg = "DEPTH_OUTPUT";
2184                     ret = 0;
2185                     break;
2186                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO:
2187                     msg = "CONSTRAINED_HIGH_SPEED_VIDEO";
2188                     ret = 0;
2189                     break;
2190                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING:
2191                     msg = "MOTION_TRACKING";
2192                     ret = 0;
2193                     break;
2194                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA:
2195                     msg = "LOGICAL_MULTI_CAMERA";
2196                     ret = 0;
2197                     break;
2198                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME:
2199                     msg = "MONOCHROME";
2200                     ret = 0;
2201                     break;
2202                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA:
2203                     msg = "SECURE_IMAGE_DATA";
2204                     ret = 0;
2205                     break;
2206                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA:
2207                     msg = "SYSTEM_CAMERA";
2208                     ret = 0;
2209                     break;
2210                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_OFFLINE_PROCESSING:
2211                     msg = "OFFLINE_PROCESSING";
2212                     ret = 0;
2213                     break;
2214                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR:
2215                     msg = "ULTRA_HIGH_RESOLUTION_SENSOR";
2216                     ret = 0;
2217                     break;
2218                 case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_REMOSAIC_REPROCESSING:
2219                     msg = "REMOSAIC_REPROCESSING";
2220                     ret = 0;
2221                     break;
2222                 default:
2223                     msg = "error: enum value out of range";
2224             }
2225             break;
2226         }
2227         case ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS: {
2228             break;
2229         }
2230         case ANDROID_REQUEST_AVAILABLE_RESULT_KEYS: {
2231             break;
2232         }
2233         case ANDROID_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS: {
2234             break;
2235         }
2236         case ANDROID_REQUEST_AVAILABLE_SESSION_KEYS: {
2237             break;
2238         }
2239         case ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS: {
2240             break;
2241         }
2242         case ANDROID_REQUEST_CHARACTERISTIC_KEYS_NEEDING_PERMISSION: {
2243             break;
2244         }
2245 
2246         case ANDROID_SCALER_CROP_REGION: {
2247             break;
2248         }
2249         case ANDROID_SCALER_AVAILABLE_FORMATS: {
2250             switch (value) {
2251                 case ANDROID_SCALER_AVAILABLE_FORMATS_RAW16:
2252                     msg = "RAW16";
2253                     ret = 0;
2254                     break;
2255                 case ANDROID_SCALER_AVAILABLE_FORMATS_RAW_OPAQUE:
2256                     msg = "RAW_OPAQUE";
2257                     ret = 0;
2258                     break;
2259                 case ANDROID_SCALER_AVAILABLE_FORMATS_YV12:
2260                     msg = "YV12";
2261                     ret = 0;
2262                     break;
2263                 case ANDROID_SCALER_AVAILABLE_FORMATS_YCrCb_420_SP:
2264                     msg = "YCrCb_420_SP";
2265                     ret = 0;
2266                     break;
2267                 case ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED:
2268                     msg = "IMPLEMENTATION_DEFINED";
2269                     ret = 0;
2270                     break;
2271                 case ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888:
2272                     msg = "YCbCr_420_888";
2273                     ret = 0;
2274                     break;
2275                 case ANDROID_SCALER_AVAILABLE_FORMATS_BLOB:
2276                     msg = "BLOB";
2277                     ret = 0;
2278                     break;
2279                 case ANDROID_SCALER_AVAILABLE_FORMATS_RAW10:
2280                     msg = "RAW10";
2281                     ret = 0;
2282                     break;
2283                 case ANDROID_SCALER_AVAILABLE_FORMATS_RAW12:
2284                     msg = "RAW12";
2285                     ret = 0;
2286                     break;
2287                 case ANDROID_SCALER_AVAILABLE_FORMATS_Y8:
2288                     msg = "Y8";
2289                     ret = 0;
2290                     break;
2291                 default:
2292                     msg = "error: enum value out of range";
2293             }
2294             break;
2295         }
2296         case ANDROID_SCALER_AVAILABLE_JPEG_MIN_DURATIONS: {
2297             break;
2298         }
2299         case ANDROID_SCALER_AVAILABLE_JPEG_SIZES: {
2300             break;
2301         }
2302         case ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM: {
2303             break;
2304         }
2305         case ANDROID_SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS: {
2306             break;
2307         }
2308         case ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES: {
2309             break;
2310         }
2311         case ANDROID_SCALER_AVAILABLE_RAW_MIN_DURATIONS: {
2312             break;
2313         }
2314         case ANDROID_SCALER_AVAILABLE_RAW_SIZES: {
2315             break;
2316         }
2317         case ANDROID_SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP: {
2318             break;
2319         }
2320         case ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS: {
2321             switch (value) {
2322                 case ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT:
2323                     msg = "OUTPUT";
2324                     ret = 0;
2325                     break;
2326                 case ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_INPUT:
2327                     msg = "INPUT";
2328                     ret = 0;
2329                     break;
2330                 default:
2331                     msg = "error: enum value out of range";
2332             }
2333             break;
2334         }
2335         case ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS: {
2336             break;
2337         }
2338         case ANDROID_SCALER_AVAILABLE_STALL_DURATIONS: {
2339             break;
2340         }
2341         case ANDROID_SCALER_CROPPING_TYPE: {
2342             switch (value) {
2343                 case ANDROID_SCALER_CROPPING_TYPE_CENTER_ONLY:
2344                     msg = "CENTER_ONLY";
2345                     ret = 0;
2346                     break;
2347                 case ANDROID_SCALER_CROPPING_TYPE_FREEFORM:
2348                     msg = "FREEFORM";
2349                     ret = 0;
2350                     break;
2351                 default:
2352                     msg = "error: enum value out of range";
2353             }
2354             break;
2355         }
2356         case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS: {
2357             switch (value) {
2358                 case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW:
2359                     msg = "PREVIEW";
2360                     ret = 0;
2361                     break;
2362                 case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD:
2363                     msg = "RECORD";
2364                     ret = 0;
2365                     break;
2366                 case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT:
2367                     msg = "VIDEO_SNAPSHOT";
2368                     ret = 0;
2369                     break;
2370                 case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT:
2371                     msg = "SNAPSHOT";
2372                     ret = 0;
2373                     break;
2374                 case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_ZSL:
2375                     msg = "ZSL";
2376                     ret = 0;
2377                     break;
2378                 case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RAW:
2379                     msg = "RAW";
2380                     ret = 0;
2381                     break;
2382                 case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_LOW_LATENCY_SNAPSHOT:
2383                     msg = "LOW_LATENCY_SNAPSHOT";
2384                     ret = 0;
2385                     break;
2386                 case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PUBLIC_END:
2387                     msg = "PUBLIC_END";
2388                     ret = 0;
2389                     break;
2390                 case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VENDOR_START:
2391                     msg = "VENDOR_START";
2392                     ret = 0;
2393                     break;
2394                 default:
2395                     msg = "error: enum value out of range";
2396             }
2397             break;
2398         }
2399         case ANDROID_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP: {
2400             break;
2401         }
2402         case ANDROID_SCALER_AVAILABLE_ROTATE_AND_CROP_MODES: {
2403             break;
2404         }
2405         case ANDROID_SCALER_ROTATE_AND_CROP: {
2406             switch (value) {
2407                 case ANDROID_SCALER_ROTATE_AND_CROP_NONE:
2408                     msg = "NONE";
2409                     ret = 0;
2410                     break;
2411                 case ANDROID_SCALER_ROTATE_AND_CROP_90:
2412                     msg = "90";
2413                     ret = 0;
2414                     break;
2415                 case ANDROID_SCALER_ROTATE_AND_CROP_180:
2416                     msg = "180";
2417                     ret = 0;
2418                     break;
2419                 case ANDROID_SCALER_ROTATE_AND_CROP_270:
2420                     msg = "270";
2421                     ret = 0;
2422                     break;
2423                 case ANDROID_SCALER_ROTATE_AND_CROP_AUTO:
2424                     msg = "AUTO";
2425                     ret = 0;
2426                     break;
2427                 default:
2428                     msg = "error: enum value out of range";
2429             }
2430             break;
2431         }
2432         case ANDROID_SCALER_DEFAULT_SECURE_IMAGE_SIZE: {
2433             break;
2434         }
2435         case ANDROID_SCALER_PHYSICAL_CAMERA_MULTI_RESOLUTION_STREAM_CONFIGURATIONS: {
2436             switch (value) {
2437                 case ANDROID_SCALER_PHYSICAL_CAMERA_MULTI_RESOLUTION_STREAM_CONFIGURATIONS_OUTPUT:
2438                     msg = "OUTPUT";
2439                     ret = 0;
2440                     break;
2441                 case ANDROID_SCALER_PHYSICAL_CAMERA_MULTI_RESOLUTION_STREAM_CONFIGURATIONS_INPUT:
2442                     msg = "INPUT";
2443                     ret = 0;
2444                     break;
2445                 default:
2446                     msg = "error: enum value out of range";
2447             }
2448             break;
2449         }
2450         case ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION: {
2451             switch (value) {
2452                 case ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_OUTPUT:
2453                     msg = "OUTPUT";
2454                     ret = 0;
2455                     break;
2456                 case ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT:
2457                     msg = "INPUT";
2458                     ret = 0;
2459                     break;
2460                 default:
2461                     msg = "error: enum value out of range";
2462             }
2463             break;
2464         }
2465         case ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION: {
2466             break;
2467         }
2468         case ANDROID_SCALER_AVAILABLE_STALL_DURATIONS_MAXIMUM_RESOLUTION: {
2469             break;
2470         }
2471         case ANDROID_SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP_MAXIMUM_RESOLUTION: {
2472             break;
2473         }
2474         case ANDROID_SCALER_MULTI_RESOLUTION_STREAM_SUPPORTED: {
2475             switch (value) {
2476                 case ANDROID_SCALER_MULTI_RESOLUTION_STREAM_SUPPORTED_FALSE:
2477                     msg = "FALSE";
2478                     ret = 0;
2479                     break;
2480                 case ANDROID_SCALER_MULTI_RESOLUTION_STREAM_SUPPORTED_TRUE:
2481                     msg = "TRUE";
2482                     ret = 0;
2483                     break;
2484                 default:
2485                     msg = "error: enum value out of range";
2486             }
2487             break;
2488         }
2489         case ANDROID_SCALER_CROP_REGION_SET: {
2490             switch (value) {
2491                 case ANDROID_SCALER_CROP_REGION_SET_TRUE:
2492                     msg = "TRUE";
2493                     ret = 0;
2494                     break;
2495                 case ANDROID_SCALER_CROP_REGION_SET_FALSE:
2496                     msg = "FALSE";
2497                     ret = 0;
2498                     break;
2499                 default:
2500                     msg = "error: enum value out of range";
2501             }
2502             break;
2503         }
2504 
2505         case ANDROID_SENSOR_EXPOSURE_TIME: {
2506             break;
2507         }
2508         case ANDROID_SENSOR_FRAME_DURATION: {
2509             break;
2510         }
2511         case ANDROID_SENSOR_SENSITIVITY: {
2512             break;
2513         }
2514         case ANDROID_SENSOR_REFERENCE_ILLUMINANT1: {
2515             switch (value) {
2516                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT:
2517                     msg = "DAYLIGHT";
2518                     ret = 0;
2519                     break;
2520                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FLUORESCENT:
2521                     msg = "FLUORESCENT";
2522                     ret = 0;
2523                     break;
2524                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_TUNGSTEN:
2525                     msg = "TUNGSTEN";
2526                     ret = 0;
2527                     break;
2528                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FLASH:
2529                     msg = "FLASH";
2530                     ret = 0;
2531                     break;
2532                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FINE_WEATHER:
2533                     msg = "FINE_WEATHER";
2534                     ret = 0;
2535                     break;
2536                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_CLOUDY_WEATHER:
2537                     msg = "CLOUDY_WEATHER";
2538                     ret = 0;
2539                     break;
2540                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_SHADE:
2541                     msg = "SHADE";
2542                     ret = 0;
2543                     break;
2544                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT_FLUORESCENT:
2545                     msg = "DAYLIGHT_FLUORESCENT";
2546                     ret = 0;
2547                     break;
2548                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAY_WHITE_FLUORESCENT:
2549                     msg = "DAY_WHITE_FLUORESCENT";
2550                     ret = 0;
2551                     break;
2552                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_COOL_WHITE_FLUORESCENT:
2553                     msg = "COOL_WHITE_FLUORESCENT";
2554                     ret = 0;
2555                     break;
2556                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_WHITE_FLUORESCENT:
2557                     msg = "WHITE_FLUORESCENT";
2558                     ret = 0;
2559                     break;
2560                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_A:
2561                     msg = "STANDARD_A";
2562                     ret = 0;
2563                     break;
2564                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_B:
2565                     msg = "STANDARD_B";
2566                     ret = 0;
2567                     break;
2568                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_C:
2569                     msg = "STANDARD_C";
2570                     ret = 0;
2571                     break;
2572                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D55:
2573                     msg = "D55";
2574                     ret = 0;
2575                     break;
2576                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D65:
2577                     msg = "D65";
2578                     ret = 0;
2579                     break;
2580                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D75:
2581                     msg = "D75";
2582                     ret = 0;
2583                     break;
2584                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D50:
2585                     msg = "D50";
2586                     ret = 0;
2587                     break;
2588                 case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_ISO_STUDIO_TUNGSTEN:
2589                     msg = "ISO_STUDIO_TUNGSTEN";
2590                     ret = 0;
2591                     break;
2592                 default:
2593                     msg = "error: enum value out of range";
2594             }
2595             break;
2596         }
2597         case ANDROID_SENSOR_REFERENCE_ILLUMINANT2: {
2598             break;
2599         }
2600         case ANDROID_SENSOR_CALIBRATION_TRANSFORM1: {
2601             break;
2602         }
2603         case ANDROID_SENSOR_CALIBRATION_TRANSFORM2: {
2604             break;
2605         }
2606         case ANDROID_SENSOR_COLOR_TRANSFORM1: {
2607             break;
2608         }
2609         case ANDROID_SENSOR_COLOR_TRANSFORM2: {
2610             break;
2611         }
2612         case ANDROID_SENSOR_FORWARD_MATRIX1: {
2613             break;
2614         }
2615         case ANDROID_SENSOR_FORWARD_MATRIX2: {
2616             break;
2617         }
2618         case ANDROID_SENSOR_BASE_GAIN_FACTOR: {
2619             break;
2620         }
2621         case ANDROID_SENSOR_BLACK_LEVEL_PATTERN: {
2622             break;
2623         }
2624         case ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY: {
2625             break;
2626         }
2627         case ANDROID_SENSOR_ORIENTATION: {
2628             break;
2629         }
2630         case ANDROID_SENSOR_PROFILE_HUE_SAT_MAP_DIMENSIONS: {
2631             break;
2632         }
2633         case ANDROID_SENSOR_TIMESTAMP: {
2634             break;
2635         }
2636         case ANDROID_SENSOR_TEMPERATURE: {
2637             break;
2638         }
2639         case ANDROID_SENSOR_NEUTRAL_COLOR_POINT: {
2640             break;
2641         }
2642         case ANDROID_SENSOR_NOISE_PROFILE: {
2643             break;
2644         }
2645         case ANDROID_SENSOR_PROFILE_HUE_SAT_MAP: {
2646             break;
2647         }
2648         case ANDROID_SENSOR_PROFILE_TONE_CURVE: {
2649             break;
2650         }
2651         case ANDROID_SENSOR_GREEN_SPLIT: {
2652             break;
2653         }
2654         case ANDROID_SENSOR_TEST_PATTERN_DATA: {
2655             break;
2656         }
2657         case ANDROID_SENSOR_TEST_PATTERN_MODE: {
2658             switch (value) {
2659                 case ANDROID_SENSOR_TEST_PATTERN_MODE_OFF:
2660                     msg = "OFF";
2661                     ret = 0;
2662                     break;
2663                 case ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR:
2664                     msg = "SOLID_COLOR";
2665                     ret = 0;
2666                     break;
2667                 case ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS:
2668                     msg = "COLOR_BARS";
2669                     ret = 0;
2670                     break;
2671                 case ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY:
2672                     msg = "COLOR_BARS_FADE_TO_GRAY";
2673                     ret = 0;
2674                     break;
2675                 case ANDROID_SENSOR_TEST_PATTERN_MODE_PN9:
2676                     msg = "PN9";
2677                     ret = 0;
2678                     break;
2679                 case ANDROID_SENSOR_TEST_PATTERN_MODE_BLACK:
2680                     msg = "BLACK";
2681                     ret = 0;
2682                     break;
2683                 case ANDROID_SENSOR_TEST_PATTERN_MODE_CUSTOM1:
2684                     msg = "CUSTOM1";
2685                     ret = 0;
2686                     break;
2687                 default:
2688                     msg = "error: enum value out of range";
2689             }
2690             break;
2691         }
2692         case ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES: {
2693             break;
2694         }
2695         case ANDROID_SENSOR_ROLLING_SHUTTER_SKEW: {
2696             break;
2697         }
2698         case ANDROID_SENSOR_OPTICAL_BLACK_REGIONS: {
2699             break;
2700         }
2701         case ANDROID_SENSOR_DYNAMIC_BLACK_LEVEL: {
2702             break;
2703         }
2704         case ANDROID_SENSOR_DYNAMIC_WHITE_LEVEL: {
2705             break;
2706         }
2707         case ANDROID_SENSOR_OPAQUE_RAW_SIZE: {
2708             break;
2709         }
2710         case ANDROID_SENSOR_OPAQUE_RAW_SIZE_MAXIMUM_RESOLUTION: {
2711             break;
2712         }
2713         case ANDROID_SENSOR_PIXEL_MODE: {
2714             switch (value) {
2715                 case ANDROID_SENSOR_PIXEL_MODE_DEFAULT:
2716                     msg = "DEFAULT";
2717                     ret = 0;
2718                     break;
2719                 case ANDROID_SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION:
2720                     msg = "MAXIMUM_RESOLUTION";
2721                     ret = 0;
2722                     break;
2723                 default:
2724                     msg = "error: enum value out of range";
2725             }
2726             break;
2727         }
2728         case ANDROID_SENSOR_RAW_BINNING_FACTOR_USED: {
2729             switch (value) {
2730                 case ANDROID_SENSOR_RAW_BINNING_FACTOR_USED_TRUE:
2731                     msg = "TRUE";
2732                     ret = 0;
2733                     break;
2734                 case ANDROID_SENSOR_RAW_BINNING_FACTOR_USED_FALSE:
2735                     msg = "FALSE";
2736                     ret = 0;
2737                     break;
2738                 default:
2739                     msg = "error: enum value out of range";
2740             }
2741             break;
2742         }
2743 
2744         case ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE: {
2745             break;
2746         }
2747         case ANDROID_SENSOR_INFO_SENSITIVITY_RANGE: {
2748             break;
2749         }
2750         case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT: {
2751             switch (value) {
2752                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB:
2753                     msg = "RGGB";
2754                     ret = 0;
2755                     break;
2756                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG:
2757                     msg = "GRBG";
2758                     ret = 0;
2759                     break;
2760                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG:
2761                     msg = "GBRG";
2762                     ret = 0;
2763                     break;
2764                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_BGGR:
2765                     msg = "BGGR";
2766                     ret = 0;
2767                     break;
2768                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGB:
2769                     msg = "RGB";
2770                     ret = 0;
2771                     break;
2772                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO:
2773                     msg = "MONO";
2774                     ret = 0;
2775                     break;
2776                 case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR:
2777                     msg = "NIR";
2778                     ret = 0;
2779                     break;
2780                 default:
2781                     msg = "error: enum value out of range";
2782             }
2783             break;
2784         }
2785         case ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE: {
2786             break;
2787         }
2788         case ANDROID_SENSOR_INFO_MAX_FRAME_DURATION: {
2789             break;
2790         }
2791         case ANDROID_SENSOR_INFO_PHYSICAL_SIZE: {
2792             break;
2793         }
2794         case ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE: {
2795             break;
2796         }
2797         case ANDROID_SENSOR_INFO_WHITE_LEVEL: {
2798             break;
2799         }
2800         case ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE: {
2801             switch (value) {
2802                 case ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN:
2803                     msg = "UNKNOWN";
2804                     ret = 0;
2805                     break;
2806                 case ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME:
2807                     msg = "REALTIME";
2808                     ret = 0;
2809                     break;
2810                 default:
2811                     msg = "error: enum value out of range";
2812             }
2813             break;
2814         }
2815         case ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED: {
2816             switch (value) {
2817                 case ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED_FALSE:
2818                     msg = "FALSE";
2819                     ret = 0;
2820                     break;
2821                 case ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED_TRUE:
2822                     msg = "TRUE";
2823                     ret = 0;
2824                     break;
2825                 default:
2826                     msg = "error: enum value out of range";
2827             }
2828             break;
2829         }
2830         case ANDROID_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE: {
2831             break;
2832         }
2833         case ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION: {
2834             break;
2835         }
2836         case ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE_MAXIMUM_RESOLUTION: {
2837             break;
2838         }
2839         case ANDROID_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION: {
2840             break;
2841         }
2842         case ANDROID_SENSOR_INFO_BINNING_FACTOR: {
2843             break;
2844         }
2845 
2846         case ANDROID_SHADING_MODE: {
2847             switch (value) {
2848                 case ANDROID_SHADING_MODE_OFF:
2849                     msg = "OFF";
2850                     ret = 0;
2851                     break;
2852                 case ANDROID_SHADING_MODE_FAST:
2853                     msg = "FAST";
2854                     ret = 0;
2855                     break;
2856                 case ANDROID_SHADING_MODE_HIGH_QUALITY:
2857                     msg = "HIGH_QUALITY";
2858                     ret = 0;
2859                     break;
2860                 default:
2861                     msg = "error: enum value out of range";
2862             }
2863             break;
2864         }
2865         case ANDROID_SHADING_STRENGTH: {
2866             break;
2867         }
2868         case ANDROID_SHADING_AVAILABLE_MODES: {
2869             break;
2870         }
2871 
2872         case ANDROID_STATISTICS_FACE_DETECT_MODE: {
2873             switch (value) {
2874                 case ANDROID_STATISTICS_FACE_DETECT_MODE_OFF:
2875                     msg = "OFF";
2876                     ret = 0;
2877                     break;
2878                 case ANDROID_STATISTICS_FACE_DETECT_MODE_SIMPLE:
2879                     msg = "SIMPLE";
2880                     ret = 0;
2881                     break;
2882                 case ANDROID_STATISTICS_FACE_DETECT_MODE_FULL:
2883                     msg = "FULL";
2884                     ret = 0;
2885                     break;
2886                 default:
2887                     msg = "error: enum value out of range";
2888             }
2889             break;
2890         }
2891         case ANDROID_STATISTICS_HISTOGRAM_MODE: {
2892             switch (value) {
2893                 case ANDROID_STATISTICS_HISTOGRAM_MODE_OFF:
2894                     msg = "OFF";
2895                     ret = 0;
2896                     break;
2897                 case ANDROID_STATISTICS_HISTOGRAM_MODE_ON:
2898                     msg = "ON";
2899                     ret = 0;
2900                     break;
2901                 default:
2902                     msg = "error: enum value out of range";
2903             }
2904             break;
2905         }
2906         case ANDROID_STATISTICS_SHARPNESS_MAP_MODE: {
2907             switch (value) {
2908                 case ANDROID_STATISTICS_SHARPNESS_MAP_MODE_OFF:
2909                     msg = "OFF";
2910                     ret = 0;
2911                     break;
2912                 case ANDROID_STATISTICS_SHARPNESS_MAP_MODE_ON:
2913                     msg = "ON";
2914                     ret = 0;
2915                     break;
2916                 default:
2917                     msg = "error: enum value out of range";
2918             }
2919             break;
2920         }
2921         case ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE: {
2922             switch (value) {
2923                 case ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE_OFF:
2924                     msg = "OFF";
2925                     ret = 0;
2926                     break;
2927                 case ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE_ON:
2928                     msg = "ON";
2929                     ret = 0;
2930                     break;
2931                 default:
2932                     msg = "error: enum value out of range";
2933             }
2934             break;
2935         }
2936         case ANDROID_STATISTICS_FACE_IDS: {
2937             break;
2938         }
2939         case ANDROID_STATISTICS_FACE_LANDMARKS: {
2940             break;
2941         }
2942         case ANDROID_STATISTICS_FACE_RECTANGLES: {
2943             break;
2944         }
2945         case ANDROID_STATISTICS_FACE_SCORES: {
2946             break;
2947         }
2948         case ANDROID_STATISTICS_HISTOGRAM: {
2949             break;
2950         }
2951         case ANDROID_STATISTICS_SHARPNESS_MAP: {
2952             break;
2953         }
2954         case ANDROID_STATISTICS_LENS_SHADING_CORRECTION_MAP: {
2955             break;
2956         }
2957         case ANDROID_STATISTICS_LENS_SHADING_MAP: {
2958             break;
2959         }
2960         case ANDROID_STATISTICS_PREDICTED_COLOR_GAINS: {
2961             break;
2962         }
2963         case ANDROID_STATISTICS_PREDICTED_COLOR_TRANSFORM: {
2964             break;
2965         }
2966         case ANDROID_STATISTICS_SCENE_FLICKER: {
2967             switch (value) {
2968                 case ANDROID_STATISTICS_SCENE_FLICKER_NONE:
2969                     msg = "NONE";
2970                     ret = 0;
2971                     break;
2972                 case ANDROID_STATISTICS_SCENE_FLICKER_50HZ:
2973                     msg = "50HZ";
2974                     ret = 0;
2975                     break;
2976                 case ANDROID_STATISTICS_SCENE_FLICKER_60HZ:
2977                     msg = "60HZ";
2978                     ret = 0;
2979                     break;
2980                 default:
2981                     msg = "error: enum value out of range";
2982             }
2983             break;
2984         }
2985         case ANDROID_STATISTICS_HOT_PIXEL_MAP: {
2986             break;
2987         }
2988         case ANDROID_STATISTICS_LENS_SHADING_MAP_MODE: {
2989             switch (value) {
2990                 case ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF:
2991                     msg = "OFF";
2992                     ret = 0;
2993                     break;
2994                 case ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_ON:
2995                     msg = "ON";
2996                     ret = 0;
2997                     break;
2998                 default:
2999                     msg = "error: enum value out of range";
3000             }
3001             break;
3002         }
3003         case ANDROID_STATISTICS_OIS_DATA_MODE: {
3004             switch (value) {
3005                 case ANDROID_STATISTICS_OIS_DATA_MODE_OFF:
3006                     msg = "OFF";
3007                     ret = 0;
3008                     break;
3009                 case ANDROID_STATISTICS_OIS_DATA_MODE_ON:
3010                     msg = "ON";
3011                     ret = 0;
3012                     break;
3013                 default:
3014                     msg = "error: enum value out of range";
3015             }
3016             break;
3017         }
3018         case ANDROID_STATISTICS_OIS_TIMESTAMPS: {
3019             break;
3020         }
3021         case ANDROID_STATISTICS_OIS_X_SHIFTS: {
3022             break;
3023         }
3024         case ANDROID_STATISTICS_OIS_Y_SHIFTS: {
3025             break;
3026         }
3027 
3028         case ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES: {
3029             break;
3030         }
3031         case ANDROID_STATISTICS_INFO_HISTOGRAM_BUCKET_COUNT: {
3032             break;
3033         }
3034         case ANDROID_STATISTICS_INFO_MAX_FACE_COUNT: {
3035             break;
3036         }
3037         case ANDROID_STATISTICS_INFO_MAX_HISTOGRAM_COUNT: {
3038             break;
3039         }
3040         case ANDROID_STATISTICS_INFO_MAX_SHARPNESS_MAP_VALUE: {
3041             break;
3042         }
3043         case ANDROID_STATISTICS_INFO_SHARPNESS_MAP_SIZE: {
3044             break;
3045         }
3046         case ANDROID_STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES: {
3047             break;
3048         }
3049         case ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES: {
3050             break;
3051         }
3052         case ANDROID_STATISTICS_INFO_AVAILABLE_OIS_DATA_MODES: {
3053             break;
3054         }
3055 
3056         case ANDROID_TONEMAP_CURVE_BLUE: {
3057             break;
3058         }
3059         case ANDROID_TONEMAP_CURVE_GREEN: {
3060             break;
3061         }
3062         case ANDROID_TONEMAP_CURVE_RED: {
3063             break;
3064         }
3065         case ANDROID_TONEMAP_MODE: {
3066             switch (value) {
3067                 case ANDROID_TONEMAP_MODE_CONTRAST_CURVE:
3068                     msg = "CONTRAST_CURVE";
3069                     ret = 0;
3070                     break;
3071                 case ANDROID_TONEMAP_MODE_FAST:
3072                     msg = "FAST";
3073                     ret = 0;
3074                     break;
3075                 case ANDROID_TONEMAP_MODE_HIGH_QUALITY:
3076                     msg = "HIGH_QUALITY";
3077                     ret = 0;
3078                     break;
3079                 case ANDROID_TONEMAP_MODE_GAMMA_VALUE:
3080                     msg = "GAMMA_VALUE";
3081                     ret = 0;
3082                     break;
3083                 case ANDROID_TONEMAP_MODE_PRESET_CURVE:
3084                     msg = "PRESET_CURVE";
3085                     ret = 0;
3086                     break;
3087                 default:
3088                     msg = "error: enum value out of range";
3089             }
3090             break;
3091         }
3092         case ANDROID_TONEMAP_MAX_CURVE_POINTS: {
3093             break;
3094         }
3095         case ANDROID_TONEMAP_AVAILABLE_TONE_MAP_MODES: {
3096             break;
3097         }
3098         case ANDROID_TONEMAP_GAMMA: {
3099             break;
3100         }
3101         case ANDROID_TONEMAP_PRESET_CURVE: {
3102             switch (value) {
3103                 case ANDROID_TONEMAP_PRESET_CURVE_SRGB:
3104                     msg = "SRGB";
3105                     ret = 0;
3106                     break;
3107                 case ANDROID_TONEMAP_PRESET_CURVE_REC709:
3108                     msg = "REC709";
3109                     ret = 0;
3110                     break;
3111                 default:
3112                     msg = "error: enum value out of range";
3113             }
3114             break;
3115         }
3116 
3117         case ANDROID_LED_TRANSMIT: {
3118             switch (value) {
3119                 case ANDROID_LED_TRANSMIT_OFF:
3120                     msg = "OFF";
3121                     ret = 0;
3122                     break;
3123                 case ANDROID_LED_TRANSMIT_ON:
3124                     msg = "ON";
3125                     ret = 0;
3126                     break;
3127                 default:
3128                     msg = "error: enum value out of range";
3129             }
3130             break;
3131         }
3132         case ANDROID_LED_AVAILABLE_LEDS: {
3133             switch (value) {
3134                 case ANDROID_LED_AVAILABLE_LEDS_TRANSMIT:
3135                     msg = "TRANSMIT";
3136                     ret = 0;
3137                     break;
3138                 default:
3139                     msg = "error: enum value out of range";
3140             }
3141             break;
3142         }
3143 
3144         case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL: {
3145             switch (value) {
3146                 case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED:
3147                     msg = "LIMITED";
3148                     ret = 0;
3149                     break;
3150                 case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_FULL:
3151                     msg = "FULL";
3152                     ret = 0;
3153                     break;
3154                 case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY:
3155                     msg = "LEGACY";
3156                     ret = 0;
3157                     break;
3158                 case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_3:
3159                     msg = "3";
3160                     ret = 0;
3161                     break;
3162                 case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL:
3163                     msg = "EXTERNAL";
3164                     ret = 0;
3165                     break;
3166                 default:
3167                     msg = "error: enum value out of range";
3168             }
3169             break;
3170         }
3171         case ANDROID_INFO_VERSION: {
3172             break;
3173         }
3174         case ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION: {
3175             switch (value) {
3176                 case ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION_HIDL_DEVICE_3_5:
3177                     msg = "HIDL_DEVICE_3_5";
3178                     ret = 0;
3179                     break;
3180                 default:
3181                     msg = "error: enum value out of range";
3182             }
3183             break;
3184         }
3185 
3186         case ANDROID_BLACK_LEVEL_LOCK: {
3187             switch (value) {
3188                 case ANDROID_BLACK_LEVEL_LOCK_OFF:
3189                     msg = "OFF";
3190                     ret = 0;
3191                     break;
3192                 case ANDROID_BLACK_LEVEL_LOCK_ON:
3193                     msg = "ON";
3194                     ret = 0;
3195                     break;
3196                 default:
3197                     msg = "error: enum value out of range";
3198             }
3199             break;
3200         }
3201 
3202         case ANDROID_SYNC_FRAME_NUMBER: {
3203             switch (value) {
3204                 case ANDROID_SYNC_FRAME_NUMBER_CONVERGING:
3205                     msg = "CONVERGING";
3206                     ret = 0;
3207                     break;
3208                 case ANDROID_SYNC_FRAME_NUMBER_UNKNOWN:
3209                     msg = "UNKNOWN";
3210                     ret = 0;
3211                     break;
3212                 default:
3213                     msg = "error: enum value out of range";
3214             }
3215             break;
3216         }
3217         case ANDROID_SYNC_MAX_LATENCY: {
3218             switch (value) {
3219                 case ANDROID_SYNC_MAX_LATENCY_PER_FRAME_CONTROL:
3220                     msg = "PER_FRAME_CONTROL";
3221                     ret = 0;
3222                     break;
3223                 case ANDROID_SYNC_MAX_LATENCY_UNKNOWN:
3224                     msg = "UNKNOWN";
3225                     ret = 0;
3226                     break;
3227                 default:
3228                     msg = "error: enum value out of range";
3229             }
3230             break;
3231         }
3232 
3233         case ANDROID_REPROCESS_EFFECTIVE_EXPOSURE_FACTOR: {
3234             break;
3235         }
3236         case ANDROID_REPROCESS_MAX_CAPTURE_STALL: {
3237             break;
3238         }
3239 
3240         case ANDROID_DEPTH_MAX_DEPTH_SAMPLES: {
3241             break;
3242         }
3243         case ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS: {
3244             switch (value) {
3245                 case ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_OUTPUT:
3246                     msg = "OUTPUT";
3247                     ret = 0;
3248                     break;
3249                 case ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_INPUT:
3250                     msg = "INPUT";
3251                     ret = 0;
3252                     break;
3253                 default:
3254                     msg = "error: enum value out of range";
3255             }
3256             break;
3257         }
3258         case ANDROID_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS: {
3259             break;
3260         }
3261         case ANDROID_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS: {
3262             break;
3263         }
3264         case ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE: {
3265             switch (value) {
3266                 case ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE_FALSE:
3267                     msg = "FALSE";
3268                     ret = 0;
3269                     break;
3270                 case ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE_TRUE:
3271                     msg = "TRUE";
3272                     ret = 0;
3273                     break;
3274                 default:
3275                     msg = "error: enum value out of range";
3276             }
3277             break;
3278         }
3279         case ANDROID_DEPTH_AVAILABLE_RECOMMENDED_DEPTH_STREAM_CONFIGURATIONS: {
3280             break;
3281         }
3282         case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS: {
3283             switch (value) {
3284                 case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_OUTPUT:
3285                     msg = "OUTPUT";
3286                     ret = 0;
3287                     break;
3288                 case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_INPUT:
3289                     msg = "INPUT";
3290                     ret = 0;
3291                     break;
3292                 default:
3293                     msg = "error: enum value out of range";
3294             }
3295             break;
3296         }
3297         case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS: {
3298             break;
3299         }
3300         case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS: {
3301             break;
3302         }
3303         case ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION: {
3304             switch (value) {
3305                 case ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_OUTPUT:
3306                     msg = "OUTPUT";
3307                     ret = 0;
3308                     break;
3309                 case ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT:
3310                     msg = "INPUT";
3311                     ret = 0;
3312                     break;
3313                 default:
3314                     msg = "error: enum value out of range";
3315             }
3316             break;
3317         }
3318         case ANDROID_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION: {
3319             break;
3320         }
3321         case ANDROID_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS_MAXIMUM_RESOLUTION: {
3322             break;
3323         }
3324         case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION: {
3325             switch (value) {
3326                 case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_OUTPUT:
3327                     msg = "OUTPUT";
3328                     ret = 0;
3329                     break;
3330                 case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT:
3331                     msg = "INPUT";
3332                     ret = 0;
3333                     break;
3334                 default:
3335                     msg = "error: enum value out of range";
3336             }
3337             break;
3338         }
3339         case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION: {
3340             break;
3341         }
3342         case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS_MAXIMUM_RESOLUTION: {
3343             break;
3344         }
3345 
3346         case ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS: {
3347             break;
3348         }
3349         case ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE: {
3350             switch (value) {
3351                 case ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE:
3352                     msg = "APPROXIMATE";
3353                     ret = 0;
3354                     break;
3355                 case ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED:
3356                     msg = "CALIBRATED";
3357                     ret = 0;
3358                     break;
3359                 default:
3360                     msg = "error: enum value out of range";
3361             }
3362             break;
3363         }
3364         case ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID: {
3365             break;
3366         }
3367 
3368         case ANDROID_DISTORTION_CORRECTION_MODE: {
3369             switch (value) {
3370                 case ANDROID_DISTORTION_CORRECTION_MODE_OFF:
3371                     msg = "OFF";
3372                     ret = 0;
3373                     break;
3374                 case ANDROID_DISTORTION_CORRECTION_MODE_FAST:
3375                     msg = "FAST";
3376                     ret = 0;
3377                     break;
3378                 case ANDROID_DISTORTION_CORRECTION_MODE_HIGH_QUALITY:
3379                     msg = "HIGH_QUALITY";
3380                     ret = 0;
3381                     break;
3382                 default:
3383                     msg = "error: enum value out of range";
3384             }
3385             break;
3386         }
3387         case ANDROID_DISTORTION_CORRECTION_AVAILABLE_MODES: {
3388             break;
3389         }
3390 
3391         case ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS: {
3392             switch (value) {
3393                 case ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_OUTPUT:
3394                     msg = "OUTPUT";
3395                     ret = 0;
3396                     break;
3397                 case ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_INPUT:
3398                     msg = "INPUT";
3399                     ret = 0;
3400                     break;
3401                 default:
3402                     msg = "error: enum value out of range";
3403             }
3404             break;
3405         }
3406         case ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS: {
3407             break;
3408         }
3409         case ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS: {
3410             break;
3411         }
3412         case ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION: {
3413             switch (value) {
3414                 case ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_OUTPUT:
3415                     msg = "OUTPUT";
3416                     ret = 0;
3417                     break;
3418                 case ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT:
3419                     msg = "INPUT";
3420                     ret = 0;
3421                     break;
3422                 default:
3423                     msg = "error: enum value out of range";
3424             }
3425             break;
3426         }
3427         case ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION: {
3428             break;
3429         }
3430         case ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS_MAXIMUM_RESOLUTION: {
3431             break;
3432         }
3433 
3434         case ANDROID_HEIC_INFO_SUPPORTED: {
3435             switch (value) {
3436                 case ANDROID_HEIC_INFO_SUPPORTED_FALSE:
3437                     msg = "FALSE";
3438                     ret = 0;
3439                     break;
3440                 case ANDROID_HEIC_INFO_SUPPORTED_TRUE:
3441                     msg = "TRUE";
3442                     ret = 0;
3443                     break;
3444                 default:
3445                     msg = "error: enum value out of range";
3446             }
3447             break;
3448         }
3449         case ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT: {
3450             break;
3451         }
3452 
3453     }
3454 
3455     strncpy(dst, msg, size - 1);
3456     dst[size - 1] = '\0';
3457 
3458     return ret;
3459 }
3460 
camera_metadata_enum_value(uint32_t tag,const char * name,size_t size,uint32_t * value)3461 int camera_metadata_enum_value(uint32_t tag,
3462                                  const char *name,
3463                                  size_t size,
3464                                  uint32_t *value) {
3465     if ((name == NULL) || (value == NULL)) {
3466         return -1;
3467     }
3468 
3469     const char *enumName = NULL;
3470     int ret = -1;
3471 
3472     switch(tag) {
3473         case ANDROID_COLOR_CORRECTION_MODE: {
3474                 enumName = "TRANSFORM_MATRIX";
3475                 if (strncmp(name, enumName, size) == 0) {
3476                     *value = ANDROID_COLOR_CORRECTION_MODE_TRANSFORM_MATRIX;
3477                     ret = 0;
3478                     break;
3479                 }
3480                 enumName = "FAST";
3481                 if (strncmp(name, enumName, size) == 0) {
3482                     *value = ANDROID_COLOR_CORRECTION_MODE_FAST;
3483                     ret = 0;
3484                     break;
3485                 }
3486                 enumName = "HIGH_QUALITY";
3487                 if (strncmp(name, enumName, size) == 0) {
3488                     *value = ANDROID_COLOR_CORRECTION_MODE_HIGH_QUALITY;
3489                     ret = 0;
3490                     break;
3491                 }
3492             break;
3493         }
3494         case ANDROID_COLOR_CORRECTION_TRANSFORM: {
3495             break;
3496         }
3497         case ANDROID_COLOR_CORRECTION_GAINS: {
3498             break;
3499         }
3500         case ANDROID_COLOR_CORRECTION_ABERRATION_MODE: {
3501                 enumName = "OFF";
3502                 if (strncmp(name, enumName, size) == 0) {
3503                     *value = ANDROID_COLOR_CORRECTION_ABERRATION_MODE_OFF;
3504                     ret = 0;
3505                     break;
3506                 }
3507                 enumName = "FAST";
3508                 if (strncmp(name, enumName, size) == 0) {
3509                     *value = ANDROID_COLOR_CORRECTION_ABERRATION_MODE_FAST;
3510                     ret = 0;
3511                     break;
3512                 }
3513                 enumName = "HIGH_QUALITY";
3514                 if (strncmp(name, enumName, size) == 0) {
3515                     *value = ANDROID_COLOR_CORRECTION_ABERRATION_MODE_HIGH_QUALITY;
3516                     ret = 0;
3517                     break;
3518                 }
3519             break;
3520         }
3521         case ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES: {
3522             break;
3523         }
3524 
3525         case ANDROID_CONTROL_AE_ANTIBANDING_MODE: {
3526                 enumName = "OFF";
3527                 if (strncmp(name, enumName, size) == 0) {
3528                     *value = ANDROID_CONTROL_AE_ANTIBANDING_MODE_OFF;
3529                     ret = 0;
3530                     break;
3531                 }
3532                 enumName = "50HZ";
3533                 if (strncmp(name, enumName, size) == 0) {
3534                     *value = ANDROID_CONTROL_AE_ANTIBANDING_MODE_50HZ;
3535                     ret = 0;
3536                     break;
3537                 }
3538                 enumName = "60HZ";
3539                 if (strncmp(name, enumName, size) == 0) {
3540                     *value = ANDROID_CONTROL_AE_ANTIBANDING_MODE_60HZ;
3541                     ret = 0;
3542                     break;
3543                 }
3544                 enumName = "AUTO";
3545                 if (strncmp(name, enumName, size) == 0) {
3546                     *value = ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO;
3547                     ret = 0;
3548                     break;
3549                 }
3550             break;
3551         }
3552         case ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION: {
3553             break;
3554         }
3555         case ANDROID_CONTROL_AE_LOCK: {
3556                 enumName = "OFF";
3557                 if (strncmp(name, enumName, size) == 0) {
3558                     *value = ANDROID_CONTROL_AE_LOCK_OFF;
3559                     ret = 0;
3560                     break;
3561                 }
3562                 enumName = "ON";
3563                 if (strncmp(name, enumName, size) == 0) {
3564                     *value = ANDROID_CONTROL_AE_LOCK_ON;
3565                     ret = 0;
3566                     break;
3567                 }
3568             break;
3569         }
3570         case ANDROID_CONTROL_AE_MODE: {
3571                 enumName = "OFF";
3572                 if (strncmp(name, enumName, size) == 0) {
3573                     *value = ANDROID_CONTROL_AE_MODE_OFF;
3574                     ret = 0;
3575                     break;
3576                 }
3577                 enumName = "ON";
3578                 if (strncmp(name, enumName, size) == 0) {
3579                     *value = ANDROID_CONTROL_AE_MODE_ON;
3580                     ret = 0;
3581                     break;
3582                 }
3583                 enumName = "ON_AUTO_FLASH";
3584                 if (strncmp(name, enumName, size) == 0) {
3585                     *value = ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH;
3586                     ret = 0;
3587                     break;
3588                 }
3589                 enumName = "ON_ALWAYS_FLASH";
3590                 if (strncmp(name, enumName, size) == 0) {
3591                     *value = ANDROID_CONTROL_AE_MODE_ON_ALWAYS_FLASH;
3592                     ret = 0;
3593                     break;
3594                 }
3595                 enumName = "ON_AUTO_FLASH_REDEYE";
3596                 if (strncmp(name, enumName, size) == 0) {
3597                     *value = ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE;
3598                     ret = 0;
3599                     break;
3600                 }
3601                 enumName = "ON_EXTERNAL_FLASH";
3602                 if (strncmp(name, enumName, size) == 0) {
3603                     *value = ANDROID_CONTROL_AE_MODE_ON_EXTERNAL_FLASH;
3604                     ret = 0;
3605                     break;
3606                 }
3607             break;
3608         }
3609         case ANDROID_CONTROL_AE_REGIONS: {
3610             break;
3611         }
3612         case ANDROID_CONTROL_AE_TARGET_FPS_RANGE: {
3613             break;
3614         }
3615         case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER: {
3616                 enumName = "IDLE";
3617                 if (strncmp(name, enumName, size) == 0) {
3618                     *value = ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE;
3619                     ret = 0;
3620                     break;
3621                 }
3622                 enumName = "START";
3623                 if (strncmp(name, enumName, size) == 0) {
3624                     *value = ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_START;
3625                     ret = 0;
3626                     break;
3627                 }
3628                 enumName = "CANCEL";
3629                 if (strncmp(name, enumName, size) == 0) {
3630                     *value = ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL;
3631                     ret = 0;
3632                     break;
3633                 }
3634             break;
3635         }
3636         case ANDROID_CONTROL_AF_MODE: {
3637                 enumName = "OFF";
3638                 if (strncmp(name, enumName, size) == 0) {
3639                     *value = ANDROID_CONTROL_AF_MODE_OFF;
3640                     ret = 0;
3641                     break;
3642                 }
3643                 enumName = "AUTO";
3644                 if (strncmp(name, enumName, size) == 0) {
3645                     *value = ANDROID_CONTROL_AF_MODE_AUTO;
3646                     ret = 0;
3647                     break;
3648                 }
3649                 enumName = "MACRO";
3650                 if (strncmp(name, enumName, size) == 0) {
3651                     *value = ANDROID_CONTROL_AF_MODE_MACRO;
3652                     ret = 0;
3653                     break;
3654                 }
3655                 enumName = "CONTINUOUS_VIDEO";
3656                 if (strncmp(name, enumName, size) == 0) {
3657                     *value = ANDROID_CONTROL_AF_MODE_CONTINUOUS_VIDEO;
3658                     ret = 0;
3659                     break;
3660                 }
3661                 enumName = "CONTINUOUS_PICTURE";
3662                 if (strncmp(name, enumName, size) == 0) {
3663                     *value = ANDROID_CONTROL_AF_MODE_CONTINUOUS_PICTURE;
3664                     ret = 0;
3665                     break;
3666                 }
3667                 enumName = "EDOF";
3668                 if (strncmp(name, enumName, size) == 0) {
3669                     *value = ANDROID_CONTROL_AF_MODE_EDOF;
3670                     ret = 0;
3671                     break;
3672                 }
3673             break;
3674         }
3675         case ANDROID_CONTROL_AF_REGIONS: {
3676             break;
3677         }
3678         case ANDROID_CONTROL_AF_TRIGGER: {
3679                 enumName = "IDLE";
3680                 if (strncmp(name, enumName, size) == 0) {
3681                     *value = ANDROID_CONTROL_AF_TRIGGER_IDLE;
3682                     ret = 0;
3683                     break;
3684                 }
3685                 enumName = "START";
3686                 if (strncmp(name, enumName, size) == 0) {
3687                     *value = ANDROID_CONTROL_AF_TRIGGER_START;
3688                     ret = 0;
3689                     break;
3690                 }
3691                 enumName = "CANCEL";
3692                 if (strncmp(name, enumName, size) == 0) {
3693                     *value = ANDROID_CONTROL_AF_TRIGGER_CANCEL;
3694                     ret = 0;
3695                     break;
3696                 }
3697             break;
3698         }
3699         case ANDROID_CONTROL_AWB_LOCK: {
3700                 enumName = "OFF";
3701                 if (strncmp(name, enumName, size) == 0) {
3702                     *value = ANDROID_CONTROL_AWB_LOCK_OFF;
3703                     ret = 0;
3704                     break;
3705                 }
3706                 enumName = "ON";
3707                 if (strncmp(name, enumName, size) == 0) {
3708                     *value = ANDROID_CONTROL_AWB_LOCK_ON;
3709                     ret = 0;
3710                     break;
3711                 }
3712             break;
3713         }
3714         case ANDROID_CONTROL_AWB_MODE: {
3715                 enumName = "OFF";
3716                 if (strncmp(name, enumName, size) == 0) {
3717                     *value = ANDROID_CONTROL_AWB_MODE_OFF;
3718                     ret = 0;
3719                     break;
3720                 }
3721                 enumName = "AUTO";
3722                 if (strncmp(name, enumName, size) == 0) {
3723                     *value = ANDROID_CONTROL_AWB_MODE_AUTO;
3724                     ret = 0;
3725                     break;
3726                 }
3727                 enumName = "INCANDESCENT";
3728                 if (strncmp(name, enumName, size) == 0) {
3729                     *value = ANDROID_CONTROL_AWB_MODE_INCANDESCENT;
3730                     ret = 0;
3731                     break;
3732                 }
3733                 enumName = "FLUORESCENT";
3734                 if (strncmp(name, enumName, size) == 0) {
3735                     *value = ANDROID_CONTROL_AWB_MODE_FLUORESCENT;
3736                     ret = 0;
3737                     break;
3738                 }
3739                 enumName = "WARM_FLUORESCENT";
3740                 if (strncmp(name, enumName, size) == 0) {
3741                     *value = ANDROID_CONTROL_AWB_MODE_WARM_FLUORESCENT;
3742                     ret = 0;
3743                     break;
3744                 }
3745                 enumName = "DAYLIGHT";
3746                 if (strncmp(name, enumName, size) == 0) {
3747                     *value = ANDROID_CONTROL_AWB_MODE_DAYLIGHT;
3748                     ret = 0;
3749                     break;
3750                 }
3751                 enumName = "CLOUDY_DAYLIGHT";
3752                 if (strncmp(name, enumName, size) == 0) {
3753                     *value = ANDROID_CONTROL_AWB_MODE_CLOUDY_DAYLIGHT;
3754                     ret = 0;
3755                     break;
3756                 }
3757                 enumName = "TWILIGHT";
3758                 if (strncmp(name, enumName, size) == 0) {
3759                     *value = ANDROID_CONTROL_AWB_MODE_TWILIGHT;
3760                     ret = 0;
3761                     break;
3762                 }
3763                 enumName = "SHADE";
3764                 if (strncmp(name, enumName, size) == 0) {
3765                     *value = ANDROID_CONTROL_AWB_MODE_SHADE;
3766                     ret = 0;
3767                     break;
3768                 }
3769             break;
3770         }
3771         case ANDROID_CONTROL_AWB_REGIONS: {
3772             break;
3773         }
3774         case ANDROID_CONTROL_CAPTURE_INTENT: {
3775                 enumName = "CUSTOM";
3776                 if (strncmp(name, enumName, size) == 0) {
3777                     *value = ANDROID_CONTROL_CAPTURE_INTENT_CUSTOM;
3778                     ret = 0;
3779                     break;
3780                 }
3781                 enumName = "PREVIEW";
3782                 if (strncmp(name, enumName, size) == 0) {
3783                     *value = ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW;
3784                     ret = 0;
3785                     break;
3786                 }
3787                 enumName = "STILL_CAPTURE";
3788                 if (strncmp(name, enumName, size) == 0) {
3789                     *value = ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE;
3790                     ret = 0;
3791                     break;
3792                 }
3793                 enumName = "VIDEO_RECORD";
3794                 if (strncmp(name, enumName, size) == 0) {
3795                     *value = ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_RECORD;
3796                     ret = 0;
3797                     break;
3798                 }
3799                 enumName = "VIDEO_SNAPSHOT";
3800                 if (strncmp(name, enumName, size) == 0) {
3801                     *value = ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT;
3802                     ret = 0;
3803                     break;
3804                 }
3805                 enumName = "ZERO_SHUTTER_LAG";
3806                 if (strncmp(name, enumName, size) == 0) {
3807                     *value = ANDROID_CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG;
3808                     ret = 0;
3809                     break;
3810                 }
3811                 enumName = "MANUAL";
3812                 if (strncmp(name, enumName, size) == 0) {
3813                     *value = ANDROID_CONTROL_CAPTURE_INTENT_MANUAL;
3814                     ret = 0;
3815                     break;
3816                 }
3817                 enumName = "MOTION_TRACKING";
3818                 if (strncmp(name, enumName, size) == 0) {
3819                     *value = ANDROID_CONTROL_CAPTURE_INTENT_MOTION_TRACKING;
3820                     ret = 0;
3821                     break;
3822                 }
3823             break;
3824         }
3825         case ANDROID_CONTROL_EFFECT_MODE: {
3826                 enumName = "OFF";
3827                 if (strncmp(name, enumName, size) == 0) {
3828                     *value = ANDROID_CONTROL_EFFECT_MODE_OFF;
3829                     ret = 0;
3830                     break;
3831                 }
3832                 enumName = "MONO";
3833                 if (strncmp(name, enumName, size) == 0) {
3834                     *value = ANDROID_CONTROL_EFFECT_MODE_MONO;
3835                     ret = 0;
3836                     break;
3837                 }
3838                 enumName = "NEGATIVE";
3839                 if (strncmp(name, enumName, size) == 0) {
3840                     *value = ANDROID_CONTROL_EFFECT_MODE_NEGATIVE;
3841                     ret = 0;
3842                     break;
3843                 }
3844                 enumName = "SOLARIZE";
3845                 if (strncmp(name, enumName, size) == 0) {
3846                     *value = ANDROID_CONTROL_EFFECT_MODE_SOLARIZE;
3847                     ret = 0;
3848                     break;
3849                 }
3850                 enumName = "SEPIA";
3851                 if (strncmp(name, enumName, size) == 0) {
3852                     *value = ANDROID_CONTROL_EFFECT_MODE_SEPIA;
3853                     ret = 0;
3854                     break;
3855                 }
3856                 enumName = "POSTERIZE";
3857                 if (strncmp(name, enumName, size) == 0) {
3858                     *value = ANDROID_CONTROL_EFFECT_MODE_POSTERIZE;
3859                     ret = 0;
3860                     break;
3861                 }
3862                 enumName = "WHITEBOARD";
3863                 if (strncmp(name, enumName, size) == 0) {
3864                     *value = ANDROID_CONTROL_EFFECT_MODE_WHITEBOARD;
3865                     ret = 0;
3866                     break;
3867                 }
3868                 enumName = "BLACKBOARD";
3869                 if (strncmp(name, enumName, size) == 0) {
3870                     *value = ANDROID_CONTROL_EFFECT_MODE_BLACKBOARD;
3871                     ret = 0;
3872                     break;
3873                 }
3874                 enumName = "AQUA";
3875                 if (strncmp(name, enumName, size) == 0) {
3876                     *value = ANDROID_CONTROL_EFFECT_MODE_AQUA;
3877                     ret = 0;
3878                     break;
3879                 }
3880             break;
3881         }
3882         case ANDROID_CONTROL_MODE: {
3883                 enumName = "OFF";
3884                 if (strncmp(name, enumName, size) == 0) {
3885                     *value = ANDROID_CONTROL_MODE_OFF;
3886                     ret = 0;
3887                     break;
3888                 }
3889                 enumName = "AUTO";
3890                 if (strncmp(name, enumName, size) == 0) {
3891                     *value = ANDROID_CONTROL_MODE_AUTO;
3892                     ret = 0;
3893                     break;
3894                 }
3895                 enumName = "USE_SCENE_MODE";
3896                 if (strncmp(name, enumName, size) == 0) {
3897                     *value = ANDROID_CONTROL_MODE_USE_SCENE_MODE;
3898                     ret = 0;
3899                     break;
3900                 }
3901                 enumName = "OFF_KEEP_STATE";
3902                 if (strncmp(name, enumName, size) == 0) {
3903                     *value = ANDROID_CONTROL_MODE_OFF_KEEP_STATE;
3904                     ret = 0;
3905                     break;
3906                 }
3907                 enumName = "USE_EXTENDED_SCENE_MODE";
3908                 if (strncmp(name, enumName, size) == 0) {
3909                     *value = ANDROID_CONTROL_MODE_USE_EXTENDED_SCENE_MODE;
3910                     ret = 0;
3911                     break;
3912                 }
3913             break;
3914         }
3915         case ANDROID_CONTROL_SCENE_MODE: {
3916                 enumName = "DISABLED";
3917                 if (strncmp(name, enumName, size) == 0) {
3918                     *value = ANDROID_CONTROL_SCENE_MODE_DISABLED;
3919                     ret = 0;
3920                     break;
3921                 }
3922                 enumName = "FACE_PRIORITY";
3923                 if (strncmp(name, enumName, size) == 0) {
3924                     *value = ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY;
3925                     ret = 0;
3926                     break;
3927                 }
3928                 enumName = "ACTION";
3929                 if (strncmp(name, enumName, size) == 0) {
3930                     *value = ANDROID_CONTROL_SCENE_MODE_ACTION;
3931                     ret = 0;
3932                     break;
3933                 }
3934                 enumName = "PORTRAIT";
3935                 if (strncmp(name, enumName, size) == 0) {
3936                     *value = ANDROID_CONTROL_SCENE_MODE_PORTRAIT;
3937                     ret = 0;
3938                     break;
3939                 }
3940                 enumName = "LANDSCAPE";
3941                 if (strncmp(name, enumName, size) == 0) {
3942                     *value = ANDROID_CONTROL_SCENE_MODE_LANDSCAPE;
3943                     ret = 0;
3944                     break;
3945                 }
3946                 enumName = "NIGHT";
3947                 if (strncmp(name, enumName, size) == 0) {
3948                     *value = ANDROID_CONTROL_SCENE_MODE_NIGHT;
3949                     ret = 0;
3950                     break;
3951                 }
3952                 enumName = "NIGHT_PORTRAIT";
3953                 if (strncmp(name, enumName, size) == 0) {
3954                     *value = ANDROID_CONTROL_SCENE_MODE_NIGHT_PORTRAIT;
3955                     ret = 0;
3956                     break;
3957                 }
3958                 enumName = "THEATRE";
3959                 if (strncmp(name, enumName, size) == 0) {
3960                     *value = ANDROID_CONTROL_SCENE_MODE_THEATRE;
3961                     ret = 0;
3962                     break;
3963                 }
3964                 enumName = "BEACH";
3965                 if (strncmp(name, enumName, size) == 0) {
3966                     *value = ANDROID_CONTROL_SCENE_MODE_BEACH;
3967                     ret = 0;
3968                     break;
3969                 }
3970                 enumName = "SNOW";
3971                 if (strncmp(name, enumName, size) == 0) {
3972                     *value = ANDROID_CONTROL_SCENE_MODE_SNOW;
3973                     ret = 0;
3974                     break;
3975                 }
3976                 enumName = "SUNSET";
3977                 if (strncmp(name, enumName, size) == 0) {
3978                     *value = ANDROID_CONTROL_SCENE_MODE_SUNSET;
3979                     ret = 0;
3980                     break;
3981                 }
3982                 enumName = "STEADYPHOTO";
3983                 if (strncmp(name, enumName, size) == 0) {
3984                     *value = ANDROID_CONTROL_SCENE_MODE_STEADYPHOTO;
3985                     ret = 0;
3986                     break;
3987                 }
3988                 enumName = "FIREWORKS";
3989                 if (strncmp(name, enumName, size) == 0) {
3990                     *value = ANDROID_CONTROL_SCENE_MODE_FIREWORKS;
3991                     ret = 0;
3992                     break;
3993                 }
3994                 enumName = "SPORTS";
3995                 if (strncmp(name, enumName, size) == 0) {
3996                     *value = ANDROID_CONTROL_SCENE_MODE_SPORTS;
3997                     ret = 0;
3998                     break;
3999                 }
4000                 enumName = "PARTY";
4001                 if (strncmp(name, enumName, size) == 0) {
4002                     *value = ANDROID_CONTROL_SCENE_MODE_PARTY;
4003                     ret = 0;
4004                     break;
4005                 }
4006                 enumName = "CANDLELIGHT";
4007                 if (strncmp(name, enumName, size) == 0) {
4008                     *value = ANDROID_CONTROL_SCENE_MODE_CANDLELIGHT;
4009                     ret = 0;
4010                     break;
4011                 }
4012                 enumName = "BARCODE";
4013                 if (strncmp(name, enumName, size) == 0) {
4014                     *value = ANDROID_CONTROL_SCENE_MODE_BARCODE;
4015                     ret = 0;
4016                     break;
4017                 }
4018                 enumName = "HIGH_SPEED_VIDEO";
4019                 if (strncmp(name, enumName, size) == 0) {
4020                     *value = ANDROID_CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO;
4021                     ret = 0;
4022                     break;
4023                 }
4024                 enumName = "HDR";
4025                 if (strncmp(name, enumName, size) == 0) {
4026                     *value = ANDROID_CONTROL_SCENE_MODE_HDR;
4027                     ret = 0;
4028                     break;
4029                 }
4030                 enumName = "FACE_PRIORITY_LOW_LIGHT";
4031                 if (strncmp(name, enumName, size) == 0) {
4032                     *value = ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY_LOW_LIGHT;
4033                     ret = 0;
4034                     break;
4035                 }
4036                 enumName = "DEVICE_CUSTOM_START";
4037                 if (strncmp(name, enumName, size) == 0) {
4038                     *value = ANDROID_CONTROL_SCENE_MODE_DEVICE_CUSTOM_START;
4039                     ret = 0;
4040                     break;
4041                 }
4042                 enumName = "DEVICE_CUSTOM_END";
4043                 if (strncmp(name, enumName, size) == 0) {
4044                     *value = ANDROID_CONTROL_SCENE_MODE_DEVICE_CUSTOM_END;
4045                     ret = 0;
4046                     break;
4047                 }
4048             break;
4049         }
4050         case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE: {
4051                 enumName = "OFF";
4052                 if (strncmp(name, enumName, size) == 0) {
4053                     *value = ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_OFF;
4054                     ret = 0;
4055                     break;
4056                 }
4057                 enumName = "ON";
4058                 if (strncmp(name, enumName, size) == 0) {
4059                     *value = ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_ON;
4060                     ret = 0;
4061                     break;
4062                 }
4063             break;
4064         }
4065         case ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES: {
4066             break;
4067         }
4068         case ANDROID_CONTROL_AE_AVAILABLE_MODES: {
4069             break;
4070         }
4071         case ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES: {
4072             break;
4073         }
4074         case ANDROID_CONTROL_AE_COMPENSATION_RANGE: {
4075             break;
4076         }
4077         case ANDROID_CONTROL_AE_COMPENSATION_STEP: {
4078             break;
4079         }
4080         case ANDROID_CONTROL_AF_AVAILABLE_MODES: {
4081             break;
4082         }
4083         case ANDROID_CONTROL_AVAILABLE_EFFECTS: {
4084             break;
4085         }
4086         case ANDROID_CONTROL_AVAILABLE_SCENE_MODES: {
4087             break;
4088         }
4089         case ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES: {
4090             break;
4091         }
4092         case ANDROID_CONTROL_AWB_AVAILABLE_MODES: {
4093             break;
4094         }
4095         case ANDROID_CONTROL_MAX_REGIONS: {
4096             break;
4097         }
4098         case ANDROID_CONTROL_SCENE_MODE_OVERRIDES: {
4099             break;
4100         }
4101         case ANDROID_CONTROL_AE_PRECAPTURE_ID: {
4102             break;
4103         }
4104         case ANDROID_CONTROL_AE_STATE: {
4105                 enumName = "INACTIVE";
4106                 if (strncmp(name, enumName, size) == 0) {
4107                     *value = ANDROID_CONTROL_AE_STATE_INACTIVE;
4108                     ret = 0;
4109                     break;
4110                 }
4111                 enumName = "SEARCHING";
4112                 if (strncmp(name, enumName, size) == 0) {
4113                     *value = ANDROID_CONTROL_AE_STATE_SEARCHING;
4114                     ret = 0;
4115                     break;
4116                 }
4117                 enumName = "CONVERGED";
4118                 if (strncmp(name, enumName, size) == 0) {
4119                     *value = ANDROID_CONTROL_AE_STATE_CONVERGED;
4120                     ret = 0;
4121                     break;
4122                 }
4123                 enumName = "LOCKED";
4124                 if (strncmp(name, enumName, size) == 0) {
4125                     *value = ANDROID_CONTROL_AE_STATE_LOCKED;
4126                     ret = 0;
4127                     break;
4128                 }
4129                 enumName = "FLASH_REQUIRED";
4130                 if (strncmp(name, enumName, size) == 0) {
4131                     *value = ANDROID_CONTROL_AE_STATE_FLASH_REQUIRED;
4132                     ret = 0;
4133                     break;
4134                 }
4135                 enumName = "PRECAPTURE";
4136                 if (strncmp(name, enumName, size) == 0) {
4137                     *value = ANDROID_CONTROL_AE_STATE_PRECAPTURE;
4138                     ret = 0;
4139                     break;
4140                 }
4141             break;
4142         }
4143         case ANDROID_CONTROL_AF_STATE: {
4144                 enumName = "INACTIVE";
4145                 if (strncmp(name, enumName, size) == 0) {
4146                     *value = ANDROID_CONTROL_AF_STATE_INACTIVE;
4147                     ret = 0;
4148                     break;
4149                 }
4150                 enumName = "PASSIVE_SCAN";
4151                 if (strncmp(name, enumName, size) == 0) {
4152                     *value = ANDROID_CONTROL_AF_STATE_PASSIVE_SCAN;
4153                     ret = 0;
4154                     break;
4155                 }
4156                 enumName = "PASSIVE_FOCUSED";
4157                 if (strncmp(name, enumName, size) == 0) {
4158                     *value = ANDROID_CONTROL_AF_STATE_PASSIVE_FOCUSED;
4159                     ret = 0;
4160                     break;
4161                 }
4162                 enumName = "ACTIVE_SCAN";
4163                 if (strncmp(name, enumName, size) == 0) {
4164                     *value = ANDROID_CONTROL_AF_STATE_ACTIVE_SCAN;
4165                     ret = 0;
4166                     break;
4167                 }
4168                 enumName = "FOCUSED_LOCKED";
4169                 if (strncmp(name, enumName, size) == 0) {
4170                     *value = ANDROID_CONTROL_AF_STATE_FOCUSED_LOCKED;
4171                     ret = 0;
4172                     break;
4173                 }
4174                 enumName = "NOT_FOCUSED_LOCKED";
4175                 if (strncmp(name, enumName, size) == 0) {
4176                     *value = ANDROID_CONTROL_AF_STATE_NOT_FOCUSED_LOCKED;
4177                     ret = 0;
4178                     break;
4179                 }
4180                 enumName = "PASSIVE_UNFOCUSED";
4181                 if (strncmp(name, enumName, size) == 0) {
4182                     *value = ANDROID_CONTROL_AF_STATE_PASSIVE_UNFOCUSED;
4183                     ret = 0;
4184                     break;
4185                 }
4186             break;
4187         }
4188         case ANDROID_CONTROL_AF_TRIGGER_ID: {
4189             break;
4190         }
4191         case ANDROID_CONTROL_AWB_STATE: {
4192                 enumName = "INACTIVE";
4193                 if (strncmp(name, enumName, size) == 0) {
4194                     *value = ANDROID_CONTROL_AWB_STATE_INACTIVE;
4195                     ret = 0;
4196                     break;
4197                 }
4198                 enumName = "SEARCHING";
4199                 if (strncmp(name, enumName, size) == 0) {
4200                     *value = ANDROID_CONTROL_AWB_STATE_SEARCHING;
4201                     ret = 0;
4202                     break;
4203                 }
4204                 enumName = "CONVERGED";
4205                 if (strncmp(name, enumName, size) == 0) {
4206                     *value = ANDROID_CONTROL_AWB_STATE_CONVERGED;
4207                     ret = 0;
4208                     break;
4209                 }
4210                 enumName = "LOCKED";
4211                 if (strncmp(name, enumName, size) == 0) {
4212                     *value = ANDROID_CONTROL_AWB_STATE_LOCKED;
4213                     ret = 0;
4214                     break;
4215                 }
4216             break;
4217         }
4218         case ANDROID_CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS: {
4219             break;
4220         }
4221         case ANDROID_CONTROL_AE_LOCK_AVAILABLE: {
4222                 enumName = "FALSE";
4223                 if (strncmp(name, enumName, size) == 0) {
4224                     *value = ANDROID_CONTROL_AE_LOCK_AVAILABLE_FALSE;
4225                     ret = 0;
4226                     break;
4227                 }
4228                 enumName = "TRUE";
4229                 if (strncmp(name, enumName, size) == 0) {
4230                     *value = ANDROID_CONTROL_AE_LOCK_AVAILABLE_TRUE;
4231                     ret = 0;
4232                     break;
4233                 }
4234             break;
4235         }
4236         case ANDROID_CONTROL_AWB_LOCK_AVAILABLE: {
4237                 enumName = "FALSE";
4238                 if (strncmp(name, enumName, size) == 0) {
4239                     *value = ANDROID_CONTROL_AWB_LOCK_AVAILABLE_FALSE;
4240                     ret = 0;
4241                     break;
4242                 }
4243                 enumName = "TRUE";
4244                 if (strncmp(name, enumName, size) == 0) {
4245                     *value = ANDROID_CONTROL_AWB_LOCK_AVAILABLE_TRUE;
4246                     ret = 0;
4247                     break;
4248                 }
4249             break;
4250         }
4251         case ANDROID_CONTROL_AVAILABLE_MODES: {
4252             break;
4253         }
4254         case ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE: {
4255             break;
4256         }
4257         case ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST: {
4258             break;
4259         }
4260         case ANDROID_CONTROL_ENABLE_ZSL: {
4261                 enumName = "FALSE";
4262                 if (strncmp(name, enumName, size) == 0) {
4263                     *value = ANDROID_CONTROL_ENABLE_ZSL_FALSE;
4264                     ret = 0;
4265                     break;
4266                 }
4267                 enumName = "TRUE";
4268                 if (strncmp(name, enumName, size) == 0) {
4269                     *value = ANDROID_CONTROL_ENABLE_ZSL_TRUE;
4270                     ret = 0;
4271                     break;
4272                 }
4273             break;
4274         }
4275         case ANDROID_CONTROL_AF_SCENE_CHANGE: {
4276                 enumName = "NOT_DETECTED";
4277                 if (strncmp(name, enumName, size) == 0) {
4278                     *value = ANDROID_CONTROL_AF_SCENE_CHANGE_NOT_DETECTED;
4279                     ret = 0;
4280                     break;
4281                 }
4282                 enumName = "DETECTED";
4283                 if (strncmp(name, enumName, size) == 0) {
4284                     *value = ANDROID_CONTROL_AF_SCENE_CHANGE_DETECTED;
4285                     ret = 0;
4286                     break;
4287                 }
4288             break;
4289         }
4290         case ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES: {
4291             break;
4292         }
4293         case ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES: {
4294             break;
4295         }
4296         case ANDROID_CONTROL_EXTENDED_SCENE_MODE: {
4297                 enumName = "DISABLED";
4298                 if (strncmp(name, enumName, size) == 0) {
4299                     *value = ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED;
4300                     ret = 0;
4301                     break;
4302                 }
4303                 enumName = "BOKEH_STILL_CAPTURE";
4304                 if (strncmp(name, enumName, size) == 0) {
4305                     *value = ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE;
4306                     ret = 0;
4307                     break;
4308                 }
4309                 enumName = "BOKEH_CONTINUOUS";
4310                 if (strncmp(name, enumName, size) == 0) {
4311                     *value = ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS;
4312                     ret = 0;
4313                     break;
4314                 }
4315                 enumName = "VENDOR_START";
4316                 if (strncmp(name, enumName, size) == 0) {
4317                     *value = ANDROID_CONTROL_EXTENDED_SCENE_MODE_VENDOR_START;
4318                     ret = 0;
4319                     break;
4320                 }
4321             break;
4322         }
4323         case ANDROID_CONTROL_ZOOM_RATIO_RANGE: {
4324             break;
4325         }
4326         case ANDROID_CONTROL_ZOOM_RATIO: {
4327             break;
4328         }
4329         case ANDROID_CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS_MAXIMUM_RESOLUTION: {
4330             break;
4331         }
4332         case ANDROID_CONTROL_AF_REGIONS_SET: {
4333                 enumName = "TRUE";
4334                 if (strncmp(name, enumName, size) == 0) {
4335                     *value = ANDROID_CONTROL_AF_REGIONS_SET_TRUE;
4336                     ret = 0;
4337                     break;
4338                 }
4339                 enumName = "FALSE";
4340                 if (strncmp(name, enumName, size) == 0) {
4341                     *value = ANDROID_CONTROL_AF_REGIONS_SET_FALSE;
4342                     ret = 0;
4343                     break;
4344                 }
4345             break;
4346         }
4347         case ANDROID_CONTROL_AE_REGIONS_SET: {
4348                 enumName = "TRUE";
4349                 if (strncmp(name, enumName, size) == 0) {
4350                     *value = ANDROID_CONTROL_AE_REGIONS_SET_TRUE;
4351                     ret = 0;
4352                     break;
4353                 }
4354                 enumName = "FALSE";
4355                 if (strncmp(name, enumName, size) == 0) {
4356                     *value = ANDROID_CONTROL_AE_REGIONS_SET_FALSE;
4357                     ret = 0;
4358                     break;
4359                 }
4360             break;
4361         }
4362         case ANDROID_CONTROL_AWB_REGIONS_SET: {
4363                 enumName = "TRUE";
4364                 if (strncmp(name, enumName, size) == 0) {
4365                     *value = ANDROID_CONTROL_AWB_REGIONS_SET_TRUE;
4366                     ret = 0;
4367                     break;
4368                 }
4369                 enumName = "FALSE";
4370                 if (strncmp(name, enumName, size) == 0) {
4371                     *value = ANDROID_CONTROL_AWB_REGIONS_SET_FALSE;
4372                     ret = 0;
4373                     break;
4374                 }
4375             break;
4376         }
4377 
4378         case ANDROID_DEMOSAIC_MODE: {
4379                 enumName = "FAST";
4380                 if (strncmp(name, enumName, size) == 0) {
4381                     *value = ANDROID_DEMOSAIC_MODE_FAST;
4382                     ret = 0;
4383                     break;
4384                 }
4385                 enumName = "HIGH_QUALITY";
4386                 if (strncmp(name, enumName, size) == 0) {
4387                     *value = ANDROID_DEMOSAIC_MODE_HIGH_QUALITY;
4388                     ret = 0;
4389                     break;
4390                 }
4391             break;
4392         }
4393 
4394         case ANDROID_EDGE_MODE: {
4395                 enumName = "OFF";
4396                 if (strncmp(name, enumName, size) == 0) {
4397                     *value = ANDROID_EDGE_MODE_OFF;
4398                     ret = 0;
4399                     break;
4400                 }
4401                 enumName = "FAST";
4402                 if (strncmp(name, enumName, size) == 0) {
4403                     *value = ANDROID_EDGE_MODE_FAST;
4404                     ret = 0;
4405                     break;
4406                 }
4407                 enumName = "HIGH_QUALITY";
4408                 if (strncmp(name, enumName, size) == 0) {
4409                     *value = ANDROID_EDGE_MODE_HIGH_QUALITY;
4410                     ret = 0;
4411                     break;
4412                 }
4413                 enumName = "ZERO_SHUTTER_LAG";
4414                 if (strncmp(name, enumName, size) == 0) {
4415                     *value = ANDROID_EDGE_MODE_ZERO_SHUTTER_LAG;
4416                     ret = 0;
4417                     break;
4418                 }
4419             break;
4420         }
4421         case ANDROID_EDGE_STRENGTH: {
4422             break;
4423         }
4424         case ANDROID_EDGE_AVAILABLE_EDGE_MODES: {
4425             break;
4426         }
4427 
4428         case ANDROID_FLASH_FIRING_POWER: {
4429             break;
4430         }
4431         case ANDROID_FLASH_FIRING_TIME: {
4432             break;
4433         }
4434         case ANDROID_FLASH_MODE: {
4435                 enumName = "OFF";
4436                 if (strncmp(name, enumName, size) == 0) {
4437                     *value = ANDROID_FLASH_MODE_OFF;
4438                     ret = 0;
4439                     break;
4440                 }
4441                 enumName = "SINGLE";
4442                 if (strncmp(name, enumName, size) == 0) {
4443                     *value = ANDROID_FLASH_MODE_SINGLE;
4444                     ret = 0;
4445                     break;
4446                 }
4447                 enumName = "TORCH";
4448                 if (strncmp(name, enumName, size) == 0) {
4449                     *value = ANDROID_FLASH_MODE_TORCH;
4450                     ret = 0;
4451                     break;
4452                 }
4453             break;
4454         }
4455         case ANDROID_FLASH_COLOR_TEMPERATURE: {
4456             break;
4457         }
4458         case ANDROID_FLASH_MAX_ENERGY: {
4459             break;
4460         }
4461         case ANDROID_FLASH_STATE: {
4462                 enumName = "UNAVAILABLE";
4463                 if (strncmp(name, enumName, size) == 0) {
4464                     *value = ANDROID_FLASH_STATE_UNAVAILABLE;
4465                     ret = 0;
4466                     break;
4467                 }
4468                 enumName = "CHARGING";
4469                 if (strncmp(name, enumName, size) == 0) {
4470                     *value = ANDROID_FLASH_STATE_CHARGING;
4471                     ret = 0;
4472                     break;
4473                 }
4474                 enumName = "READY";
4475                 if (strncmp(name, enumName, size) == 0) {
4476                     *value = ANDROID_FLASH_STATE_READY;
4477                     ret = 0;
4478                     break;
4479                 }
4480                 enumName = "FIRED";
4481                 if (strncmp(name, enumName, size) == 0) {
4482                     *value = ANDROID_FLASH_STATE_FIRED;
4483                     ret = 0;
4484                     break;
4485                 }
4486                 enumName = "PARTIAL";
4487                 if (strncmp(name, enumName, size) == 0) {
4488                     *value = ANDROID_FLASH_STATE_PARTIAL;
4489                     ret = 0;
4490                     break;
4491                 }
4492             break;
4493         }
4494 
4495         case ANDROID_FLASH_INFO_AVAILABLE: {
4496                 enumName = "FALSE";
4497                 if (strncmp(name, enumName, size) == 0) {
4498                     *value = ANDROID_FLASH_INFO_AVAILABLE_FALSE;
4499                     ret = 0;
4500                     break;
4501                 }
4502                 enumName = "TRUE";
4503                 if (strncmp(name, enumName, size) == 0) {
4504                     *value = ANDROID_FLASH_INFO_AVAILABLE_TRUE;
4505                     ret = 0;
4506                     break;
4507                 }
4508             break;
4509         }
4510         case ANDROID_FLASH_INFO_CHARGE_DURATION: {
4511             break;
4512         }
4513 
4514         case ANDROID_HOT_PIXEL_MODE: {
4515                 enumName = "OFF";
4516                 if (strncmp(name, enumName, size) == 0) {
4517                     *value = ANDROID_HOT_PIXEL_MODE_OFF;
4518                     ret = 0;
4519                     break;
4520                 }
4521                 enumName = "FAST";
4522                 if (strncmp(name, enumName, size) == 0) {
4523                     *value = ANDROID_HOT_PIXEL_MODE_FAST;
4524                     ret = 0;
4525                     break;
4526                 }
4527                 enumName = "HIGH_QUALITY";
4528                 if (strncmp(name, enumName, size) == 0) {
4529                     *value = ANDROID_HOT_PIXEL_MODE_HIGH_QUALITY;
4530                     ret = 0;
4531                     break;
4532                 }
4533             break;
4534         }
4535         case ANDROID_HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES: {
4536             break;
4537         }
4538 
4539         case ANDROID_JPEG_GPS_COORDINATES: {
4540             break;
4541         }
4542         case ANDROID_JPEG_GPS_PROCESSING_METHOD: {
4543             break;
4544         }
4545         case ANDROID_JPEG_GPS_TIMESTAMP: {
4546             break;
4547         }
4548         case ANDROID_JPEG_ORIENTATION: {
4549             break;
4550         }
4551         case ANDROID_JPEG_QUALITY: {
4552             break;
4553         }
4554         case ANDROID_JPEG_THUMBNAIL_QUALITY: {
4555             break;
4556         }
4557         case ANDROID_JPEG_THUMBNAIL_SIZE: {
4558             break;
4559         }
4560         case ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES: {
4561             break;
4562         }
4563         case ANDROID_JPEG_MAX_SIZE: {
4564             break;
4565         }
4566         case ANDROID_JPEG_SIZE: {
4567             break;
4568         }
4569 
4570         case ANDROID_LENS_APERTURE: {
4571             break;
4572         }
4573         case ANDROID_LENS_FILTER_DENSITY: {
4574             break;
4575         }
4576         case ANDROID_LENS_FOCAL_LENGTH: {
4577             break;
4578         }
4579         case ANDROID_LENS_FOCUS_DISTANCE: {
4580             break;
4581         }
4582         case ANDROID_LENS_OPTICAL_STABILIZATION_MODE: {
4583                 enumName = "OFF";
4584                 if (strncmp(name, enumName, size) == 0) {
4585                     *value = ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF;
4586                     ret = 0;
4587                     break;
4588                 }
4589                 enumName = "ON";
4590                 if (strncmp(name, enumName, size) == 0) {
4591                     *value = ANDROID_LENS_OPTICAL_STABILIZATION_MODE_ON;
4592                     ret = 0;
4593                     break;
4594                 }
4595             break;
4596         }
4597         case ANDROID_LENS_FACING: {
4598                 enumName = "FRONT";
4599                 if (strncmp(name, enumName, size) == 0) {
4600                     *value = ANDROID_LENS_FACING_FRONT;
4601                     ret = 0;
4602                     break;
4603                 }
4604                 enumName = "BACK";
4605                 if (strncmp(name, enumName, size) == 0) {
4606                     *value = ANDROID_LENS_FACING_BACK;
4607                     ret = 0;
4608                     break;
4609                 }
4610                 enumName = "EXTERNAL";
4611                 if (strncmp(name, enumName, size) == 0) {
4612                     *value = ANDROID_LENS_FACING_EXTERNAL;
4613                     ret = 0;
4614                     break;
4615                 }
4616             break;
4617         }
4618         case ANDROID_LENS_POSE_ROTATION: {
4619             break;
4620         }
4621         case ANDROID_LENS_POSE_TRANSLATION: {
4622             break;
4623         }
4624         case ANDROID_LENS_FOCUS_RANGE: {
4625             break;
4626         }
4627         case ANDROID_LENS_STATE: {
4628                 enumName = "STATIONARY";
4629                 if (strncmp(name, enumName, size) == 0) {
4630                     *value = ANDROID_LENS_STATE_STATIONARY;
4631                     ret = 0;
4632                     break;
4633                 }
4634                 enumName = "MOVING";
4635                 if (strncmp(name, enumName, size) == 0) {
4636                     *value = ANDROID_LENS_STATE_MOVING;
4637                     ret = 0;
4638                     break;
4639                 }
4640             break;
4641         }
4642         case ANDROID_LENS_INTRINSIC_CALIBRATION: {
4643             break;
4644         }
4645         case ANDROID_LENS_RADIAL_DISTORTION: {
4646             break;
4647         }
4648         case ANDROID_LENS_POSE_REFERENCE: {
4649                 enumName = "PRIMARY_CAMERA";
4650                 if (strncmp(name, enumName, size) == 0) {
4651                     *value = ANDROID_LENS_POSE_REFERENCE_PRIMARY_CAMERA;
4652                     ret = 0;
4653                     break;
4654                 }
4655                 enumName = "GYROSCOPE";
4656                 if (strncmp(name, enumName, size) == 0) {
4657                     *value = ANDROID_LENS_POSE_REFERENCE_GYROSCOPE;
4658                     ret = 0;
4659                     break;
4660                 }
4661                 enumName = "UNDEFINED";
4662                 if (strncmp(name, enumName, size) == 0) {
4663                     *value = ANDROID_LENS_POSE_REFERENCE_UNDEFINED;
4664                     ret = 0;
4665                     break;
4666                 }
4667             break;
4668         }
4669         case ANDROID_LENS_DISTORTION: {
4670             break;
4671         }
4672         case ANDROID_LENS_DISTORTION_MAXIMUM_RESOLUTION: {
4673             break;
4674         }
4675         case ANDROID_LENS_INTRINSIC_CALIBRATION_MAXIMUM_RESOLUTION: {
4676             break;
4677         }
4678 
4679         case ANDROID_LENS_INFO_AVAILABLE_APERTURES: {
4680             break;
4681         }
4682         case ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES: {
4683             break;
4684         }
4685         case ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS: {
4686             break;
4687         }
4688         case ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION: {
4689             break;
4690         }
4691         case ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE: {
4692             break;
4693         }
4694         case ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE: {
4695             break;
4696         }
4697         case ANDROID_LENS_INFO_SHADING_MAP_SIZE: {
4698             break;
4699         }
4700         case ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION: {
4701                 enumName = "UNCALIBRATED";
4702                 if (strncmp(name, enumName, size) == 0) {
4703                     *value = ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED;
4704                     ret = 0;
4705                     break;
4706                 }
4707                 enumName = "APPROXIMATE";
4708                 if (strncmp(name, enumName, size) == 0) {
4709                     *value = ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE;
4710                     ret = 0;
4711                     break;
4712                 }
4713                 enumName = "CALIBRATED";
4714                 if (strncmp(name, enumName, size) == 0) {
4715                     *value = ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED;
4716                     ret = 0;
4717                     break;
4718                 }
4719             break;
4720         }
4721 
4722         case ANDROID_NOISE_REDUCTION_MODE: {
4723                 enumName = "OFF";
4724                 if (strncmp(name, enumName, size) == 0) {
4725                     *value = ANDROID_NOISE_REDUCTION_MODE_OFF;
4726                     ret = 0;
4727                     break;
4728                 }
4729                 enumName = "FAST";
4730                 if (strncmp(name, enumName, size) == 0) {
4731                     *value = ANDROID_NOISE_REDUCTION_MODE_FAST;
4732                     ret = 0;
4733                     break;
4734                 }
4735                 enumName = "HIGH_QUALITY";
4736                 if (strncmp(name, enumName, size) == 0) {
4737                     *value = ANDROID_NOISE_REDUCTION_MODE_HIGH_QUALITY;
4738                     ret = 0;
4739                     break;
4740                 }
4741                 enumName = "MINIMAL";
4742                 if (strncmp(name, enumName, size) == 0) {
4743                     *value = ANDROID_NOISE_REDUCTION_MODE_MINIMAL;
4744                     ret = 0;
4745                     break;
4746                 }
4747                 enumName = "ZERO_SHUTTER_LAG";
4748                 if (strncmp(name, enumName, size) == 0) {
4749                     *value = ANDROID_NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG;
4750                     ret = 0;
4751                     break;
4752                 }
4753             break;
4754         }
4755         case ANDROID_NOISE_REDUCTION_STRENGTH: {
4756             break;
4757         }
4758         case ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES: {
4759             break;
4760         }
4761 
4762         case ANDROID_QUIRKS_METERING_CROP_REGION: {
4763             break;
4764         }
4765         case ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO: {
4766             break;
4767         }
4768         case ANDROID_QUIRKS_USE_ZSL_FORMAT: {
4769             break;
4770         }
4771         case ANDROID_QUIRKS_USE_PARTIAL_RESULT: {
4772             break;
4773         }
4774         case ANDROID_QUIRKS_PARTIAL_RESULT: {
4775                 enumName = "FINAL";
4776                 if (strncmp(name, enumName, size) == 0) {
4777                     *value = ANDROID_QUIRKS_PARTIAL_RESULT_FINAL;
4778                     ret = 0;
4779                     break;
4780                 }
4781                 enumName = "PARTIAL";
4782                 if (strncmp(name, enumName, size) == 0) {
4783                     *value = ANDROID_QUIRKS_PARTIAL_RESULT_PARTIAL;
4784                     ret = 0;
4785                     break;
4786                 }
4787             break;
4788         }
4789 
4790         case ANDROID_REQUEST_FRAME_COUNT: {
4791             break;
4792         }
4793         case ANDROID_REQUEST_ID: {
4794             break;
4795         }
4796         case ANDROID_REQUEST_INPUT_STREAMS: {
4797             break;
4798         }
4799         case ANDROID_REQUEST_METADATA_MODE: {
4800                 enumName = "NONE";
4801                 if (strncmp(name, enumName, size) == 0) {
4802                     *value = ANDROID_REQUEST_METADATA_MODE_NONE;
4803                     ret = 0;
4804                     break;
4805                 }
4806                 enumName = "FULL";
4807                 if (strncmp(name, enumName, size) == 0) {
4808                     *value = ANDROID_REQUEST_METADATA_MODE_FULL;
4809                     ret = 0;
4810                     break;
4811                 }
4812             break;
4813         }
4814         case ANDROID_REQUEST_OUTPUT_STREAMS: {
4815             break;
4816         }
4817         case ANDROID_REQUEST_TYPE: {
4818                 enumName = "CAPTURE";
4819                 if (strncmp(name, enumName, size) == 0) {
4820                     *value = ANDROID_REQUEST_TYPE_CAPTURE;
4821                     ret = 0;
4822                     break;
4823                 }
4824                 enumName = "REPROCESS";
4825                 if (strncmp(name, enumName, size) == 0) {
4826                     *value = ANDROID_REQUEST_TYPE_REPROCESS;
4827                     ret = 0;
4828                     break;
4829                 }
4830             break;
4831         }
4832         case ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS: {
4833             break;
4834         }
4835         case ANDROID_REQUEST_MAX_NUM_REPROCESS_STREAMS: {
4836             break;
4837         }
4838         case ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS: {
4839             break;
4840         }
4841         case ANDROID_REQUEST_PIPELINE_DEPTH: {
4842             break;
4843         }
4844         case ANDROID_REQUEST_PIPELINE_MAX_DEPTH: {
4845             break;
4846         }
4847         case ANDROID_REQUEST_PARTIAL_RESULT_COUNT: {
4848             break;
4849         }
4850         case ANDROID_REQUEST_AVAILABLE_CAPABILITIES: {
4851                 enumName = "BACKWARD_COMPATIBLE";
4852                 if (strncmp(name, enumName, size) == 0) {
4853                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE;
4854                     ret = 0;
4855                     break;
4856                 }
4857                 enumName = "MANUAL_SENSOR";
4858                 if (strncmp(name, enumName, size) == 0) {
4859                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR;
4860                     ret = 0;
4861                     break;
4862                 }
4863                 enumName = "MANUAL_POST_PROCESSING";
4864                 if (strncmp(name, enumName, size) == 0) {
4865                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING;
4866                     ret = 0;
4867                     break;
4868                 }
4869                 enumName = "RAW";
4870                 if (strncmp(name, enumName, size) == 0) {
4871                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_RAW;
4872                     ret = 0;
4873                     break;
4874                 }
4875                 enumName = "PRIVATE_REPROCESSING";
4876                 if (strncmp(name, enumName, size) == 0) {
4877                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING;
4878                     ret = 0;
4879                     break;
4880                 }
4881                 enumName = "READ_SENSOR_SETTINGS";
4882                 if (strncmp(name, enumName, size) == 0) {
4883                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS;
4884                     ret = 0;
4885                     break;
4886                 }
4887                 enumName = "BURST_CAPTURE";
4888                 if (strncmp(name, enumName, size) == 0) {
4889                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE;
4890                     ret = 0;
4891                     break;
4892                 }
4893                 enumName = "YUV_REPROCESSING";
4894                 if (strncmp(name, enumName, size) == 0) {
4895                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING;
4896                     ret = 0;
4897                     break;
4898                 }
4899                 enumName = "DEPTH_OUTPUT";
4900                 if (strncmp(name, enumName, size) == 0) {
4901                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT;
4902                     ret = 0;
4903                     break;
4904                 }
4905                 enumName = "CONSTRAINED_HIGH_SPEED_VIDEO";
4906                 if (strncmp(name, enumName, size) == 0) {
4907                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO;
4908                     ret = 0;
4909                     break;
4910                 }
4911                 enumName = "MOTION_TRACKING";
4912                 if (strncmp(name, enumName, size) == 0) {
4913                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING;
4914                     ret = 0;
4915                     break;
4916                 }
4917                 enumName = "LOGICAL_MULTI_CAMERA";
4918                 if (strncmp(name, enumName, size) == 0) {
4919                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA;
4920                     ret = 0;
4921                     break;
4922                 }
4923                 enumName = "MONOCHROME";
4924                 if (strncmp(name, enumName, size) == 0) {
4925                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME;
4926                     ret = 0;
4927                     break;
4928                 }
4929                 enumName = "SECURE_IMAGE_DATA";
4930                 if (strncmp(name, enumName, size) == 0) {
4931                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA;
4932                     ret = 0;
4933                     break;
4934                 }
4935                 enumName = "SYSTEM_CAMERA";
4936                 if (strncmp(name, enumName, size) == 0) {
4937                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA;
4938                     ret = 0;
4939                     break;
4940                 }
4941                 enumName = "OFFLINE_PROCESSING";
4942                 if (strncmp(name, enumName, size) == 0) {
4943                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_OFFLINE_PROCESSING;
4944                     ret = 0;
4945                     break;
4946                 }
4947                 enumName = "ULTRA_HIGH_RESOLUTION_SENSOR";
4948                 if (strncmp(name, enumName, size) == 0) {
4949                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR;
4950                     ret = 0;
4951                     break;
4952                 }
4953                 enumName = "REMOSAIC_REPROCESSING";
4954                 if (strncmp(name, enumName, size) == 0) {
4955                     *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_REMOSAIC_REPROCESSING;
4956                     ret = 0;
4957                     break;
4958                 }
4959             break;
4960         }
4961         case ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS: {
4962             break;
4963         }
4964         case ANDROID_REQUEST_AVAILABLE_RESULT_KEYS: {
4965             break;
4966         }
4967         case ANDROID_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS: {
4968             break;
4969         }
4970         case ANDROID_REQUEST_AVAILABLE_SESSION_KEYS: {
4971             break;
4972         }
4973         case ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS: {
4974             break;
4975         }
4976         case ANDROID_REQUEST_CHARACTERISTIC_KEYS_NEEDING_PERMISSION: {
4977             break;
4978         }
4979 
4980         case ANDROID_SCALER_CROP_REGION: {
4981             break;
4982         }
4983         case ANDROID_SCALER_AVAILABLE_FORMATS: {
4984                 enumName = "RAW16";
4985                 if (strncmp(name, enumName, size) == 0) {
4986                     *value = ANDROID_SCALER_AVAILABLE_FORMATS_RAW16;
4987                     ret = 0;
4988                     break;
4989                 }
4990                 enumName = "RAW_OPAQUE";
4991                 if (strncmp(name, enumName, size) == 0) {
4992                     *value = ANDROID_SCALER_AVAILABLE_FORMATS_RAW_OPAQUE;
4993                     ret = 0;
4994                     break;
4995                 }
4996                 enumName = "YV12";
4997                 if (strncmp(name, enumName, size) == 0) {
4998                     *value = ANDROID_SCALER_AVAILABLE_FORMATS_YV12;
4999                     ret = 0;
5000                     break;
5001                 }
5002                 enumName = "YCrCb_420_SP";
5003                 if (strncmp(name, enumName, size) == 0) {
5004                     *value = ANDROID_SCALER_AVAILABLE_FORMATS_YCrCb_420_SP;
5005                     ret = 0;
5006                     break;
5007                 }
5008                 enumName = "IMPLEMENTATION_DEFINED";
5009                 if (strncmp(name, enumName, size) == 0) {
5010                     *value = ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED;
5011                     ret = 0;
5012                     break;
5013                 }
5014                 enumName = "YCbCr_420_888";
5015                 if (strncmp(name, enumName, size) == 0) {
5016                     *value = ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888;
5017                     ret = 0;
5018                     break;
5019                 }
5020                 enumName = "BLOB";
5021                 if (strncmp(name, enumName, size) == 0) {
5022                     *value = ANDROID_SCALER_AVAILABLE_FORMATS_BLOB;
5023                     ret = 0;
5024                     break;
5025                 }
5026                 enumName = "RAW10";
5027                 if (strncmp(name, enumName, size) == 0) {
5028                     *value = ANDROID_SCALER_AVAILABLE_FORMATS_RAW10;
5029                     ret = 0;
5030                     break;
5031                 }
5032                 enumName = "RAW12";
5033                 if (strncmp(name, enumName, size) == 0) {
5034                     *value = ANDROID_SCALER_AVAILABLE_FORMATS_RAW12;
5035                     ret = 0;
5036                     break;
5037                 }
5038                 enumName = "Y8";
5039                 if (strncmp(name, enumName, size) == 0) {
5040                     *value = ANDROID_SCALER_AVAILABLE_FORMATS_Y8;
5041                     ret = 0;
5042                     break;
5043                 }
5044             break;
5045         }
5046         case ANDROID_SCALER_AVAILABLE_JPEG_MIN_DURATIONS: {
5047             break;
5048         }
5049         case ANDROID_SCALER_AVAILABLE_JPEG_SIZES: {
5050             break;
5051         }
5052         case ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM: {
5053             break;
5054         }
5055         case ANDROID_SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS: {
5056             break;
5057         }
5058         case ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES: {
5059             break;
5060         }
5061         case ANDROID_SCALER_AVAILABLE_RAW_MIN_DURATIONS: {
5062             break;
5063         }
5064         case ANDROID_SCALER_AVAILABLE_RAW_SIZES: {
5065             break;
5066         }
5067         case ANDROID_SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP: {
5068             break;
5069         }
5070         case ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS: {
5071                 enumName = "OUTPUT";
5072                 if (strncmp(name, enumName, size) == 0) {
5073                     *value = ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT;
5074                     ret = 0;
5075                     break;
5076                 }
5077                 enumName = "INPUT";
5078                 if (strncmp(name, enumName, size) == 0) {
5079                     *value = ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_INPUT;
5080                     ret = 0;
5081                     break;
5082                 }
5083             break;
5084         }
5085         case ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS: {
5086             break;
5087         }
5088         case ANDROID_SCALER_AVAILABLE_STALL_DURATIONS: {
5089             break;
5090         }
5091         case ANDROID_SCALER_CROPPING_TYPE: {
5092                 enumName = "CENTER_ONLY";
5093                 if (strncmp(name, enumName, size) == 0) {
5094                     *value = ANDROID_SCALER_CROPPING_TYPE_CENTER_ONLY;
5095                     ret = 0;
5096                     break;
5097                 }
5098                 enumName = "FREEFORM";
5099                 if (strncmp(name, enumName, size) == 0) {
5100                     *value = ANDROID_SCALER_CROPPING_TYPE_FREEFORM;
5101                     ret = 0;
5102                     break;
5103                 }
5104             break;
5105         }
5106         case ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS: {
5107                 enumName = "PREVIEW";
5108                 if (strncmp(name, enumName, size) == 0) {
5109                     *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW;
5110                     ret = 0;
5111                     break;
5112                 }
5113                 enumName = "RECORD";
5114                 if (strncmp(name, enumName, size) == 0) {
5115                     *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD;
5116                     ret = 0;
5117                     break;
5118                 }
5119                 enumName = "VIDEO_SNAPSHOT";
5120                 if (strncmp(name, enumName, size) == 0) {
5121                     *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT;
5122                     ret = 0;
5123                     break;
5124                 }
5125                 enumName = "SNAPSHOT";
5126                 if (strncmp(name, enumName, size) == 0) {
5127                     *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT;
5128                     ret = 0;
5129                     break;
5130                 }
5131                 enumName = "ZSL";
5132                 if (strncmp(name, enumName, size) == 0) {
5133                     *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_ZSL;
5134                     ret = 0;
5135                     break;
5136                 }
5137                 enumName = "RAW";
5138                 if (strncmp(name, enumName, size) == 0) {
5139                     *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RAW;
5140                     ret = 0;
5141                     break;
5142                 }
5143                 enumName = "LOW_LATENCY_SNAPSHOT";
5144                 if (strncmp(name, enumName, size) == 0) {
5145                     *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_LOW_LATENCY_SNAPSHOT;
5146                     ret = 0;
5147                     break;
5148                 }
5149                 enumName = "PUBLIC_END";
5150                 if (strncmp(name, enumName, size) == 0) {
5151                     *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PUBLIC_END;
5152                     ret = 0;
5153                     break;
5154                 }
5155                 enumName = "VENDOR_START";
5156                 if (strncmp(name, enumName, size) == 0) {
5157                     *value = ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VENDOR_START;
5158                     ret = 0;
5159                     break;
5160                 }
5161             break;
5162         }
5163         case ANDROID_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP: {
5164             break;
5165         }
5166         case ANDROID_SCALER_AVAILABLE_ROTATE_AND_CROP_MODES: {
5167             break;
5168         }
5169         case ANDROID_SCALER_ROTATE_AND_CROP: {
5170                 enumName = "NONE";
5171                 if (strncmp(name, enumName, size) == 0) {
5172                     *value = ANDROID_SCALER_ROTATE_AND_CROP_NONE;
5173                     ret = 0;
5174                     break;
5175                 }
5176                 enumName = "90";
5177                 if (strncmp(name, enumName, size) == 0) {
5178                     *value = ANDROID_SCALER_ROTATE_AND_CROP_90;
5179                     ret = 0;
5180                     break;
5181                 }
5182                 enumName = "180";
5183                 if (strncmp(name, enumName, size) == 0) {
5184                     *value = ANDROID_SCALER_ROTATE_AND_CROP_180;
5185                     ret = 0;
5186                     break;
5187                 }
5188                 enumName = "270";
5189                 if (strncmp(name, enumName, size) == 0) {
5190                     *value = ANDROID_SCALER_ROTATE_AND_CROP_270;
5191                     ret = 0;
5192                     break;
5193                 }
5194                 enumName = "AUTO";
5195                 if (strncmp(name, enumName, size) == 0) {
5196                     *value = ANDROID_SCALER_ROTATE_AND_CROP_AUTO;
5197                     ret = 0;
5198                     break;
5199                 }
5200             break;
5201         }
5202         case ANDROID_SCALER_DEFAULT_SECURE_IMAGE_SIZE: {
5203             break;
5204         }
5205         case ANDROID_SCALER_PHYSICAL_CAMERA_MULTI_RESOLUTION_STREAM_CONFIGURATIONS: {
5206                 enumName = "OUTPUT";
5207                 if (strncmp(name, enumName, size) == 0) {
5208                     *value = ANDROID_SCALER_PHYSICAL_CAMERA_MULTI_RESOLUTION_STREAM_CONFIGURATIONS_OUTPUT;
5209                     ret = 0;
5210                     break;
5211                 }
5212                 enumName = "INPUT";
5213                 if (strncmp(name, enumName, size) == 0) {
5214                     *value = ANDROID_SCALER_PHYSICAL_CAMERA_MULTI_RESOLUTION_STREAM_CONFIGURATIONS_INPUT;
5215                     ret = 0;
5216                     break;
5217                 }
5218             break;
5219         }
5220         case ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION: {
5221                 enumName = "OUTPUT";
5222                 if (strncmp(name, enumName, size) == 0) {
5223                     *value = ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_OUTPUT;
5224                     ret = 0;
5225                     break;
5226                 }
5227                 enumName = "INPUT";
5228                 if (strncmp(name, enumName, size) == 0) {
5229                     *value = ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT;
5230                     ret = 0;
5231                     break;
5232                 }
5233             break;
5234         }
5235         case ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION: {
5236             break;
5237         }
5238         case ANDROID_SCALER_AVAILABLE_STALL_DURATIONS_MAXIMUM_RESOLUTION: {
5239             break;
5240         }
5241         case ANDROID_SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP_MAXIMUM_RESOLUTION: {
5242             break;
5243         }
5244         case ANDROID_SCALER_MULTI_RESOLUTION_STREAM_SUPPORTED: {
5245                 enumName = "FALSE";
5246                 if (strncmp(name, enumName, size) == 0) {
5247                     *value = ANDROID_SCALER_MULTI_RESOLUTION_STREAM_SUPPORTED_FALSE;
5248                     ret = 0;
5249                     break;
5250                 }
5251                 enumName = "TRUE";
5252                 if (strncmp(name, enumName, size) == 0) {
5253                     *value = ANDROID_SCALER_MULTI_RESOLUTION_STREAM_SUPPORTED_TRUE;
5254                     ret = 0;
5255                     break;
5256                 }
5257             break;
5258         }
5259         case ANDROID_SCALER_CROP_REGION_SET: {
5260                 enumName = "TRUE";
5261                 if (strncmp(name, enumName, size) == 0) {
5262                     *value = ANDROID_SCALER_CROP_REGION_SET_TRUE;
5263                     ret = 0;
5264                     break;
5265                 }
5266                 enumName = "FALSE";
5267                 if (strncmp(name, enumName, size) == 0) {
5268                     *value = ANDROID_SCALER_CROP_REGION_SET_FALSE;
5269                     ret = 0;
5270                     break;
5271                 }
5272             break;
5273         }
5274 
5275         case ANDROID_SENSOR_EXPOSURE_TIME: {
5276             break;
5277         }
5278         case ANDROID_SENSOR_FRAME_DURATION: {
5279             break;
5280         }
5281         case ANDROID_SENSOR_SENSITIVITY: {
5282             break;
5283         }
5284         case ANDROID_SENSOR_REFERENCE_ILLUMINANT1: {
5285                 enumName = "DAYLIGHT";
5286                 if (strncmp(name, enumName, size) == 0) {
5287                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT;
5288                     ret = 0;
5289                     break;
5290                 }
5291                 enumName = "FLUORESCENT";
5292                 if (strncmp(name, enumName, size) == 0) {
5293                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FLUORESCENT;
5294                     ret = 0;
5295                     break;
5296                 }
5297                 enumName = "TUNGSTEN";
5298                 if (strncmp(name, enumName, size) == 0) {
5299                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_TUNGSTEN;
5300                     ret = 0;
5301                     break;
5302                 }
5303                 enumName = "FLASH";
5304                 if (strncmp(name, enumName, size) == 0) {
5305                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FLASH;
5306                     ret = 0;
5307                     break;
5308                 }
5309                 enumName = "FINE_WEATHER";
5310                 if (strncmp(name, enumName, size) == 0) {
5311                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FINE_WEATHER;
5312                     ret = 0;
5313                     break;
5314                 }
5315                 enumName = "CLOUDY_WEATHER";
5316                 if (strncmp(name, enumName, size) == 0) {
5317                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_CLOUDY_WEATHER;
5318                     ret = 0;
5319                     break;
5320                 }
5321                 enumName = "SHADE";
5322                 if (strncmp(name, enumName, size) == 0) {
5323                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_SHADE;
5324                     ret = 0;
5325                     break;
5326                 }
5327                 enumName = "DAYLIGHT_FLUORESCENT";
5328                 if (strncmp(name, enumName, size) == 0) {
5329                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT_FLUORESCENT;
5330                     ret = 0;
5331                     break;
5332                 }
5333                 enumName = "DAY_WHITE_FLUORESCENT";
5334                 if (strncmp(name, enumName, size) == 0) {
5335                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAY_WHITE_FLUORESCENT;
5336                     ret = 0;
5337                     break;
5338                 }
5339                 enumName = "COOL_WHITE_FLUORESCENT";
5340                 if (strncmp(name, enumName, size) == 0) {
5341                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_COOL_WHITE_FLUORESCENT;
5342                     ret = 0;
5343                     break;
5344                 }
5345                 enumName = "WHITE_FLUORESCENT";
5346                 if (strncmp(name, enumName, size) == 0) {
5347                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_WHITE_FLUORESCENT;
5348                     ret = 0;
5349                     break;
5350                 }
5351                 enumName = "STANDARD_A";
5352                 if (strncmp(name, enumName, size) == 0) {
5353                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_A;
5354                     ret = 0;
5355                     break;
5356                 }
5357                 enumName = "STANDARD_B";
5358                 if (strncmp(name, enumName, size) == 0) {
5359                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_B;
5360                     ret = 0;
5361                     break;
5362                 }
5363                 enumName = "STANDARD_C";
5364                 if (strncmp(name, enumName, size) == 0) {
5365                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_C;
5366                     ret = 0;
5367                     break;
5368                 }
5369                 enumName = "D55";
5370                 if (strncmp(name, enumName, size) == 0) {
5371                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D55;
5372                     ret = 0;
5373                     break;
5374                 }
5375                 enumName = "D65";
5376                 if (strncmp(name, enumName, size) == 0) {
5377                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D65;
5378                     ret = 0;
5379                     break;
5380                 }
5381                 enumName = "D75";
5382                 if (strncmp(name, enumName, size) == 0) {
5383                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D75;
5384                     ret = 0;
5385                     break;
5386                 }
5387                 enumName = "D50";
5388                 if (strncmp(name, enumName, size) == 0) {
5389                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D50;
5390                     ret = 0;
5391                     break;
5392                 }
5393                 enumName = "ISO_STUDIO_TUNGSTEN";
5394                 if (strncmp(name, enumName, size) == 0) {
5395                     *value = ANDROID_SENSOR_REFERENCE_ILLUMINANT1_ISO_STUDIO_TUNGSTEN;
5396                     ret = 0;
5397                     break;
5398                 }
5399             break;
5400         }
5401         case ANDROID_SENSOR_REFERENCE_ILLUMINANT2: {
5402             break;
5403         }
5404         case ANDROID_SENSOR_CALIBRATION_TRANSFORM1: {
5405             break;
5406         }
5407         case ANDROID_SENSOR_CALIBRATION_TRANSFORM2: {
5408             break;
5409         }
5410         case ANDROID_SENSOR_COLOR_TRANSFORM1: {
5411             break;
5412         }
5413         case ANDROID_SENSOR_COLOR_TRANSFORM2: {
5414             break;
5415         }
5416         case ANDROID_SENSOR_FORWARD_MATRIX1: {
5417             break;
5418         }
5419         case ANDROID_SENSOR_FORWARD_MATRIX2: {
5420             break;
5421         }
5422         case ANDROID_SENSOR_BASE_GAIN_FACTOR: {
5423             break;
5424         }
5425         case ANDROID_SENSOR_BLACK_LEVEL_PATTERN: {
5426             break;
5427         }
5428         case ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY: {
5429             break;
5430         }
5431         case ANDROID_SENSOR_ORIENTATION: {
5432             break;
5433         }
5434         case ANDROID_SENSOR_PROFILE_HUE_SAT_MAP_DIMENSIONS: {
5435             break;
5436         }
5437         case ANDROID_SENSOR_TIMESTAMP: {
5438             break;
5439         }
5440         case ANDROID_SENSOR_TEMPERATURE: {
5441             break;
5442         }
5443         case ANDROID_SENSOR_NEUTRAL_COLOR_POINT: {
5444             break;
5445         }
5446         case ANDROID_SENSOR_NOISE_PROFILE: {
5447             break;
5448         }
5449         case ANDROID_SENSOR_PROFILE_HUE_SAT_MAP: {
5450             break;
5451         }
5452         case ANDROID_SENSOR_PROFILE_TONE_CURVE: {
5453             break;
5454         }
5455         case ANDROID_SENSOR_GREEN_SPLIT: {
5456             break;
5457         }
5458         case ANDROID_SENSOR_TEST_PATTERN_DATA: {
5459             break;
5460         }
5461         case ANDROID_SENSOR_TEST_PATTERN_MODE: {
5462                 enumName = "OFF";
5463                 if (strncmp(name, enumName, size) == 0) {
5464                     *value = ANDROID_SENSOR_TEST_PATTERN_MODE_OFF;
5465                     ret = 0;
5466                     break;
5467                 }
5468                 enumName = "SOLID_COLOR";
5469                 if (strncmp(name, enumName, size) == 0) {
5470                     *value = ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR;
5471                     ret = 0;
5472                     break;
5473                 }
5474                 enumName = "COLOR_BARS";
5475                 if (strncmp(name, enumName, size) == 0) {
5476                     *value = ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS;
5477                     ret = 0;
5478                     break;
5479                 }
5480                 enumName = "COLOR_BARS_FADE_TO_GRAY";
5481                 if (strncmp(name, enumName, size) == 0) {
5482                     *value = ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY;
5483                     ret = 0;
5484                     break;
5485                 }
5486                 enumName = "PN9";
5487                 if (strncmp(name, enumName, size) == 0) {
5488                     *value = ANDROID_SENSOR_TEST_PATTERN_MODE_PN9;
5489                     ret = 0;
5490                     break;
5491                 }
5492                 enumName = "BLACK";
5493                 if (strncmp(name, enumName, size) == 0) {
5494                     *value = ANDROID_SENSOR_TEST_PATTERN_MODE_BLACK;
5495                     ret = 0;
5496                     break;
5497                 }
5498                 enumName = "CUSTOM1";
5499                 if (strncmp(name, enumName, size) == 0) {
5500                     *value = ANDROID_SENSOR_TEST_PATTERN_MODE_CUSTOM1;
5501                     ret = 0;
5502                     break;
5503                 }
5504             break;
5505         }
5506         case ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES: {
5507             break;
5508         }
5509         case ANDROID_SENSOR_ROLLING_SHUTTER_SKEW: {
5510             break;
5511         }
5512         case ANDROID_SENSOR_OPTICAL_BLACK_REGIONS: {
5513             break;
5514         }
5515         case ANDROID_SENSOR_DYNAMIC_BLACK_LEVEL: {
5516             break;
5517         }
5518         case ANDROID_SENSOR_DYNAMIC_WHITE_LEVEL: {
5519             break;
5520         }
5521         case ANDROID_SENSOR_OPAQUE_RAW_SIZE: {
5522             break;
5523         }
5524         case ANDROID_SENSOR_OPAQUE_RAW_SIZE_MAXIMUM_RESOLUTION: {
5525             break;
5526         }
5527         case ANDROID_SENSOR_PIXEL_MODE: {
5528                 enumName = "DEFAULT";
5529                 if (strncmp(name, enumName, size) == 0) {
5530                     *value = ANDROID_SENSOR_PIXEL_MODE_DEFAULT;
5531                     ret = 0;
5532                     break;
5533                 }
5534                 enumName = "MAXIMUM_RESOLUTION";
5535                 if (strncmp(name, enumName, size) == 0) {
5536                     *value = ANDROID_SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION;
5537                     ret = 0;
5538                     break;
5539                 }
5540             break;
5541         }
5542         case ANDROID_SENSOR_RAW_BINNING_FACTOR_USED: {
5543                 enumName = "TRUE";
5544                 if (strncmp(name, enumName, size) == 0) {
5545                     *value = ANDROID_SENSOR_RAW_BINNING_FACTOR_USED_TRUE;
5546                     ret = 0;
5547                     break;
5548                 }
5549                 enumName = "FALSE";
5550                 if (strncmp(name, enumName, size) == 0) {
5551                     *value = ANDROID_SENSOR_RAW_BINNING_FACTOR_USED_FALSE;
5552                     ret = 0;
5553                     break;
5554                 }
5555             break;
5556         }
5557 
5558         case ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE: {
5559             break;
5560         }
5561         case ANDROID_SENSOR_INFO_SENSITIVITY_RANGE: {
5562             break;
5563         }
5564         case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT: {
5565                 enumName = "RGGB";
5566                 if (strncmp(name, enumName, size) == 0) {
5567                     *value = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB;
5568                     ret = 0;
5569                     break;
5570                 }
5571                 enumName = "GRBG";
5572                 if (strncmp(name, enumName, size) == 0) {
5573                     *value = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG;
5574                     ret = 0;
5575                     break;
5576                 }
5577                 enumName = "GBRG";
5578                 if (strncmp(name, enumName, size) == 0) {
5579                     *value = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG;
5580                     ret = 0;
5581                     break;
5582                 }
5583                 enumName = "BGGR";
5584                 if (strncmp(name, enumName, size) == 0) {
5585                     *value = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_BGGR;
5586                     ret = 0;
5587                     break;
5588                 }
5589                 enumName = "RGB";
5590                 if (strncmp(name, enumName, size) == 0) {
5591                     *value = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGB;
5592                     ret = 0;
5593                     break;
5594                 }
5595                 enumName = "MONO";
5596                 if (strncmp(name, enumName, size) == 0) {
5597                     *value = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO;
5598                     ret = 0;
5599                     break;
5600                 }
5601                 enumName = "NIR";
5602                 if (strncmp(name, enumName, size) == 0) {
5603                     *value = ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR;
5604                     ret = 0;
5605                     break;
5606                 }
5607             break;
5608         }
5609         case ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE: {
5610             break;
5611         }
5612         case ANDROID_SENSOR_INFO_MAX_FRAME_DURATION: {
5613             break;
5614         }
5615         case ANDROID_SENSOR_INFO_PHYSICAL_SIZE: {
5616             break;
5617         }
5618         case ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE: {
5619             break;
5620         }
5621         case ANDROID_SENSOR_INFO_WHITE_LEVEL: {
5622             break;
5623         }
5624         case ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE: {
5625                 enumName = "UNKNOWN";
5626                 if (strncmp(name, enumName, size) == 0) {
5627                     *value = ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN;
5628                     ret = 0;
5629                     break;
5630                 }
5631                 enumName = "REALTIME";
5632                 if (strncmp(name, enumName, size) == 0) {
5633                     *value = ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME;
5634                     ret = 0;
5635                     break;
5636                 }
5637             break;
5638         }
5639         case ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED: {
5640                 enumName = "FALSE";
5641                 if (strncmp(name, enumName, size) == 0) {
5642                     *value = ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED_FALSE;
5643                     ret = 0;
5644                     break;
5645                 }
5646                 enumName = "TRUE";
5647                 if (strncmp(name, enumName, size) == 0) {
5648                     *value = ANDROID_SENSOR_INFO_LENS_SHADING_APPLIED_TRUE;
5649                     ret = 0;
5650                     break;
5651                 }
5652             break;
5653         }
5654         case ANDROID_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE: {
5655             break;
5656         }
5657         case ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION: {
5658             break;
5659         }
5660         case ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE_MAXIMUM_RESOLUTION: {
5661             break;
5662         }
5663         case ANDROID_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION: {
5664             break;
5665         }
5666         case ANDROID_SENSOR_INFO_BINNING_FACTOR: {
5667             break;
5668         }
5669 
5670         case ANDROID_SHADING_MODE: {
5671                 enumName = "OFF";
5672                 if (strncmp(name, enumName, size) == 0) {
5673                     *value = ANDROID_SHADING_MODE_OFF;
5674                     ret = 0;
5675                     break;
5676                 }
5677                 enumName = "FAST";
5678                 if (strncmp(name, enumName, size) == 0) {
5679                     *value = ANDROID_SHADING_MODE_FAST;
5680                     ret = 0;
5681                     break;
5682                 }
5683                 enumName = "HIGH_QUALITY";
5684                 if (strncmp(name, enumName, size) == 0) {
5685                     *value = ANDROID_SHADING_MODE_HIGH_QUALITY;
5686                     ret = 0;
5687                     break;
5688                 }
5689             break;
5690         }
5691         case ANDROID_SHADING_STRENGTH: {
5692             break;
5693         }
5694         case ANDROID_SHADING_AVAILABLE_MODES: {
5695             break;
5696         }
5697 
5698         case ANDROID_STATISTICS_FACE_DETECT_MODE: {
5699                 enumName = "OFF";
5700                 if (strncmp(name, enumName, size) == 0) {
5701                     *value = ANDROID_STATISTICS_FACE_DETECT_MODE_OFF;
5702                     ret = 0;
5703                     break;
5704                 }
5705                 enumName = "SIMPLE";
5706                 if (strncmp(name, enumName, size) == 0) {
5707                     *value = ANDROID_STATISTICS_FACE_DETECT_MODE_SIMPLE;
5708                     ret = 0;
5709                     break;
5710                 }
5711                 enumName = "FULL";
5712                 if (strncmp(name, enumName, size) == 0) {
5713                     *value = ANDROID_STATISTICS_FACE_DETECT_MODE_FULL;
5714                     ret = 0;
5715                     break;
5716                 }
5717             break;
5718         }
5719         case ANDROID_STATISTICS_HISTOGRAM_MODE: {
5720                 enumName = "OFF";
5721                 if (strncmp(name, enumName, size) == 0) {
5722                     *value = ANDROID_STATISTICS_HISTOGRAM_MODE_OFF;
5723                     ret = 0;
5724                     break;
5725                 }
5726                 enumName = "ON";
5727                 if (strncmp(name, enumName, size) == 0) {
5728                     *value = ANDROID_STATISTICS_HISTOGRAM_MODE_ON;
5729                     ret = 0;
5730                     break;
5731                 }
5732             break;
5733         }
5734         case ANDROID_STATISTICS_SHARPNESS_MAP_MODE: {
5735                 enumName = "OFF";
5736                 if (strncmp(name, enumName, size) == 0) {
5737                     *value = ANDROID_STATISTICS_SHARPNESS_MAP_MODE_OFF;
5738                     ret = 0;
5739                     break;
5740                 }
5741                 enumName = "ON";
5742                 if (strncmp(name, enumName, size) == 0) {
5743                     *value = ANDROID_STATISTICS_SHARPNESS_MAP_MODE_ON;
5744                     ret = 0;
5745                     break;
5746                 }
5747             break;
5748         }
5749         case ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE: {
5750                 enumName = "OFF";
5751                 if (strncmp(name, enumName, size) == 0) {
5752                     *value = ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE_OFF;
5753                     ret = 0;
5754                     break;
5755                 }
5756                 enumName = "ON";
5757                 if (strncmp(name, enumName, size) == 0) {
5758                     *value = ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE_ON;
5759                     ret = 0;
5760                     break;
5761                 }
5762             break;
5763         }
5764         case ANDROID_STATISTICS_FACE_IDS: {
5765             break;
5766         }
5767         case ANDROID_STATISTICS_FACE_LANDMARKS: {
5768             break;
5769         }
5770         case ANDROID_STATISTICS_FACE_RECTANGLES: {
5771             break;
5772         }
5773         case ANDROID_STATISTICS_FACE_SCORES: {
5774             break;
5775         }
5776         case ANDROID_STATISTICS_HISTOGRAM: {
5777             break;
5778         }
5779         case ANDROID_STATISTICS_SHARPNESS_MAP: {
5780             break;
5781         }
5782         case ANDROID_STATISTICS_LENS_SHADING_CORRECTION_MAP: {
5783             break;
5784         }
5785         case ANDROID_STATISTICS_LENS_SHADING_MAP: {
5786             break;
5787         }
5788         case ANDROID_STATISTICS_PREDICTED_COLOR_GAINS: {
5789             break;
5790         }
5791         case ANDROID_STATISTICS_PREDICTED_COLOR_TRANSFORM: {
5792             break;
5793         }
5794         case ANDROID_STATISTICS_SCENE_FLICKER: {
5795                 enumName = "NONE";
5796                 if (strncmp(name, enumName, size) == 0) {
5797                     *value = ANDROID_STATISTICS_SCENE_FLICKER_NONE;
5798                     ret = 0;
5799                     break;
5800                 }
5801                 enumName = "50HZ";
5802                 if (strncmp(name, enumName, size) == 0) {
5803                     *value = ANDROID_STATISTICS_SCENE_FLICKER_50HZ;
5804                     ret = 0;
5805                     break;
5806                 }
5807                 enumName = "60HZ";
5808                 if (strncmp(name, enumName, size) == 0) {
5809                     *value = ANDROID_STATISTICS_SCENE_FLICKER_60HZ;
5810                     ret = 0;
5811                     break;
5812                 }
5813             break;
5814         }
5815         case ANDROID_STATISTICS_HOT_PIXEL_MAP: {
5816             break;
5817         }
5818         case ANDROID_STATISTICS_LENS_SHADING_MAP_MODE: {
5819                 enumName = "OFF";
5820                 if (strncmp(name, enumName, size) == 0) {
5821                     *value = ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF;
5822                     ret = 0;
5823                     break;
5824                 }
5825                 enumName = "ON";
5826                 if (strncmp(name, enumName, size) == 0) {
5827                     *value = ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_ON;
5828                     ret = 0;
5829                     break;
5830                 }
5831             break;
5832         }
5833         case ANDROID_STATISTICS_OIS_DATA_MODE: {
5834                 enumName = "OFF";
5835                 if (strncmp(name, enumName, size) == 0) {
5836                     *value = ANDROID_STATISTICS_OIS_DATA_MODE_OFF;
5837                     ret = 0;
5838                     break;
5839                 }
5840                 enumName = "ON";
5841                 if (strncmp(name, enumName, size) == 0) {
5842                     *value = ANDROID_STATISTICS_OIS_DATA_MODE_ON;
5843                     ret = 0;
5844                     break;
5845                 }
5846             break;
5847         }
5848         case ANDROID_STATISTICS_OIS_TIMESTAMPS: {
5849             break;
5850         }
5851         case ANDROID_STATISTICS_OIS_X_SHIFTS: {
5852             break;
5853         }
5854         case ANDROID_STATISTICS_OIS_Y_SHIFTS: {
5855             break;
5856         }
5857 
5858         case ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES: {
5859             break;
5860         }
5861         case ANDROID_STATISTICS_INFO_HISTOGRAM_BUCKET_COUNT: {
5862             break;
5863         }
5864         case ANDROID_STATISTICS_INFO_MAX_FACE_COUNT: {
5865             break;
5866         }
5867         case ANDROID_STATISTICS_INFO_MAX_HISTOGRAM_COUNT: {
5868             break;
5869         }
5870         case ANDROID_STATISTICS_INFO_MAX_SHARPNESS_MAP_VALUE: {
5871             break;
5872         }
5873         case ANDROID_STATISTICS_INFO_SHARPNESS_MAP_SIZE: {
5874             break;
5875         }
5876         case ANDROID_STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES: {
5877             break;
5878         }
5879         case ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES: {
5880             break;
5881         }
5882         case ANDROID_STATISTICS_INFO_AVAILABLE_OIS_DATA_MODES: {
5883             break;
5884         }
5885 
5886         case ANDROID_TONEMAP_CURVE_BLUE: {
5887             break;
5888         }
5889         case ANDROID_TONEMAP_CURVE_GREEN: {
5890             break;
5891         }
5892         case ANDROID_TONEMAP_CURVE_RED: {
5893             break;
5894         }
5895         case ANDROID_TONEMAP_MODE: {
5896                 enumName = "CONTRAST_CURVE";
5897                 if (strncmp(name, enumName, size) == 0) {
5898                     *value = ANDROID_TONEMAP_MODE_CONTRAST_CURVE;
5899                     ret = 0;
5900                     break;
5901                 }
5902                 enumName = "FAST";
5903                 if (strncmp(name, enumName, size) == 0) {
5904                     *value = ANDROID_TONEMAP_MODE_FAST;
5905                     ret = 0;
5906                     break;
5907                 }
5908                 enumName = "HIGH_QUALITY";
5909                 if (strncmp(name, enumName, size) == 0) {
5910                     *value = ANDROID_TONEMAP_MODE_HIGH_QUALITY;
5911                     ret = 0;
5912                     break;
5913                 }
5914                 enumName = "GAMMA_VALUE";
5915                 if (strncmp(name, enumName, size) == 0) {
5916                     *value = ANDROID_TONEMAP_MODE_GAMMA_VALUE;
5917                     ret = 0;
5918                     break;
5919                 }
5920                 enumName = "PRESET_CURVE";
5921                 if (strncmp(name, enumName, size) == 0) {
5922                     *value = ANDROID_TONEMAP_MODE_PRESET_CURVE;
5923                     ret = 0;
5924                     break;
5925                 }
5926             break;
5927         }
5928         case ANDROID_TONEMAP_MAX_CURVE_POINTS: {
5929             break;
5930         }
5931         case ANDROID_TONEMAP_AVAILABLE_TONE_MAP_MODES: {
5932             break;
5933         }
5934         case ANDROID_TONEMAP_GAMMA: {
5935             break;
5936         }
5937         case ANDROID_TONEMAP_PRESET_CURVE: {
5938                 enumName = "SRGB";
5939                 if (strncmp(name, enumName, size) == 0) {
5940                     *value = ANDROID_TONEMAP_PRESET_CURVE_SRGB;
5941                     ret = 0;
5942                     break;
5943                 }
5944                 enumName = "REC709";
5945                 if (strncmp(name, enumName, size) == 0) {
5946                     *value = ANDROID_TONEMAP_PRESET_CURVE_REC709;
5947                     ret = 0;
5948                     break;
5949                 }
5950             break;
5951         }
5952 
5953         case ANDROID_LED_TRANSMIT: {
5954                 enumName = "OFF";
5955                 if (strncmp(name, enumName, size) == 0) {
5956                     *value = ANDROID_LED_TRANSMIT_OFF;
5957                     ret = 0;
5958                     break;
5959                 }
5960                 enumName = "ON";
5961                 if (strncmp(name, enumName, size) == 0) {
5962                     *value = ANDROID_LED_TRANSMIT_ON;
5963                     ret = 0;
5964                     break;
5965                 }
5966             break;
5967         }
5968         case ANDROID_LED_AVAILABLE_LEDS: {
5969                 enumName = "TRANSMIT";
5970                 if (strncmp(name, enumName, size) == 0) {
5971                     *value = ANDROID_LED_AVAILABLE_LEDS_TRANSMIT;
5972                     ret = 0;
5973                     break;
5974                 }
5975             break;
5976         }
5977 
5978         case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL: {
5979                 enumName = "LIMITED";
5980                 if (strncmp(name, enumName, size) == 0) {
5981                     *value = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED;
5982                     ret = 0;
5983                     break;
5984                 }
5985                 enumName = "FULL";
5986                 if (strncmp(name, enumName, size) == 0) {
5987                     *value = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_FULL;
5988                     ret = 0;
5989                     break;
5990                 }
5991                 enumName = "LEGACY";
5992                 if (strncmp(name, enumName, size) == 0) {
5993                     *value = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY;
5994                     ret = 0;
5995                     break;
5996                 }
5997                 enumName = "3";
5998                 if (strncmp(name, enumName, size) == 0) {
5999                     *value = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_3;
6000                     ret = 0;
6001                     break;
6002                 }
6003                 enumName = "EXTERNAL";
6004                 if (strncmp(name, enumName, size) == 0) {
6005                     *value = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL;
6006                     ret = 0;
6007                     break;
6008                 }
6009             break;
6010         }
6011         case ANDROID_INFO_VERSION: {
6012             break;
6013         }
6014         case ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION: {
6015                 enumName = "HIDL_DEVICE_3_5";
6016                 if (strncmp(name, enumName, size) == 0) {
6017                     *value = ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION_HIDL_DEVICE_3_5;
6018                     ret = 0;
6019                     break;
6020                 }
6021             break;
6022         }
6023 
6024         case ANDROID_BLACK_LEVEL_LOCK: {
6025                 enumName = "OFF";
6026                 if (strncmp(name, enumName, size) == 0) {
6027                     *value = ANDROID_BLACK_LEVEL_LOCK_OFF;
6028                     ret = 0;
6029                     break;
6030                 }
6031                 enumName = "ON";
6032                 if (strncmp(name, enumName, size) == 0) {
6033                     *value = ANDROID_BLACK_LEVEL_LOCK_ON;
6034                     ret = 0;
6035                     break;
6036                 }
6037             break;
6038         }
6039 
6040         case ANDROID_SYNC_FRAME_NUMBER: {
6041                 enumName = "CONVERGING";
6042                 if (strncmp(name, enumName, size) == 0) {
6043                     *value = ANDROID_SYNC_FRAME_NUMBER_CONVERGING;
6044                     ret = 0;
6045                     break;
6046                 }
6047                 enumName = "UNKNOWN";
6048                 if (strncmp(name, enumName, size) == 0) {
6049                     *value = ANDROID_SYNC_FRAME_NUMBER_UNKNOWN;
6050                     ret = 0;
6051                     break;
6052                 }
6053             break;
6054         }
6055         case ANDROID_SYNC_MAX_LATENCY: {
6056                 enumName = "PER_FRAME_CONTROL";
6057                 if (strncmp(name, enumName, size) == 0) {
6058                     *value = ANDROID_SYNC_MAX_LATENCY_PER_FRAME_CONTROL;
6059                     ret = 0;
6060                     break;
6061                 }
6062                 enumName = "UNKNOWN";
6063                 if (strncmp(name, enumName, size) == 0) {
6064                     *value = ANDROID_SYNC_MAX_LATENCY_UNKNOWN;
6065                     ret = 0;
6066                     break;
6067                 }
6068             break;
6069         }
6070 
6071         case ANDROID_REPROCESS_EFFECTIVE_EXPOSURE_FACTOR: {
6072             break;
6073         }
6074         case ANDROID_REPROCESS_MAX_CAPTURE_STALL: {
6075             break;
6076         }
6077 
6078         case ANDROID_DEPTH_MAX_DEPTH_SAMPLES: {
6079             break;
6080         }
6081         case ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS: {
6082                 enumName = "OUTPUT";
6083                 if (strncmp(name, enumName, size) == 0) {
6084                     *value = ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_OUTPUT;
6085                     ret = 0;
6086                     break;
6087                 }
6088                 enumName = "INPUT";
6089                 if (strncmp(name, enumName, size) == 0) {
6090                     *value = ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_INPUT;
6091                     ret = 0;
6092                     break;
6093                 }
6094             break;
6095         }
6096         case ANDROID_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS: {
6097             break;
6098         }
6099         case ANDROID_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS: {
6100             break;
6101         }
6102         case ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE: {
6103                 enumName = "FALSE";
6104                 if (strncmp(name, enumName, size) == 0) {
6105                     *value = ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE_FALSE;
6106                     ret = 0;
6107                     break;
6108                 }
6109                 enumName = "TRUE";
6110                 if (strncmp(name, enumName, size) == 0) {
6111                     *value = ANDROID_DEPTH_DEPTH_IS_EXCLUSIVE_TRUE;
6112                     ret = 0;
6113                     break;
6114                 }
6115             break;
6116         }
6117         case ANDROID_DEPTH_AVAILABLE_RECOMMENDED_DEPTH_STREAM_CONFIGURATIONS: {
6118             break;
6119         }
6120         case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS: {
6121                 enumName = "OUTPUT";
6122                 if (strncmp(name, enumName, size) == 0) {
6123                     *value = ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_OUTPUT;
6124                     ret = 0;
6125                     break;
6126                 }
6127                 enumName = "INPUT";
6128                 if (strncmp(name, enumName, size) == 0) {
6129                     *value = ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_INPUT;
6130                     ret = 0;
6131                     break;
6132                 }
6133             break;
6134         }
6135         case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS: {
6136             break;
6137         }
6138         case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS: {
6139             break;
6140         }
6141         case ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION: {
6142                 enumName = "OUTPUT";
6143                 if (strncmp(name, enumName, size) == 0) {
6144                     *value = ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_OUTPUT;
6145                     ret = 0;
6146                     break;
6147                 }
6148                 enumName = "INPUT";
6149                 if (strncmp(name, enumName, size) == 0) {
6150                     *value = ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT;
6151                     ret = 0;
6152                     break;
6153                 }
6154             break;
6155         }
6156         case ANDROID_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION: {
6157             break;
6158         }
6159         case ANDROID_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS_MAXIMUM_RESOLUTION: {
6160             break;
6161         }
6162         case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION: {
6163                 enumName = "OUTPUT";
6164                 if (strncmp(name, enumName, size) == 0) {
6165                     *value = ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_OUTPUT;
6166                     ret = 0;
6167                     break;
6168                 }
6169                 enumName = "INPUT";
6170                 if (strncmp(name, enumName, size) == 0) {
6171                     *value = ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT;
6172                     ret = 0;
6173                     break;
6174                 }
6175             break;
6176         }
6177         case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION: {
6178             break;
6179         }
6180         case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS_MAXIMUM_RESOLUTION: {
6181             break;
6182         }
6183 
6184         case ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS: {
6185             break;
6186         }
6187         case ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE: {
6188                 enumName = "APPROXIMATE";
6189                 if (strncmp(name, enumName, size) == 0) {
6190                     *value = ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE;
6191                     ret = 0;
6192                     break;
6193                 }
6194                 enumName = "CALIBRATED";
6195                 if (strncmp(name, enumName, size) == 0) {
6196                     *value = ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED;
6197                     ret = 0;
6198                     break;
6199                 }
6200             break;
6201         }
6202         case ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID: {
6203             break;
6204         }
6205 
6206         case ANDROID_DISTORTION_CORRECTION_MODE: {
6207                 enumName = "OFF";
6208                 if (strncmp(name, enumName, size) == 0) {
6209                     *value = ANDROID_DISTORTION_CORRECTION_MODE_OFF;
6210                     ret = 0;
6211                     break;
6212                 }
6213                 enumName = "FAST";
6214                 if (strncmp(name, enumName, size) == 0) {
6215                     *value = ANDROID_DISTORTION_CORRECTION_MODE_FAST;
6216                     ret = 0;
6217                     break;
6218                 }
6219                 enumName = "HIGH_QUALITY";
6220                 if (strncmp(name, enumName, size) == 0) {
6221                     *value = ANDROID_DISTORTION_CORRECTION_MODE_HIGH_QUALITY;
6222                     ret = 0;
6223                     break;
6224                 }
6225             break;
6226         }
6227         case ANDROID_DISTORTION_CORRECTION_AVAILABLE_MODES: {
6228             break;
6229         }
6230 
6231         case ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS: {
6232                 enumName = "OUTPUT";
6233                 if (strncmp(name, enumName, size) == 0) {
6234                     *value = ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_OUTPUT;
6235                     ret = 0;
6236                     break;
6237                 }
6238                 enumName = "INPUT";
6239                 if (strncmp(name, enumName, size) == 0) {
6240                     *value = ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_INPUT;
6241                     ret = 0;
6242                     break;
6243                 }
6244             break;
6245         }
6246         case ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS: {
6247             break;
6248         }
6249         case ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS: {
6250             break;
6251         }
6252         case ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION: {
6253                 enumName = "OUTPUT";
6254                 if (strncmp(name, enumName, size) == 0) {
6255                     *value = ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_OUTPUT;
6256                     ret = 0;
6257                     break;
6258                 }
6259                 enumName = "INPUT";
6260                 if (strncmp(name, enumName, size) == 0) {
6261                     *value = ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT;
6262                     ret = 0;
6263                     break;
6264                 }
6265             break;
6266         }
6267         case ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION: {
6268             break;
6269         }
6270         case ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS_MAXIMUM_RESOLUTION: {
6271             break;
6272         }
6273 
6274         case ANDROID_HEIC_INFO_SUPPORTED: {
6275                 enumName = "FALSE";
6276                 if (strncmp(name, enumName, size) == 0) {
6277                     *value = ANDROID_HEIC_INFO_SUPPORTED_FALSE;
6278                     ret = 0;
6279                     break;
6280                 }
6281                 enumName = "TRUE";
6282                 if (strncmp(name, enumName, size) == 0) {
6283                     *value = ANDROID_HEIC_INFO_SUPPORTED_TRUE;
6284                     ret = 0;
6285                     break;
6286                 }
6287             break;
6288         }
6289         case ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT: {
6290             break;
6291         }
6292 
6293     }
6294 
6295     return ret;
6296 }
6297 
6298 
6299 #define CAMERA_METADATA_ENUM_STRING_MAX_SIZE 29
6300