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