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