OSDN Git Service

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