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