camera_metadata_tag_info.c revision 38b8cae3876ce1c02d6da310ad93fb31d9c5a9ed
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_GEOMETRIC]            = "android.geometric",
41    [ANDROID_HOT_PIXEL]            = "android.hotPixel",
42    [ANDROID_HOT_PIXEL_INFO]       = "android.hotPixel.info",
43    [ANDROID_JPEG]                 = "android.jpeg",
44    [ANDROID_LENS]                 = "android.lens",
45    [ANDROID_LENS_INFO]            = "android.lens.info",
46    [ANDROID_NOISE_REDUCTION]      = "android.noiseReduction",
47    [ANDROID_QUIRKS]               = "android.quirks",
48    [ANDROID_REQUEST]              = "android.request",
49    [ANDROID_SCALER]               = "android.scaler",
50    [ANDROID_SENSOR]               = "android.sensor",
51    [ANDROID_SENSOR_INFO]          = "android.sensor.info",
52    [ANDROID_SHADING]              = "android.shading",
53    [ANDROID_STATISTICS]           = "android.statistics",
54    [ANDROID_STATISTICS_INFO]      = "android.statistics.info",
55    [ANDROID_TONEMAP]              = "android.tonemap",
56    [ANDROID_LED]                  = "android.led",
57    [ANDROID_INFO]                 = "android.info",
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_GEOMETRIC]            = { ANDROID_GEOMETRIC_START,
74                                       ANDROID_GEOMETRIC_END },
75    [ANDROID_HOT_PIXEL]            = { ANDROID_HOT_PIXEL_START,
76                                       ANDROID_HOT_PIXEL_END },
77    [ANDROID_HOT_PIXEL_INFO]       = { ANDROID_HOT_PIXEL_INFO_START,
78                                       ANDROID_HOT_PIXEL_INFO_END },
79    [ANDROID_JPEG]                 = { ANDROID_JPEG_START,
80                                       ANDROID_JPEG_END },
81    [ANDROID_LENS]                 = { ANDROID_LENS_START,
82                                       ANDROID_LENS_END },
83    [ANDROID_LENS_INFO]            = { ANDROID_LENS_INFO_START,
84                                       ANDROID_LENS_INFO_END },
85    [ANDROID_NOISE_REDUCTION]      = { ANDROID_NOISE_REDUCTION_START,
86                                       ANDROID_NOISE_REDUCTION_END },
87    [ANDROID_QUIRKS]               = { ANDROID_QUIRKS_START,
88                                       ANDROID_QUIRKS_END },
89    [ANDROID_REQUEST]              = { ANDROID_REQUEST_START,
90                                       ANDROID_REQUEST_END },
91    [ANDROID_SCALER]               = { ANDROID_SCALER_START,
92                                       ANDROID_SCALER_END },
93    [ANDROID_SENSOR]               = { ANDROID_SENSOR_START,
94                                       ANDROID_SENSOR_END },
95    [ANDROID_SENSOR_INFO]          = { ANDROID_SENSOR_INFO_START,
96                                       ANDROID_SENSOR_INFO_END },
97    [ANDROID_SHADING]              = { ANDROID_SHADING_START,
98                                       ANDROID_SHADING_END },
99    [ANDROID_STATISTICS]           = { ANDROID_STATISTICS_START,
100                                       ANDROID_STATISTICS_END },
101    [ANDROID_STATISTICS_INFO]      = { ANDROID_STATISTICS_INFO_START,
102                                       ANDROID_STATISTICS_INFO_END },
103    [ANDROID_TONEMAP]              = { ANDROID_TONEMAP_START,
104                                       ANDROID_TONEMAP_END },
105    [ANDROID_LED]                  = { ANDROID_LED_START,
106                                       ANDROID_LED_END },
107    [ANDROID_INFO]                 = { ANDROID_INFO_START,
108                                       ANDROID_INFO_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_FLOAT  },
117};
118
119static tag_info_t android_control[ANDROID_CONTROL_END -
120        ANDROID_CONTROL_START] = {
121    [ ANDROID_CONTROL_AE_ANTIBANDING_MODE - ANDROID_CONTROL_START ] =
122    { "aeAntibandingMode",             TYPE_BYTE   },
123    [ ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION - ANDROID_CONTROL_START ] =
124    { "aeExposureCompensation",        TYPE_INT32  },
125    [ ANDROID_CONTROL_AE_LOCK - ANDROID_CONTROL_START ] =
126    { "aeLock",                        TYPE_BYTE   },
127    [ ANDROID_CONTROL_AE_MODE - ANDROID_CONTROL_START ] =
128    { "aeMode",                        TYPE_BYTE   },
129    [ ANDROID_CONTROL_AE_REGIONS - ANDROID_CONTROL_START ] =
130    { "aeRegions",                     TYPE_INT32  },
131    [ ANDROID_CONTROL_AE_TARGET_FPS_RANGE - ANDROID_CONTROL_START ] =
132    { "aeTargetFpsRange",              TYPE_INT32  },
133    [ ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER - ANDROID_CONTROL_START ] =
134    { "aePrecaptureTrigger",           TYPE_BYTE   },
135    [ ANDROID_CONTROL_AF_MODE - ANDROID_CONTROL_START ] =
136    { "afMode",                        TYPE_BYTE   },
137    [ ANDROID_CONTROL_AF_REGIONS - ANDROID_CONTROL_START ] =
138    { "afRegions",                     TYPE_INT32  },
139    [ ANDROID_CONTROL_AF_TRIGGER - ANDROID_CONTROL_START ] =
140    { "afTrigger",                     TYPE_BYTE   },
141    [ ANDROID_CONTROL_AWB_LOCK - ANDROID_CONTROL_START ] =
142    { "awbLock",                       TYPE_BYTE   },
143    [ ANDROID_CONTROL_AWB_MODE - ANDROID_CONTROL_START ] =
144    { "awbMode",                       TYPE_BYTE   },
145    [ ANDROID_CONTROL_AWB_REGIONS - ANDROID_CONTROL_START ] =
146    { "awbRegions",                    TYPE_INT32  },
147    [ ANDROID_CONTROL_CAPTURE_INTENT - ANDROID_CONTROL_START ] =
148    { "captureIntent",                 TYPE_BYTE   },
149    [ ANDROID_CONTROL_EFFECT_MODE - ANDROID_CONTROL_START ] =
150    { "effectMode",                    TYPE_BYTE   },
151    [ ANDROID_CONTROL_MODE - ANDROID_CONTROL_START ] =
152    { "mode",                          TYPE_BYTE   },
153    [ ANDROID_CONTROL_SCENE_MODE - ANDROID_CONTROL_START ] =
154    { "sceneMode",                     TYPE_BYTE   },
155    [ ANDROID_CONTROL_VIDEO_STABILIZATION_MODE - ANDROID_CONTROL_START ] =
156    { "videoStabilizationMode",        TYPE_BYTE   },
157    [ ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES - ANDROID_CONTROL_START ] =
158    { "aeAvailableAntibandingModes",   TYPE_BYTE   },
159    [ ANDROID_CONTROL_AE_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
160    { "aeAvailableModes",              TYPE_BYTE   },
161    [ ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES - ANDROID_CONTROL_START ] =
162    { "aeAvailableTargetFpsRanges",    TYPE_INT32  },
163    [ ANDROID_CONTROL_AE_COMPENSATION_RANGE - ANDROID_CONTROL_START ] =
164    { "aeCompensationRange",           TYPE_INT32  },
165    [ ANDROID_CONTROL_AE_COMPENSATION_STEP - ANDROID_CONTROL_START ] =
166    { "aeCompensationStep",            TYPE_RATIONAL
167                },
168    [ ANDROID_CONTROL_AF_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
169    { "afAvailableModes",              TYPE_BYTE   },
170    [ ANDROID_CONTROL_AVAILABLE_EFFECTS - ANDROID_CONTROL_START ] =
171    { "availableEffects",              TYPE_BYTE   },
172    [ ANDROID_CONTROL_AVAILABLE_SCENE_MODES - ANDROID_CONTROL_START ] =
173    { "availableSceneModes",           TYPE_BYTE   },
174    [ ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES - ANDROID_CONTROL_START ] =
175    { "availableVideoStabilizationModes",
176                                        TYPE_BYTE   },
177    [ ANDROID_CONTROL_AWB_AVAILABLE_MODES - ANDROID_CONTROL_START ] =
178    { "awbAvailableModes",             TYPE_BYTE   },
179    [ ANDROID_CONTROL_MAX_REGIONS - ANDROID_CONTROL_START ] =
180    { "maxRegions",                    TYPE_INT32  },
181    [ ANDROID_CONTROL_SCENE_MODE_OVERRIDES - ANDROID_CONTROL_START ] =
182    { "sceneModeOverrides",            TYPE_BYTE   },
183    [ ANDROID_CONTROL_AE_PRECAPTURE_ID - ANDROID_CONTROL_START ] =
184    { "aePrecaptureId",                TYPE_INT32  },
185    [ ANDROID_CONTROL_AE_STATE - ANDROID_CONTROL_START ] =
186    { "aeState",                       TYPE_BYTE   },
187    [ ANDROID_CONTROL_AF_STATE - ANDROID_CONTROL_START ] =
188    { "afState",                       TYPE_BYTE   },
189    [ ANDROID_CONTROL_AF_TRIGGER_ID - ANDROID_CONTROL_START ] =
190    { "afTriggerId",                   TYPE_INT32  },
191    [ ANDROID_CONTROL_AWB_STATE - ANDROID_CONTROL_START ] =
192    { "awbState",                      TYPE_BYTE   },
193};
194
195static tag_info_t android_demosaic[ANDROID_DEMOSAIC_END -
196        ANDROID_DEMOSAIC_START] = {
197    [ ANDROID_DEMOSAIC_MODE - ANDROID_DEMOSAIC_START ] =
198    { "mode",                          TYPE_BYTE   },
199};
200
201static tag_info_t android_edge[ANDROID_EDGE_END -
202        ANDROID_EDGE_START] = {
203    [ ANDROID_EDGE_MODE - ANDROID_EDGE_START ] =
204    { "mode",                          TYPE_BYTE   },
205    [ ANDROID_EDGE_STRENGTH - ANDROID_EDGE_START ] =
206    { "strength",                      TYPE_BYTE   },
207};
208
209static tag_info_t android_flash[ANDROID_FLASH_END -
210        ANDROID_FLASH_START] = {
211    [ ANDROID_FLASH_FIRING_POWER - ANDROID_FLASH_START ] =
212    { "firingPower",                   TYPE_BYTE   },
213    [ ANDROID_FLASH_FIRING_TIME - ANDROID_FLASH_START ] =
214    { "firingTime",                    TYPE_INT64  },
215    [ ANDROID_FLASH_MODE - ANDROID_FLASH_START ] =
216    { "mode",                          TYPE_BYTE   },
217    [ ANDROID_FLASH_COLOR_TEMPERATURE - ANDROID_FLASH_START ] =
218    { "colorTemperature",              TYPE_BYTE   },
219    [ ANDROID_FLASH_MAX_ENERGY - ANDROID_FLASH_START ] =
220    { "maxEnergy",                     TYPE_BYTE   },
221    [ ANDROID_FLASH_STATE - ANDROID_FLASH_START ] =
222    { "state",                         TYPE_BYTE   },
223};
224
225static tag_info_t android_flash_info[ANDROID_FLASH_INFO_END -
226        ANDROID_FLASH_INFO_START] = {
227    [ ANDROID_FLASH_INFO_AVAILABLE - ANDROID_FLASH_INFO_START ] =
228    { "available",                     TYPE_BYTE   },
229    [ ANDROID_FLASH_INFO_CHARGE_DURATION - ANDROID_FLASH_INFO_START ] =
230    { "chargeDuration",                TYPE_INT64  },
231};
232
233static tag_info_t android_geometric[ANDROID_GEOMETRIC_END -
234        ANDROID_GEOMETRIC_START] = {
235    [ ANDROID_GEOMETRIC_MODE - ANDROID_GEOMETRIC_START ] =
236    { "mode",                          TYPE_BYTE   },
237    [ ANDROID_GEOMETRIC_STRENGTH - ANDROID_GEOMETRIC_START ] =
238    { "strength",                      TYPE_BYTE   },
239};
240
241static tag_info_t android_hot_pixel[ANDROID_HOT_PIXEL_END -
242        ANDROID_HOT_PIXEL_START] = {
243    [ ANDROID_HOT_PIXEL_MODE - ANDROID_HOT_PIXEL_START ] =
244    { "mode",                          TYPE_BYTE   },
245};
246
247static tag_info_t android_hot_pixel_info[ANDROID_HOT_PIXEL_INFO_END -
248        ANDROID_HOT_PIXEL_INFO_START] = {
249    [ ANDROID_HOT_PIXEL_INFO_MAP - ANDROID_HOT_PIXEL_INFO_START ] =
250    { "map",                           TYPE_INT32  },
251};
252
253static tag_info_t android_jpeg[ANDROID_JPEG_END -
254        ANDROID_JPEG_START] = {
255    [ ANDROID_JPEG_GPS_COORDINATES - ANDROID_JPEG_START ] =
256    { "gpsCoordinates",                TYPE_DOUBLE },
257    [ ANDROID_JPEG_GPS_PROCESSING_METHOD - ANDROID_JPEG_START ] =
258    { "gpsProcessingMethod",           TYPE_BYTE   },
259    [ ANDROID_JPEG_GPS_TIMESTAMP - ANDROID_JPEG_START ] =
260    { "gpsTimestamp",                  TYPE_INT64  },
261    [ ANDROID_JPEG_ORIENTATION - ANDROID_JPEG_START ] =
262    { "orientation",                   TYPE_INT32  },
263    [ ANDROID_JPEG_QUALITY - ANDROID_JPEG_START ] =
264    { "quality",                       TYPE_BYTE   },
265    [ ANDROID_JPEG_THUMBNAIL_QUALITY - ANDROID_JPEG_START ] =
266    { "thumbnailQuality",              TYPE_BYTE   },
267    [ ANDROID_JPEG_THUMBNAIL_SIZE - ANDROID_JPEG_START ] =
268    { "thumbnailSize",                 TYPE_INT32  },
269    [ ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES - ANDROID_JPEG_START ] =
270    { "availableThumbnailSizes",       TYPE_INT32  },
271    [ ANDROID_JPEG_MAX_SIZE - ANDROID_JPEG_START ] =
272    { "maxSize",                       TYPE_INT32  },
273    [ ANDROID_JPEG_SIZE - ANDROID_JPEG_START ] =
274    { "size",                          TYPE_INT32  },
275};
276
277static tag_info_t android_lens[ANDROID_LENS_END -
278        ANDROID_LENS_START] = {
279    [ ANDROID_LENS_APERTURE - ANDROID_LENS_START ] =
280    { "aperture",                      TYPE_FLOAT  },
281    [ ANDROID_LENS_FILTER_DENSITY - ANDROID_LENS_START ] =
282    { "filterDensity",                 TYPE_FLOAT  },
283    [ ANDROID_LENS_FOCAL_LENGTH - ANDROID_LENS_START ] =
284    { "focalLength",                   TYPE_FLOAT  },
285    [ ANDROID_LENS_FOCUS_DISTANCE - ANDROID_LENS_START ] =
286    { "focusDistance",                 TYPE_FLOAT  },
287    [ ANDROID_LENS_OPTICAL_STABILIZATION_MODE - ANDROID_LENS_START ] =
288    { "opticalStabilizationMode",      TYPE_BYTE   },
289    [ ANDROID_LENS_FACING - ANDROID_LENS_START ] =
290    { "facing",                        TYPE_BYTE   },
291    [ ANDROID_LENS_OPTICAL_AXIS_ANGLE - ANDROID_LENS_START ] =
292    { "opticalAxisAngle",              TYPE_FLOAT  },
293    [ ANDROID_LENS_POSITION - ANDROID_LENS_START ] =
294    { "position",                      TYPE_FLOAT  },
295    [ ANDROID_LENS_FOCUS_RANGE - ANDROID_LENS_START ] =
296    { "focusRange",                    TYPE_FLOAT  },
297    [ ANDROID_LENS_STATE - ANDROID_LENS_START ] =
298    { "state",                         TYPE_BYTE   },
299};
300
301static tag_info_t android_lens_info[ANDROID_LENS_INFO_END -
302        ANDROID_LENS_INFO_START] = {
303    [ ANDROID_LENS_INFO_AVAILABLE_APERTURES - ANDROID_LENS_INFO_START ] =
304    { "availableApertures",            TYPE_FLOAT  },
305    [ ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES - ANDROID_LENS_INFO_START ] =
306    { "availableFilterDensities",      TYPE_FLOAT  },
307    [ ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS - ANDROID_LENS_INFO_START ] =
308    { "availableFocalLengths",         TYPE_FLOAT  },
309    [ ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION - ANDROID_LENS_INFO_START ] =
310    { "availableOpticalStabilization", TYPE_BYTE   },
311    [ ANDROID_LENS_INFO_GEOMETRIC_CORRECTION_MAP - ANDROID_LENS_INFO_START ] =
312    { "geometricCorrectionMap",        TYPE_FLOAT  },
313    [ ANDROID_LENS_INFO_GEOMETRIC_CORRECTION_MAP_SIZE - ANDROID_LENS_INFO_START ] =
314    { "geometricCorrectionMapSize",    TYPE_INT32  },
315    [ ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE - ANDROID_LENS_INFO_START ] =
316    { "hyperfocalDistance",            TYPE_FLOAT  },
317    [ ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE - ANDROID_LENS_INFO_START ] =
318    { "minimumFocusDistance",          TYPE_FLOAT  },
319    [ ANDROID_LENS_INFO_SHADING_MAP - ANDROID_LENS_INFO_START ] =
320    { "shadingMap",                    TYPE_FLOAT  },
321    [ ANDROID_LENS_INFO_SHADING_MAP_SIZE - ANDROID_LENS_INFO_START ] =
322    { "shadingMapSize",                TYPE_INT32  },
323};
324
325static tag_info_t android_noise_reduction[ANDROID_NOISE_REDUCTION_END -
326        ANDROID_NOISE_REDUCTION_START] = {
327    [ ANDROID_NOISE_REDUCTION_MODE - ANDROID_NOISE_REDUCTION_START ] =
328    { "mode",                          TYPE_BYTE   },
329    [ ANDROID_NOISE_REDUCTION_STRENGTH - ANDROID_NOISE_REDUCTION_START ] =
330    { "strength",                      TYPE_BYTE   },
331};
332
333static tag_info_t android_quirks[ANDROID_QUIRKS_END -
334        ANDROID_QUIRKS_START] = {
335    [ ANDROID_QUIRKS_METERING_CROP_REGION - ANDROID_QUIRKS_START ] =
336    { "meteringCropRegion",            TYPE_BYTE   },
337    [ ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO - ANDROID_QUIRKS_START ] =
338    { "triggerAfWithAuto",             TYPE_BYTE   },
339    [ ANDROID_QUIRKS_USE_ZSL_FORMAT - ANDROID_QUIRKS_START ] =
340    { "useZslFormat",                  TYPE_BYTE   },
341};
342
343static tag_info_t android_request[ANDROID_REQUEST_END -
344        ANDROID_REQUEST_START] = {
345    [ ANDROID_REQUEST_FRAME_COUNT - ANDROID_REQUEST_START ] =
346    { "frameCount",                    TYPE_INT32  },
347    [ ANDROID_REQUEST_ID - ANDROID_REQUEST_START ] =
348    { "id",                            TYPE_INT32  },
349    [ ANDROID_REQUEST_INPUT_STREAMS - ANDROID_REQUEST_START ] =
350    { "inputStreams",                  TYPE_BYTE   },
351    [ ANDROID_REQUEST_METADATA_MODE - ANDROID_REQUEST_START ] =
352    { "metadataMode",                  TYPE_BYTE   },
353    [ ANDROID_REQUEST_OUTPUT_STREAMS - ANDROID_REQUEST_START ] =
354    { "outputStreams",                 TYPE_BYTE   },
355    [ ANDROID_REQUEST_TYPE - ANDROID_REQUEST_START ] =
356    { "type",                          TYPE_BYTE   },
357    [ ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS - ANDROID_REQUEST_START ] =
358    { "maxNumOutputStreams",           TYPE_INT32  },
359    [ ANDROID_REQUEST_MAX_NUM_REPROCESS_STREAMS - ANDROID_REQUEST_START ] =
360    { "maxNumReprocessStreams",        TYPE_INT32  },
361};
362
363static tag_info_t android_scaler[ANDROID_SCALER_END -
364        ANDROID_SCALER_START] = {
365    [ ANDROID_SCALER_CROP_REGION - ANDROID_SCALER_START ] =
366    { "cropRegion",                    TYPE_INT32  },
367    [ ANDROID_SCALER_AVAILABLE_FORMATS - ANDROID_SCALER_START ] =
368    { "availableFormats",              TYPE_INT32  },
369    [ ANDROID_SCALER_AVAILABLE_JPEG_MIN_DURATIONS - ANDROID_SCALER_START ] =
370    { "availableJpegMinDurations",     TYPE_INT64  },
371    [ ANDROID_SCALER_AVAILABLE_JPEG_SIZES - ANDROID_SCALER_START ] =
372    { "availableJpegSizes",            TYPE_INT32  },
373    [ ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM - ANDROID_SCALER_START ] =
374    { "availableMaxDigitalZoom",       TYPE_FLOAT  },
375    [ ANDROID_SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS - ANDROID_SCALER_START ] =
376    { "availableProcessedMinDurations",
377                                        TYPE_INT64  },
378    [ ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES - ANDROID_SCALER_START ] =
379    { "availableProcessedSizes",       TYPE_INT32  },
380    [ ANDROID_SCALER_AVAILABLE_RAW_MIN_DURATIONS - ANDROID_SCALER_START ] =
381    { "availableRawMinDurations",      TYPE_INT64  },
382    [ ANDROID_SCALER_AVAILABLE_RAW_SIZES - ANDROID_SCALER_START ] =
383    { "availableRawSizes",             TYPE_INT32  },
384};
385
386static tag_info_t android_sensor[ANDROID_SENSOR_END -
387        ANDROID_SENSOR_START] = {
388    [ ANDROID_SENSOR_EXPOSURE_TIME - ANDROID_SENSOR_START ] =
389    { "exposureTime",                  TYPE_INT64  },
390    [ ANDROID_SENSOR_FRAME_DURATION - ANDROID_SENSOR_START ] =
391    { "frameDuration",                 TYPE_INT64  },
392    [ ANDROID_SENSOR_SENSITIVITY - ANDROID_SENSOR_START ] =
393    { "sensitivity",                   TYPE_INT32  },
394    [ ANDROID_SENSOR_BASE_GAIN_FACTOR - ANDROID_SENSOR_START ] =
395    { "baseGainFactor",                TYPE_RATIONAL
396                },
397    [ ANDROID_SENSOR_BLACK_LEVEL_PATTERN - ANDROID_SENSOR_START ] =
398    { "blackLevelPattern",             TYPE_INT32  },
399    [ ANDROID_SENSOR_CALIBRATION_TRANSFORM1 - ANDROID_SENSOR_START ] =
400    { "calibrationTransform1",         TYPE_RATIONAL
401                },
402    [ ANDROID_SENSOR_CALIBRATION_TRANSFORM2 - ANDROID_SENSOR_START ] =
403    { "calibrationTransform2",         TYPE_RATIONAL
404                },
405    [ ANDROID_SENSOR_COLOR_TRANSFORM1 - ANDROID_SENSOR_START ] =
406    { "colorTransform1",               TYPE_RATIONAL
407                },
408    [ ANDROID_SENSOR_COLOR_TRANSFORM2 - ANDROID_SENSOR_START ] =
409    { "colorTransform2",               TYPE_RATIONAL
410                },
411    [ ANDROID_SENSOR_FORWARD_MATRIX1 - ANDROID_SENSOR_START ] =
412    { "forwardMatrix1",                TYPE_RATIONAL
413                },
414    [ ANDROID_SENSOR_FORWARD_MATRIX2 - ANDROID_SENSOR_START ] =
415    { "forwardMatrix2",                TYPE_RATIONAL
416                },
417    [ ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY - ANDROID_SENSOR_START ] =
418    { "maxAnalogSensitivity",          TYPE_INT32  },
419    [ ANDROID_SENSOR_NOISE_MODEL_COEFFICIENTS - ANDROID_SENSOR_START ] =
420    { "noiseModelCoefficients",        TYPE_FLOAT  },
421    [ ANDROID_SENSOR_ORIENTATION - ANDROID_SENSOR_START ] =
422    { "orientation",                   TYPE_INT32  },
423    [ ANDROID_SENSOR_REFERENCE_ILLUMINANT1 - ANDROID_SENSOR_START ] =
424    { "referenceIlluminant1",          TYPE_BYTE   },
425    [ ANDROID_SENSOR_REFERENCE_ILLUMINANT2 - ANDROID_SENSOR_START ] =
426    { "referenceIlluminant2",          TYPE_BYTE   },
427    [ ANDROID_SENSOR_TIMESTAMP - ANDROID_SENSOR_START ] =
428    { "timestamp",                     TYPE_INT64  },
429};
430
431static tag_info_t android_sensor_info[ANDROID_SENSOR_INFO_END -
432        ANDROID_SENSOR_INFO_START] = {
433    [ ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE - ANDROID_SENSOR_INFO_START ] =
434    { "activeArraySize",               TYPE_INT32  },
435    [ ANDROID_SENSOR_INFO_AVAILABLE_SENSITIVITIES - ANDROID_SENSOR_INFO_START ] =
436    { "availableSensitivities",        TYPE_INT32  },
437    [ ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT - ANDROID_SENSOR_INFO_START ] =
438    { "colorFilterArrangement",        TYPE_BYTE   },
439    [ ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE - ANDROID_SENSOR_INFO_START ] =
440    { "exposureTimeRange",             TYPE_INT64  },
441    [ ANDROID_SENSOR_INFO_MAX_FRAME_DURATION - ANDROID_SENSOR_INFO_START ] =
442    { "maxFrameDuration",              TYPE_INT64  },
443    [ ANDROID_SENSOR_INFO_PHYSICAL_SIZE - ANDROID_SENSOR_INFO_START ] =
444    { "physicalSize",                  TYPE_FLOAT  },
445    [ ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE - ANDROID_SENSOR_INFO_START ] =
446    { "pixelArraySize",                TYPE_INT32  },
447    [ ANDROID_SENSOR_INFO_WHITE_LEVEL - ANDROID_SENSOR_INFO_START ] =
448    { "whiteLevel",                    TYPE_INT32  },
449};
450
451static tag_info_t android_shading[ANDROID_SHADING_END -
452        ANDROID_SHADING_START] = {
453    [ ANDROID_SHADING_MODE - ANDROID_SHADING_START ] =
454    { "mode",                          TYPE_BYTE   },
455    [ ANDROID_SHADING_STRENGTH - ANDROID_SHADING_START ] =
456    { "strength",                      TYPE_BYTE   },
457};
458
459static tag_info_t android_statistics[ANDROID_STATISTICS_END -
460        ANDROID_STATISTICS_START] = {
461    [ ANDROID_STATISTICS_FACE_DETECT_MODE - ANDROID_STATISTICS_START ] =
462    { "faceDetectMode",                TYPE_BYTE   },
463    [ ANDROID_STATISTICS_HISTOGRAM_MODE - ANDROID_STATISTICS_START ] =
464    { "histogramMode",                 TYPE_BYTE   },
465    [ ANDROID_STATISTICS_SHARPNESS_MAP_MODE - ANDROID_STATISTICS_START ] =
466    { "sharpnessMapMode",              TYPE_BYTE   },
467    [ ANDROID_STATISTICS_FACE_IDS - ANDROID_STATISTICS_START ] =
468    { "faceIds",                       TYPE_INT32  },
469    [ ANDROID_STATISTICS_FACE_LANDMARKS - ANDROID_STATISTICS_START ] =
470    { "faceLandmarks",                 TYPE_INT32  },
471    [ ANDROID_STATISTICS_FACE_RECTANGLES - ANDROID_STATISTICS_START ] =
472    { "faceRectangles",                TYPE_INT32  },
473    [ ANDROID_STATISTICS_FACE_SCORES - ANDROID_STATISTICS_START ] =
474    { "faceScores",                    TYPE_BYTE   },
475    [ ANDROID_STATISTICS_HISTOGRAM - ANDROID_STATISTICS_START ] =
476    { "histogram",                     TYPE_INT32  },
477    [ ANDROID_STATISTICS_SHARPNESS_MAP - ANDROID_STATISTICS_START ] =
478    { "sharpnessMap",                  TYPE_INT32  },
479};
480
481static tag_info_t android_statistics_info[ANDROID_STATISTICS_INFO_END -
482        ANDROID_STATISTICS_INFO_START] = {
483    [ ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES - ANDROID_STATISTICS_INFO_START ] =
484    { "availableFaceDetectModes",      TYPE_BYTE   },
485    [ ANDROID_STATISTICS_INFO_HISTOGRAM_BUCKET_COUNT - ANDROID_STATISTICS_INFO_START ] =
486    { "histogramBucketCount",          TYPE_INT32  },
487    [ ANDROID_STATISTICS_INFO_MAX_FACE_COUNT - ANDROID_STATISTICS_INFO_START ] =
488    { "maxFaceCount",                  TYPE_INT32  },
489    [ ANDROID_STATISTICS_INFO_MAX_HISTOGRAM_COUNT - ANDROID_STATISTICS_INFO_START ] =
490    { "maxHistogramCount",             TYPE_INT32  },
491    [ ANDROID_STATISTICS_INFO_MAX_SHARPNESS_MAP_VALUE - ANDROID_STATISTICS_INFO_START ] =
492    { "maxSharpnessMapValue",          TYPE_INT32  },
493    [ ANDROID_STATISTICS_INFO_SHARPNESS_MAP_SIZE - ANDROID_STATISTICS_INFO_START ] =
494    { "sharpnessMapSize",              TYPE_INT32  },
495};
496
497static tag_info_t android_tonemap[ANDROID_TONEMAP_END -
498        ANDROID_TONEMAP_START] = {
499    [ ANDROID_TONEMAP_CURVE_BLUE - ANDROID_TONEMAP_START ] =
500    { "curveBlue",                     TYPE_FLOAT  },
501    [ ANDROID_TONEMAP_CURVE_GREEN - ANDROID_TONEMAP_START ] =
502    { "curveGreen",                    TYPE_FLOAT  },
503    [ ANDROID_TONEMAP_CURVE_RED - ANDROID_TONEMAP_START ] =
504    { "curveRed",                      TYPE_FLOAT  },
505    [ ANDROID_TONEMAP_MODE - ANDROID_TONEMAP_START ] =
506    { "mode",                          TYPE_BYTE   },
507    [ ANDROID_TONEMAP_MAX_CURVE_POINTS - ANDROID_TONEMAP_START ] =
508    { "maxCurvePoints",                TYPE_INT32  },
509};
510
511static tag_info_t android_led[ANDROID_LED_END -
512        ANDROID_LED_START] = {
513    [ ANDROID_LED_TRANSMIT - ANDROID_LED_START ] =
514    { "transmit",                      TYPE_BYTE   },
515    [ ANDROID_LED_AVAILABLE_LEDS - ANDROID_LED_START ] =
516    { "availableLeds",                 TYPE_BYTE   },
517};
518
519static tag_info_t android_info[ANDROID_INFO_END -
520        ANDROID_INFO_START] = {
521    [ ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL - ANDROID_INFO_START ] =
522    { "supportedHardwareLevel",        TYPE_BYTE   },
523};
524
525
526tag_info_t *tag_info[ANDROID_SECTION_COUNT] = {
527    android_color_correction,
528    android_control,
529    android_demosaic,
530    android_edge,
531    android_flash,
532    android_flash_info,
533    android_geometric,
534    android_hot_pixel,
535    android_hot_pixel_info,
536    android_jpeg,
537    android_lens,
538    android_lens_info,
539    android_noise_reduction,
540    android_quirks,
541    android_request,
542    android_scaler,
543    android_sensor,
544    android_sensor_info,
545    android_shading,
546    android_statistics,
547    android_statistics_info,
548    android_tonemap,
549    android_led,
550    android_info,
551};
552
553int camera_metadata_enum_snprint(uint32_t tag,
554                                 uint32_t value,
555                                 char *dst,
556                                 size_t size) {
557    const char *msg = "error: not an enum";
558    int ret = -1;
559
560    switch(tag) {
561        case ANDROID_COLOR_CORRECTION_MODE: {
562            switch (value) {
563                case ANDROID_COLOR_CORRECTION_MODE_TRANSFORM_MATRIX:
564                    msg = "TRANSFORM_MATRIX";
565                    ret = 0;
566                    break;
567                case ANDROID_COLOR_CORRECTION_MODE_FAST:
568                    msg = "FAST";
569                    ret = 0;
570                    break;
571                case ANDROID_COLOR_CORRECTION_MODE_HIGH_QUALITY:
572                    msg = "HIGH_QUALITY";
573                    ret = 0;
574                    break;
575                default:
576                    msg = "error: enum value out of range";
577            }
578            break;
579        }
580        case ANDROID_COLOR_CORRECTION_TRANSFORM: {
581            break;
582        }
583
584        case ANDROID_CONTROL_AE_ANTIBANDING_MODE: {
585            switch (value) {
586                case ANDROID_CONTROL_AE_ANTIBANDING_MODE_OFF:
587                    msg = "OFF";
588                    ret = 0;
589                    break;
590                case ANDROID_CONTROL_AE_ANTIBANDING_MODE_50HZ:
591                    msg = "50HZ";
592                    ret = 0;
593                    break;
594                case ANDROID_CONTROL_AE_ANTIBANDING_MODE_60HZ:
595                    msg = "60HZ";
596                    ret = 0;
597                    break;
598                case ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO:
599                    msg = "AUTO";
600                    ret = 0;
601                    break;
602                default:
603                    msg = "error: enum value out of range";
604            }
605            break;
606        }
607        case ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION: {
608            break;
609        }
610        case ANDROID_CONTROL_AE_LOCK: {
611            switch (value) {
612                case ANDROID_CONTROL_AE_LOCK_OFF:
613                    msg = "OFF";
614                    ret = 0;
615                    break;
616                case ANDROID_CONTROL_AE_LOCK_ON:
617                    msg = "ON";
618                    ret = 0;
619                    break;
620                default:
621                    msg = "error: enum value out of range";
622            }
623            break;
624        }
625        case ANDROID_CONTROL_AE_MODE: {
626            switch (value) {
627                case ANDROID_CONTROL_AE_MODE_OFF:
628                    msg = "OFF";
629                    ret = 0;
630                    break;
631                case ANDROID_CONTROL_AE_MODE_ON:
632                    msg = "ON";
633                    ret = 0;
634                    break;
635                case ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH:
636                    msg = "ON_AUTO_FLASH";
637                    ret = 0;
638                    break;
639                case ANDROID_CONTROL_AE_MODE_ON_ALWAYS_FLASH:
640                    msg = "ON_ALWAYS_FLASH";
641                    ret = 0;
642                    break;
643                case ANDROID_CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE:
644                    msg = "ON_AUTO_FLASH_REDEYE";
645                    ret = 0;
646                    break;
647                default:
648                    msg = "error: enum value out of range";
649            }
650            break;
651        }
652        case ANDROID_CONTROL_AE_REGIONS: {
653            break;
654        }
655        case ANDROID_CONTROL_AE_TARGET_FPS_RANGE: {
656            break;
657        }
658        case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER: {
659            switch (value) {
660                case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE:
661                    msg = "IDLE";
662                    ret = 0;
663                    break;
664                case ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_START:
665                    msg = "START";
666                    ret = 0;
667                    break;
668                default:
669                    msg = "error: enum value out of range";
670            }
671            break;
672        }
673        case ANDROID_CONTROL_AF_MODE: {
674            switch (value) {
675                case ANDROID_CONTROL_AF_MODE_OFF:
676                    msg = "OFF";
677                    ret = 0;
678                    break;
679                case ANDROID_CONTROL_AF_MODE_AUTO:
680                    msg = "AUTO";
681                    ret = 0;
682                    break;
683                case ANDROID_CONTROL_AF_MODE_MACRO:
684                    msg = "MACRO";
685                    ret = 0;
686                    break;
687                case ANDROID_CONTROL_AF_MODE_CONTINUOUS_VIDEO:
688                    msg = "CONTINUOUS_VIDEO";
689                    ret = 0;
690                    break;
691                case ANDROID_CONTROL_AF_MODE_CONTINUOUS_PICTURE:
692                    msg = "CONTINUOUS_PICTURE";
693                    ret = 0;
694                    break;
695                case ANDROID_CONTROL_AF_MODE_EDOF:
696                    msg = "EDOF";
697                    ret = 0;
698                    break;
699                default:
700                    msg = "error: enum value out of range";
701            }
702            break;
703        }
704        case ANDROID_CONTROL_AF_REGIONS: {
705            break;
706        }
707        case ANDROID_CONTROL_AF_TRIGGER: {
708            switch (value) {
709                case ANDROID_CONTROL_AF_TRIGGER_IDLE:
710                    msg = "IDLE";
711                    ret = 0;
712                    break;
713                case ANDROID_CONTROL_AF_TRIGGER_START:
714                    msg = "START";
715                    ret = 0;
716                    break;
717                case ANDROID_CONTROL_AF_TRIGGER_CANCEL:
718                    msg = "CANCEL";
719                    ret = 0;
720                    break;
721                default:
722                    msg = "error: enum value out of range";
723            }
724            break;
725        }
726        case ANDROID_CONTROL_AWB_LOCK: {
727            switch (value) {
728                case ANDROID_CONTROL_AWB_LOCK_OFF:
729                    msg = "OFF";
730                    ret = 0;
731                    break;
732                case ANDROID_CONTROL_AWB_LOCK_ON:
733                    msg = "ON";
734                    ret = 0;
735                    break;
736                default:
737                    msg = "error: enum value out of range";
738            }
739            break;
740        }
741        case ANDROID_CONTROL_AWB_MODE: {
742            switch (value) {
743                case ANDROID_CONTROL_AWB_MODE_OFF:
744                    msg = "OFF";
745                    ret = 0;
746                    break;
747                case ANDROID_CONTROL_AWB_MODE_AUTO:
748                    msg = "AUTO";
749                    ret = 0;
750                    break;
751                case ANDROID_CONTROL_AWB_MODE_INCANDESCENT:
752                    msg = "INCANDESCENT";
753                    ret = 0;
754                    break;
755                case ANDROID_CONTROL_AWB_MODE_FLUORESCENT:
756                    msg = "FLUORESCENT";
757                    ret = 0;
758                    break;
759                case ANDROID_CONTROL_AWB_MODE_WARM_FLUORESCENT:
760                    msg = "WARM_FLUORESCENT";
761                    ret = 0;
762                    break;
763                case ANDROID_CONTROL_AWB_MODE_DAYLIGHT:
764                    msg = "DAYLIGHT";
765                    ret = 0;
766                    break;
767                case ANDROID_CONTROL_AWB_MODE_CLOUDY_DAYLIGHT:
768                    msg = "CLOUDY_DAYLIGHT";
769                    ret = 0;
770                    break;
771                case ANDROID_CONTROL_AWB_MODE_TWILIGHT:
772                    msg = "TWILIGHT";
773                    ret = 0;
774                    break;
775                case ANDROID_CONTROL_AWB_MODE_SHADE:
776                    msg = "SHADE";
777                    ret = 0;
778                    break;
779                default:
780                    msg = "error: enum value out of range";
781            }
782            break;
783        }
784        case ANDROID_CONTROL_AWB_REGIONS: {
785            break;
786        }
787        case ANDROID_CONTROL_CAPTURE_INTENT: {
788            switch (value) {
789                case ANDROID_CONTROL_CAPTURE_INTENT_CUSTOM:
790                    msg = "CUSTOM";
791                    ret = 0;
792                    break;
793                case ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW:
794                    msg = "PREVIEW";
795                    ret = 0;
796                    break;
797                case ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE:
798                    msg = "STILL_CAPTURE";
799                    ret = 0;
800                    break;
801                case ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_RECORD:
802                    msg = "VIDEO_RECORD";
803                    ret = 0;
804                    break;
805                case ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT:
806                    msg = "VIDEO_SNAPSHOT";
807                    ret = 0;
808                    break;
809                case ANDROID_CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG:
810                    msg = "ZERO_SHUTTER_LAG";
811                    ret = 0;
812                    break;
813                default:
814                    msg = "error: enum value out of range";
815            }
816            break;
817        }
818        case ANDROID_CONTROL_EFFECT_MODE: {
819            switch (value) {
820                case ANDROID_CONTROL_EFFECT_MODE_OFF:
821                    msg = "OFF";
822                    ret = 0;
823                    break;
824                case ANDROID_CONTROL_EFFECT_MODE_MONO:
825                    msg = "MONO";
826                    ret = 0;
827                    break;
828                case ANDROID_CONTROL_EFFECT_MODE_NEGATIVE:
829                    msg = "NEGATIVE";
830                    ret = 0;
831                    break;
832                case ANDROID_CONTROL_EFFECT_MODE_SOLARIZE:
833                    msg = "SOLARIZE";
834                    ret = 0;
835                    break;
836                case ANDROID_CONTROL_EFFECT_MODE_SEPIA:
837                    msg = "SEPIA";
838                    ret = 0;
839                    break;
840                case ANDROID_CONTROL_EFFECT_MODE_POSTERIZE:
841                    msg = "POSTERIZE";
842                    ret = 0;
843                    break;
844                case ANDROID_CONTROL_EFFECT_MODE_WHITEBOARD:
845                    msg = "WHITEBOARD";
846                    ret = 0;
847                    break;
848                case ANDROID_CONTROL_EFFECT_MODE_BLACKBOARD:
849                    msg = "BLACKBOARD";
850                    ret = 0;
851                    break;
852                case ANDROID_CONTROL_EFFECT_MODE_AQUA:
853                    msg = "AQUA";
854                    ret = 0;
855                    break;
856                default:
857                    msg = "error: enum value out of range";
858            }
859            break;
860        }
861        case ANDROID_CONTROL_MODE: {
862            switch (value) {
863                case ANDROID_CONTROL_MODE_OFF:
864                    msg = "OFF";
865                    ret = 0;
866                    break;
867                case ANDROID_CONTROL_MODE_AUTO:
868                    msg = "AUTO";
869                    ret = 0;
870                    break;
871                case ANDROID_CONTROL_MODE_USE_SCENE_MODE:
872                    msg = "USE_SCENE_MODE";
873                    ret = 0;
874                    break;
875                default:
876                    msg = "error: enum value out of range";
877            }
878            break;
879        }
880        case ANDROID_CONTROL_SCENE_MODE: {
881            switch (value) {
882                case ANDROID_CONTROL_SCENE_MODE_UNSUPPORTED:
883                    msg = "UNSUPPORTED";
884                    ret = 0;
885                    break;
886                case ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY:
887                    msg = "FACE_PRIORITY";
888                    ret = 0;
889                    break;
890                case ANDROID_CONTROL_SCENE_MODE_ACTION:
891                    msg = "ACTION";
892                    ret = 0;
893                    break;
894                case ANDROID_CONTROL_SCENE_MODE_PORTRAIT:
895                    msg = "PORTRAIT";
896                    ret = 0;
897                    break;
898                case ANDROID_CONTROL_SCENE_MODE_LANDSCAPE:
899                    msg = "LANDSCAPE";
900                    ret = 0;
901                    break;
902                case ANDROID_CONTROL_SCENE_MODE_NIGHT:
903                    msg = "NIGHT";
904                    ret = 0;
905                    break;
906                case ANDROID_CONTROL_SCENE_MODE_NIGHT_PORTRAIT:
907                    msg = "NIGHT_PORTRAIT";
908                    ret = 0;
909                    break;
910                case ANDROID_CONTROL_SCENE_MODE_THEATRE:
911                    msg = "THEATRE";
912                    ret = 0;
913                    break;
914                case ANDROID_CONTROL_SCENE_MODE_BEACH:
915                    msg = "BEACH";
916                    ret = 0;
917                    break;
918                case ANDROID_CONTROL_SCENE_MODE_SNOW:
919                    msg = "SNOW";
920                    ret = 0;
921                    break;
922                case ANDROID_CONTROL_SCENE_MODE_SUNSET:
923                    msg = "SUNSET";
924                    ret = 0;
925                    break;
926                case ANDROID_CONTROL_SCENE_MODE_STEADYPHOTO:
927                    msg = "STEADYPHOTO";
928                    ret = 0;
929                    break;
930                case ANDROID_CONTROL_SCENE_MODE_FIREWORKS:
931                    msg = "FIREWORKS";
932                    ret = 0;
933                    break;
934                case ANDROID_CONTROL_SCENE_MODE_SPORTS:
935                    msg = "SPORTS";
936                    ret = 0;
937                    break;
938                case ANDROID_CONTROL_SCENE_MODE_PARTY:
939                    msg = "PARTY";
940                    ret = 0;
941                    break;
942                case ANDROID_CONTROL_SCENE_MODE_CANDLELIGHT:
943                    msg = "CANDLELIGHT";
944                    ret = 0;
945                    break;
946                case ANDROID_CONTROL_SCENE_MODE_BARCODE:
947                    msg = "BARCODE";
948                    ret = 0;
949                    break;
950                default:
951                    msg = "error: enum value out of range";
952            }
953            break;
954        }
955        case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE: {
956            switch (value) {
957                case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_OFF:
958                    msg = "OFF";
959                    ret = 0;
960                    break;
961                case ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_ON:
962                    msg = "ON";
963                    ret = 0;
964                    break;
965                default:
966                    msg = "error: enum value out of range";
967            }
968            break;
969        }
970        case ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES: {
971            break;
972        }
973        case ANDROID_CONTROL_AE_AVAILABLE_MODES: {
974            break;
975        }
976        case ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES: {
977            break;
978        }
979        case ANDROID_CONTROL_AE_COMPENSATION_RANGE: {
980            break;
981        }
982        case ANDROID_CONTROL_AE_COMPENSATION_STEP: {
983            break;
984        }
985        case ANDROID_CONTROL_AF_AVAILABLE_MODES: {
986            break;
987        }
988        case ANDROID_CONTROL_AVAILABLE_EFFECTS: {
989            break;
990        }
991        case ANDROID_CONTROL_AVAILABLE_SCENE_MODES: {
992            break;
993        }
994        case ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES: {
995            break;
996        }
997        case ANDROID_CONTROL_AWB_AVAILABLE_MODES: {
998            break;
999        }
1000        case ANDROID_CONTROL_MAX_REGIONS: {
1001            break;
1002        }
1003        case ANDROID_CONTROL_SCENE_MODE_OVERRIDES: {
1004            break;
1005        }
1006        case ANDROID_CONTROL_AE_PRECAPTURE_ID: {
1007            break;
1008        }
1009        case ANDROID_CONTROL_AE_STATE: {
1010            switch (value) {
1011                case ANDROID_CONTROL_AE_STATE_INACTIVE:
1012                    msg = "INACTIVE";
1013                    ret = 0;
1014                    break;
1015                case ANDROID_CONTROL_AE_STATE_SEARCHING:
1016                    msg = "SEARCHING";
1017                    ret = 0;
1018                    break;
1019                case ANDROID_CONTROL_AE_STATE_CONVERGED:
1020                    msg = "CONVERGED";
1021                    ret = 0;
1022                    break;
1023                case ANDROID_CONTROL_AE_STATE_LOCKED:
1024                    msg = "LOCKED";
1025                    ret = 0;
1026                    break;
1027                case ANDROID_CONTROL_AE_STATE_FLASH_REQUIRED:
1028                    msg = "FLASH_REQUIRED";
1029                    ret = 0;
1030                    break;
1031                case ANDROID_CONTROL_AE_STATE_PRECAPTURE:
1032                    msg = "PRECAPTURE";
1033                    ret = 0;
1034                    break;
1035                default:
1036                    msg = "error: enum value out of range";
1037            }
1038            break;
1039        }
1040        case ANDROID_CONTROL_AF_STATE: {
1041            switch (value) {
1042                case ANDROID_CONTROL_AF_STATE_INACTIVE:
1043                    msg = "INACTIVE";
1044                    ret = 0;
1045                    break;
1046                case ANDROID_CONTROL_AF_STATE_PASSIVE_SCAN:
1047                    msg = "PASSIVE_SCAN";
1048                    ret = 0;
1049                    break;
1050                case ANDROID_CONTROL_AF_STATE_PASSIVE_FOCUSED:
1051                    msg = "PASSIVE_FOCUSED";
1052                    ret = 0;
1053                    break;
1054                case ANDROID_CONTROL_AF_STATE_ACTIVE_SCAN:
1055                    msg = "ACTIVE_SCAN";
1056                    ret = 0;
1057                    break;
1058                case ANDROID_CONTROL_AF_STATE_FOCUSED_LOCKED:
1059                    msg = "FOCUSED_LOCKED";
1060                    ret = 0;
1061                    break;
1062                case ANDROID_CONTROL_AF_STATE_NOT_FOCUSED_LOCKED:
1063                    msg = "NOT_FOCUSED_LOCKED";
1064                    ret = 0;
1065                    break;
1066                default:
1067                    msg = "error: enum value out of range";
1068            }
1069            break;
1070        }
1071        case ANDROID_CONTROL_AF_TRIGGER_ID: {
1072            break;
1073        }
1074        case ANDROID_CONTROL_AWB_STATE: {
1075            switch (value) {
1076                case ANDROID_CONTROL_AWB_STATE_INACTIVE:
1077                    msg = "INACTIVE";
1078                    ret = 0;
1079                    break;
1080                case ANDROID_CONTROL_AWB_STATE_SEARCHING:
1081                    msg = "SEARCHING";
1082                    ret = 0;
1083                    break;
1084                case ANDROID_CONTROL_AWB_STATE_CONVERGED:
1085                    msg = "CONVERGED";
1086                    ret = 0;
1087                    break;
1088                case ANDROID_CONTROL_AWB_STATE_LOCKED:
1089                    msg = "LOCKED";
1090                    ret = 0;
1091                    break;
1092                default:
1093                    msg = "error: enum value out of range";
1094            }
1095            break;
1096        }
1097
1098        case ANDROID_DEMOSAIC_MODE: {
1099            switch (value) {
1100                case ANDROID_DEMOSAIC_MODE_FAST:
1101                    msg = "FAST";
1102                    ret = 0;
1103                    break;
1104                case ANDROID_DEMOSAIC_MODE_HIGH_QUALITY:
1105                    msg = "HIGH_QUALITY";
1106                    ret = 0;
1107                    break;
1108                default:
1109                    msg = "error: enum value out of range";
1110            }
1111            break;
1112        }
1113
1114        case ANDROID_EDGE_MODE: {
1115            switch (value) {
1116                case ANDROID_EDGE_MODE_OFF:
1117                    msg = "OFF";
1118                    ret = 0;
1119                    break;
1120                case ANDROID_EDGE_MODE_FAST:
1121                    msg = "FAST";
1122                    ret = 0;
1123                    break;
1124                case ANDROID_EDGE_MODE_HIGH_QUALITY:
1125                    msg = "HIGH_QUALITY";
1126                    ret = 0;
1127                    break;
1128                default:
1129                    msg = "error: enum value out of range";
1130            }
1131            break;
1132        }
1133        case ANDROID_EDGE_STRENGTH: {
1134            break;
1135        }
1136
1137        case ANDROID_FLASH_FIRING_POWER: {
1138            break;
1139        }
1140        case ANDROID_FLASH_FIRING_TIME: {
1141            break;
1142        }
1143        case ANDROID_FLASH_MODE: {
1144            switch (value) {
1145                case ANDROID_FLASH_MODE_OFF:
1146                    msg = "OFF";
1147                    ret = 0;
1148                    break;
1149                case ANDROID_FLASH_MODE_SINGLE:
1150                    msg = "SINGLE";
1151                    ret = 0;
1152                    break;
1153                case ANDROID_FLASH_MODE_TORCH:
1154                    msg = "TORCH";
1155                    ret = 0;
1156                    break;
1157                default:
1158                    msg = "error: enum value out of range";
1159            }
1160            break;
1161        }
1162        case ANDROID_FLASH_COLOR_TEMPERATURE: {
1163            break;
1164        }
1165        case ANDROID_FLASH_MAX_ENERGY: {
1166            break;
1167        }
1168        case ANDROID_FLASH_STATE: {
1169            switch (value) {
1170                case ANDROID_FLASH_STATE_UNAVAILABLE:
1171                    msg = "UNAVAILABLE";
1172                    ret = 0;
1173                    break;
1174                case ANDROID_FLASH_STATE_CHARGING:
1175                    msg = "CHARGING";
1176                    ret = 0;
1177                    break;
1178                case ANDROID_FLASH_STATE_READY:
1179                    msg = "READY";
1180                    ret = 0;
1181                    break;
1182                case ANDROID_FLASH_STATE_FIRED:
1183                    msg = "FIRED";
1184                    ret = 0;
1185                    break;
1186                default:
1187                    msg = "error: enum value out of range";
1188            }
1189            break;
1190        }
1191
1192        case ANDROID_FLASH_INFO_AVAILABLE: {
1193            break;
1194        }
1195        case ANDROID_FLASH_INFO_CHARGE_DURATION: {
1196            break;
1197        }
1198
1199        case ANDROID_GEOMETRIC_MODE: {
1200            switch (value) {
1201                case ANDROID_GEOMETRIC_MODE_OFF:
1202                    msg = "OFF";
1203                    ret = 0;
1204                    break;
1205                case ANDROID_GEOMETRIC_MODE_FAST:
1206                    msg = "FAST";
1207                    ret = 0;
1208                    break;
1209                case ANDROID_GEOMETRIC_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_GEOMETRIC_STRENGTH: {
1219            break;
1220        }
1221
1222        case ANDROID_HOT_PIXEL_MODE: {
1223            switch (value) {
1224                case ANDROID_HOT_PIXEL_MODE_OFF:
1225                    msg = "OFF";
1226                    ret = 0;
1227                    break;
1228                case ANDROID_HOT_PIXEL_MODE_FAST:
1229                    msg = "FAST";
1230                    ret = 0;
1231                    break;
1232                case ANDROID_HOT_PIXEL_MODE_HIGH_QUALITY:
1233                    msg = "HIGH_QUALITY";
1234                    ret = 0;
1235                    break;
1236                default:
1237                    msg = "error: enum value out of range";
1238            }
1239            break;
1240        }
1241
1242        case ANDROID_HOT_PIXEL_INFO_MAP: {
1243            break;
1244        }
1245
1246        case ANDROID_JPEG_GPS_COORDINATES: {
1247            break;
1248        }
1249        case ANDROID_JPEG_GPS_PROCESSING_METHOD: {
1250            break;
1251        }
1252        case ANDROID_JPEG_GPS_TIMESTAMP: {
1253            break;
1254        }
1255        case ANDROID_JPEG_ORIENTATION: {
1256            break;
1257        }
1258        case ANDROID_JPEG_QUALITY: {
1259            break;
1260        }
1261        case ANDROID_JPEG_THUMBNAIL_QUALITY: {
1262            break;
1263        }
1264        case ANDROID_JPEG_THUMBNAIL_SIZE: {
1265            break;
1266        }
1267        case ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES: {
1268            break;
1269        }
1270        case ANDROID_JPEG_MAX_SIZE: {
1271            break;
1272        }
1273        case ANDROID_JPEG_SIZE: {
1274            break;
1275        }
1276
1277        case ANDROID_LENS_APERTURE: {
1278            break;
1279        }
1280        case ANDROID_LENS_FILTER_DENSITY: {
1281            break;
1282        }
1283        case ANDROID_LENS_FOCAL_LENGTH: {
1284            break;
1285        }
1286        case ANDROID_LENS_FOCUS_DISTANCE: {
1287            break;
1288        }
1289        case ANDROID_LENS_OPTICAL_STABILIZATION_MODE: {
1290            switch (value) {
1291                case ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF:
1292                    msg = "OFF";
1293                    ret = 0;
1294                    break;
1295                case ANDROID_LENS_OPTICAL_STABILIZATION_MODE_ON:
1296                    msg = "ON";
1297                    ret = 0;
1298                    break;
1299                default:
1300                    msg = "error: enum value out of range";
1301            }
1302            break;
1303        }
1304        case ANDROID_LENS_FACING: {
1305            switch (value) {
1306                case ANDROID_LENS_FACING_FRONT:
1307                    msg = "FRONT";
1308                    ret = 0;
1309                    break;
1310                case ANDROID_LENS_FACING_BACK:
1311                    msg = "BACK";
1312                    ret = 0;
1313                    break;
1314                default:
1315                    msg = "error: enum value out of range";
1316            }
1317            break;
1318        }
1319        case ANDROID_LENS_OPTICAL_AXIS_ANGLE: {
1320            break;
1321        }
1322        case ANDROID_LENS_POSITION: {
1323            break;
1324        }
1325        case ANDROID_LENS_FOCUS_RANGE: {
1326            break;
1327        }
1328        case ANDROID_LENS_STATE: {
1329            switch (value) {
1330                case ANDROID_LENS_STATE_STATIONARY:
1331                    msg = "STATIONARY";
1332                    ret = 0;
1333                    break;
1334                default:
1335                    msg = "error: enum value out of range";
1336            }
1337            break;
1338        }
1339
1340        case ANDROID_LENS_INFO_AVAILABLE_APERTURES: {
1341            break;
1342        }
1343        case ANDROID_LENS_INFO_AVAILABLE_FILTER_DENSITIES: {
1344            break;
1345        }
1346        case ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS: {
1347            break;
1348        }
1349        case ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION: {
1350            break;
1351        }
1352        case ANDROID_LENS_INFO_GEOMETRIC_CORRECTION_MAP: {
1353            break;
1354        }
1355        case ANDROID_LENS_INFO_GEOMETRIC_CORRECTION_MAP_SIZE: {
1356            break;
1357        }
1358        case ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE: {
1359            break;
1360        }
1361        case ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE: {
1362            break;
1363        }
1364        case ANDROID_LENS_INFO_SHADING_MAP: {
1365            break;
1366        }
1367        case ANDROID_LENS_INFO_SHADING_MAP_SIZE: {
1368            break;
1369        }
1370
1371        case ANDROID_NOISE_REDUCTION_MODE: {
1372            switch (value) {
1373                case ANDROID_NOISE_REDUCTION_MODE_OFF:
1374                    msg = "OFF";
1375                    ret = 0;
1376                    break;
1377                case ANDROID_NOISE_REDUCTION_MODE_FAST:
1378                    msg = "FAST";
1379                    ret = 0;
1380                    break;
1381                case ANDROID_NOISE_REDUCTION_MODE_HIGH_QUALITY:
1382                    msg = "HIGH_QUALITY";
1383                    ret = 0;
1384                    break;
1385                default:
1386                    msg = "error: enum value out of range";
1387            }
1388            break;
1389        }
1390        case ANDROID_NOISE_REDUCTION_STRENGTH: {
1391            break;
1392        }
1393
1394        case ANDROID_QUIRKS_METERING_CROP_REGION: {
1395            break;
1396        }
1397        case ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO: {
1398            break;
1399        }
1400        case ANDROID_QUIRKS_USE_ZSL_FORMAT: {
1401            break;
1402        }
1403
1404        case ANDROID_REQUEST_FRAME_COUNT: {
1405            break;
1406        }
1407        case ANDROID_REQUEST_ID: {
1408            break;
1409        }
1410        case ANDROID_REQUEST_INPUT_STREAMS: {
1411            break;
1412        }
1413        case ANDROID_REQUEST_METADATA_MODE: {
1414            switch (value) {
1415                case ANDROID_REQUEST_METADATA_MODE_NONE:
1416                    msg = "NONE";
1417                    ret = 0;
1418                    break;
1419                case ANDROID_REQUEST_METADATA_MODE_FULL:
1420                    msg = "FULL";
1421                    ret = 0;
1422                    break;
1423                default:
1424                    msg = "error: enum value out of range";
1425            }
1426            break;
1427        }
1428        case ANDROID_REQUEST_OUTPUT_STREAMS: {
1429            break;
1430        }
1431        case ANDROID_REQUEST_TYPE: {
1432            switch (value) {
1433                case ANDROID_REQUEST_TYPE_CAPTURE:
1434                    msg = "CAPTURE";
1435                    ret = 0;
1436                    break;
1437                case ANDROID_REQUEST_TYPE_REPROCESS:
1438                    msg = "REPROCESS";
1439                    ret = 0;
1440                    break;
1441                default:
1442                    msg = "error: enum value out of range";
1443            }
1444            break;
1445        }
1446        case ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS: {
1447            break;
1448        }
1449        case ANDROID_REQUEST_MAX_NUM_REPROCESS_STREAMS: {
1450            break;
1451        }
1452
1453        case ANDROID_SCALER_CROP_REGION: {
1454            break;
1455        }
1456        case ANDROID_SCALER_AVAILABLE_FORMATS: {
1457            switch (value) {
1458                case ANDROID_SCALER_AVAILABLE_FORMATS_RAW_SENSOR:
1459                    msg = "RAW_SENSOR";
1460                    ret = 0;
1461                    break;
1462                case ANDROID_SCALER_AVAILABLE_FORMATS_YV12:
1463                    msg = "YV12";
1464                    ret = 0;
1465                    break;
1466                case ANDROID_SCALER_AVAILABLE_FORMATS_YCrCb_420_SP:
1467                    msg = "YCrCb_420_SP";
1468                    ret = 0;
1469                    break;
1470                case ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED:
1471                    msg = "IMPLEMENTATION_DEFINED";
1472                    ret = 0;
1473                    break;
1474                case ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888:
1475                    msg = "YCbCr_420_888";
1476                    ret = 0;
1477                    break;
1478                case ANDROID_SCALER_AVAILABLE_FORMATS_BLOB:
1479                    msg = "BLOB";
1480                    ret = 0;
1481                    break;
1482                default:
1483                    msg = "error: enum value out of range";
1484            }
1485            break;
1486        }
1487        case ANDROID_SCALER_AVAILABLE_JPEG_MIN_DURATIONS: {
1488            break;
1489        }
1490        case ANDROID_SCALER_AVAILABLE_JPEG_SIZES: {
1491            break;
1492        }
1493        case ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM: {
1494            break;
1495        }
1496        case ANDROID_SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS: {
1497            break;
1498        }
1499        case ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES: {
1500            break;
1501        }
1502        case ANDROID_SCALER_AVAILABLE_RAW_MIN_DURATIONS: {
1503            break;
1504        }
1505        case ANDROID_SCALER_AVAILABLE_RAW_SIZES: {
1506            break;
1507        }
1508
1509        case ANDROID_SENSOR_EXPOSURE_TIME: {
1510            break;
1511        }
1512        case ANDROID_SENSOR_FRAME_DURATION: {
1513            break;
1514        }
1515        case ANDROID_SENSOR_SENSITIVITY: {
1516            break;
1517        }
1518        case ANDROID_SENSOR_BASE_GAIN_FACTOR: {
1519            break;
1520        }
1521        case ANDROID_SENSOR_BLACK_LEVEL_PATTERN: {
1522            break;
1523        }
1524        case ANDROID_SENSOR_CALIBRATION_TRANSFORM1: {
1525            break;
1526        }
1527        case ANDROID_SENSOR_CALIBRATION_TRANSFORM2: {
1528            break;
1529        }
1530        case ANDROID_SENSOR_COLOR_TRANSFORM1: {
1531            break;
1532        }
1533        case ANDROID_SENSOR_COLOR_TRANSFORM2: {
1534            break;
1535        }
1536        case ANDROID_SENSOR_FORWARD_MATRIX1: {
1537            break;
1538        }
1539        case ANDROID_SENSOR_FORWARD_MATRIX2: {
1540            break;
1541        }
1542        case ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY: {
1543            break;
1544        }
1545        case ANDROID_SENSOR_NOISE_MODEL_COEFFICIENTS: {
1546            break;
1547        }
1548        case ANDROID_SENSOR_ORIENTATION: {
1549            break;
1550        }
1551        case ANDROID_SENSOR_REFERENCE_ILLUMINANT1: {
1552            switch (value) {
1553                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT:
1554                    msg = "DAYLIGHT";
1555                    ret = 0;
1556                    break;
1557                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FLUORESCENT:
1558                    msg = "FLUORESCENT";
1559                    ret = 0;
1560                    break;
1561                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_TUNGSTEN:
1562                    msg = "TUNGSTEN";
1563                    ret = 0;
1564                    break;
1565                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FLASH:
1566                    msg = "FLASH";
1567                    ret = 0;
1568                    break;
1569                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_FINE_WEATHER:
1570                    msg = "FINE_WEATHER";
1571                    ret = 0;
1572                    break;
1573                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_CLOUDY_WEATHER:
1574                    msg = "CLOUDY_WEATHER";
1575                    ret = 0;
1576                    break;
1577                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_SHADE:
1578                    msg = "SHADE";
1579                    ret = 0;
1580                    break;
1581                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT_FLUORESCENT:
1582                    msg = "DAYLIGHT_FLUORESCENT";
1583                    ret = 0;
1584                    break;
1585                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_DAY_WHITE_FLUORESCENT:
1586                    msg = "DAY_WHITE_FLUORESCENT";
1587                    ret = 0;
1588                    break;
1589                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_COOL_WHITE_FLUORESCENT:
1590                    msg = "COOL_WHITE_FLUORESCENT";
1591                    ret = 0;
1592                    break;
1593                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_WHITE_FLUORESCENT:
1594                    msg = "WHITE_FLUORESCENT";
1595                    ret = 0;
1596                    break;
1597                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_A:
1598                    msg = "STANDARD_A";
1599                    ret = 0;
1600                    break;
1601                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_B:
1602                    msg = "STANDARD_B";
1603                    ret = 0;
1604                    break;
1605                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_C:
1606                    msg = "STANDARD_C";
1607                    ret = 0;
1608                    break;
1609                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D55:
1610                    msg = "D55";
1611                    ret = 0;
1612                    break;
1613                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D65:
1614                    msg = "D65";
1615                    ret = 0;
1616                    break;
1617                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D75:
1618                    msg = "D75";
1619                    ret = 0;
1620                    break;
1621                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_D50:
1622                    msg = "D50";
1623                    ret = 0;
1624                    break;
1625                case ANDROID_SENSOR_REFERENCE_ILLUMINANT1_ISO_STUDIO_TUNGSTEN:
1626                    msg = "ISO_STUDIO_TUNGSTEN";
1627                    ret = 0;
1628                    break;
1629                default:
1630                    msg = "error: enum value out of range";
1631            }
1632            break;
1633        }
1634        case ANDROID_SENSOR_REFERENCE_ILLUMINANT2: {
1635            break;
1636        }
1637        case ANDROID_SENSOR_TIMESTAMP: {
1638            break;
1639        }
1640
1641        case ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE: {
1642            break;
1643        }
1644        case ANDROID_SENSOR_INFO_AVAILABLE_SENSITIVITIES: {
1645            break;
1646        }
1647        case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT: {
1648            switch (value) {
1649                case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB:
1650                    msg = "RGGB";
1651                    ret = 0;
1652                    break;
1653                case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG:
1654                    msg = "GRBG";
1655                    ret = 0;
1656                    break;
1657                case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG:
1658                    msg = "GBRG";
1659                    ret = 0;
1660                    break;
1661                case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_BGGR:
1662                    msg = "BGGR";
1663                    ret = 0;
1664                    break;
1665                case ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGB:
1666                    msg = "RGB";
1667                    ret = 0;
1668                    break;
1669                default:
1670                    msg = "error: enum value out of range";
1671            }
1672            break;
1673        }
1674        case ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE: {
1675            break;
1676        }
1677        case ANDROID_SENSOR_INFO_MAX_FRAME_DURATION: {
1678            break;
1679        }
1680        case ANDROID_SENSOR_INFO_PHYSICAL_SIZE: {
1681            break;
1682        }
1683        case ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE: {
1684            break;
1685        }
1686        case ANDROID_SENSOR_INFO_WHITE_LEVEL: {
1687            break;
1688        }
1689
1690        case ANDROID_SHADING_MODE: {
1691            switch (value) {
1692                case ANDROID_SHADING_MODE_OFF:
1693                    msg = "OFF";
1694                    ret = 0;
1695                    break;
1696                case ANDROID_SHADING_MODE_FAST:
1697                    msg = "FAST";
1698                    ret = 0;
1699                    break;
1700                case ANDROID_SHADING_MODE_HIGH_QUALITY:
1701                    msg = "HIGH_QUALITY";
1702                    ret = 0;
1703                    break;
1704                default:
1705                    msg = "error: enum value out of range";
1706            }
1707            break;
1708        }
1709        case ANDROID_SHADING_STRENGTH: {
1710            break;
1711        }
1712
1713        case ANDROID_STATISTICS_FACE_DETECT_MODE: {
1714            switch (value) {
1715                case ANDROID_STATISTICS_FACE_DETECT_MODE_OFF:
1716                    msg = "OFF";
1717                    ret = 0;
1718                    break;
1719                case ANDROID_STATISTICS_FACE_DETECT_MODE_SIMPLE:
1720                    msg = "SIMPLE";
1721                    ret = 0;
1722                    break;
1723                case ANDROID_STATISTICS_FACE_DETECT_MODE_FULL:
1724                    msg = "FULL";
1725                    ret = 0;
1726                    break;
1727                default:
1728                    msg = "error: enum value out of range";
1729            }
1730            break;
1731        }
1732        case ANDROID_STATISTICS_HISTOGRAM_MODE: {
1733            switch (value) {
1734                case ANDROID_STATISTICS_HISTOGRAM_MODE_OFF:
1735                    msg = "OFF";
1736                    ret = 0;
1737                    break;
1738                case ANDROID_STATISTICS_HISTOGRAM_MODE_ON:
1739                    msg = "ON";
1740                    ret = 0;
1741                    break;
1742                default:
1743                    msg = "error: enum value out of range";
1744            }
1745            break;
1746        }
1747        case ANDROID_STATISTICS_SHARPNESS_MAP_MODE: {
1748            switch (value) {
1749                case ANDROID_STATISTICS_SHARPNESS_MAP_MODE_OFF:
1750                    msg = "OFF";
1751                    ret = 0;
1752                    break;
1753                case ANDROID_STATISTICS_SHARPNESS_MAP_MODE_ON:
1754                    msg = "ON";
1755                    ret = 0;
1756                    break;
1757                default:
1758                    msg = "error: enum value out of range";
1759            }
1760            break;
1761        }
1762        case ANDROID_STATISTICS_FACE_IDS: {
1763            break;
1764        }
1765        case ANDROID_STATISTICS_FACE_LANDMARKS: {
1766            break;
1767        }
1768        case ANDROID_STATISTICS_FACE_RECTANGLES: {
1769            break;
1770        }
1771        case ANDROID_STATISTICS_FACE_SCORES: {
1772            break;
1773        }
1774        case ANDROID_STATISTICS_HISTOGRAM: {
1775            break;
1776        }
1777        case ANDROID_STATISTICS_SHARPNESS_MAP: {
1778            break;
1779        }
1780
1781        case ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES: {
1782            break;
1783        }
1784        case ANDROID_STATISTICS_INFO_HISTOGRAM_BUCKET_COUNT: {
1785            break;
1786        }
1787        case ANDROID_STATISTICS_INFO_MAX_FACE_COUNT: {
1788            break;
1789        }
1790        case ANDROID_STATISTICS_INFO_MAX_HISTOGRAM_COUNT: {
1791            break;
1792        }
1793        case ANDROID_STATISTICS_INFO_MAX_SHARPNESS_MAP_VALUE: {
1794            break;
1795        }
1796        case ANDROID_STATISTICS_INFO_SHARPNESS_MAP_SIZE: {
1797            break;
1798        }
1799
1800        case ANDROID_TONEMAP_CURVE_BLUE: {
1801            break;
1802        }
1803        case ANDROID_TONEMAP_CURVE_GREEN: {
1804            break;
1805        }
1806        case ANDROID_TONEMAP_CURVE_RED: {
1807            break;
1808        }
1809        case ANDROID_TONEMAP_MODE: {
1810            switch (value) {
1811                case ANDROID_TONEMAP_MODE_CONTRAST_CURVE:
1812                    msg = "CONTRAST_CURVE";
1813                    ret = 0;
1814                    break;
1815                case ANDROID_TONEMAP_MODE_FAST:
1816                    msg = "FAST";
1817                    ret = 0;
1818                    break;
1819                case ANDROID_TONEMAP_MODE_HIGH_QUALITY:
1820                    msg = "HIGH_QUALITY";
1821                    ret = 0;
1822                    break;
1823                default:
1824                    msg = "error: enum value out of range";
1825            }
1826            break;
1827        }
1828        case ANDROID_TONEMAP_MAX_CURVE_POINTS: {
1829            break;
1830        }
1831
1832        case ANDROID_LED_TRANSMIT: {
1833            switch (value) {
1834                case ANDROID_LED_TRANSMIT_OFF:
1835                    msg = "OFF";
1836                    ret = 0;
1837                    break;
1838                case ANDROID_LED_TRANSMIT_ON:
1839                    msg = "ON";
1840                    ret = 0;
1841                    break;
1842                default:
1843                    msg = "error: enum value out of range";
1844            }
1845            break;
1846        }
1847        case ANDROID_LED_AVAILABLE_LEDS: {
1848            switch (value) {
1849                case ANDROID_LED_AVAILABLE_LEDS_TRANSMIT:
1850                    msg = "TRANSMIT";
1851                    ret = 0;
1852                    break;
1853                default:
1854                    msg = "error: enum value out of range";
1855            }
1856            break;
1857        }
1858
1859        case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL: {
1860            switch (value) {
1861                case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED:
1862                    msg = "LIMITED";
1863                    ret = 0;
1864                    break;
1865                case ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_FULL:
1866                    msg = "FULL";
1867                    ret = 0;
1868                    break;
1869                default:
1870                    msg = "error: enum value out of range";
1871            }
1872            break;
1873        }
1874
1875    }
1876
1877    strncpy(dst, msg, size - 1);
1878    dst[size - 1] = '\0';
1879
1880    return ret;
1881}
1882
1883
1884#define CAMERA_METADATA_ENUM_STRING_MAX_SIZE 23
1885