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 27const char *camera_metadata_section_names[ANDROID_SECTION_COUNT] = { 28 [ANDROID_REQUEST] = "android.request", 29 [ANDROID_LENS] = "android.lens", 30 [ANDROID_LENS_INFO] = "android.lens.info", 31 [ANDROID_SENSOR] = "android.sensor", 32 [ANDROID_SENSOR_INFO] = "android.sensor.info", 33 [ANDROID_FLASH] = "android.flash", 34 [ANDROID_FLASH_INFO] = "android.flash.info", 35 [ANDROID_HOT_PIXEL] = "android.hotPixel", 36 [ANDROID_HOT_PIXEL_INFO] = "android.hotPixel.info", 37 [ANDROID_DEMOSAIC] = "android.demosaic", 38 [ANDROID_DEMOSAIC_INFO] = "android.demosaic.info", 39 [ANDROID_NOISE] = "android.noiseReduction", 40 [ANDROID_NOISE_INFO] = "android.noiseReduction.info", 41 [ANDROID_SHADING] = "android.shadingCorrection", 42 [ANDROID_SHADING_INFO] = "android.shadingCorrection.info", 43 [ANDROID_GEOMETRIC] = "android.geometricCorrection", 44 [ANDROID_GEOMETRIC_INFO] = "android.geometricCorrection.info", 45 [ANDROID_COLOR] = "android.colorCorrection", 46 [ANDROID_COLOR_INFO] = "android.colorCorrection.info", 47 [ANDROID_TONEMAP] = "android.tonemap", 48 [ANDROID_TONEMAP_INFO] = "android.tonemap.info", 49 [ANDROID_EDGE] = "android.edge", 50 [ANDROID_EDGE_INFO] = "android.edge.info", 51 [ANDROID_SCALER] = "android.scaler", 52 [ANDROID_SCALER_INFO] = "android.scaler.info", 53 [ANDROID_JPEG] = "android.jpeg", 54 [ANDROID_JPEG_INFO] = "android.jpeg.info", 55 [ANDROID_STATS] = "android.statistics", 56 [ANDROID_STATS_INFO] = "android.statistics.info", 57 [ANDROID_CONTROL] = "android.control", 58 [ANDROID_CONTROL_INFO] = "android.control.info", 59 [ANDROID_QUIRKS_INFO] = "android.quirks.info" 60}; 61 62unsigned int camera_metadata_section_bounds[ANDROID_SECTION_COUNT][2] = { 63 [ANDROID_REQUEST] = { ANDROID_REQUEST_START, 64 ANDROID_REQUEST_END }, 65 [ANDROID_LENS] = { ANDROID_LENS_START, 66 ANDROID_LENS_END }, 67 [ANDROID_LENS_INFO] = { ANDROID_LENS_INFO_START, 68 ANDROID_LENS_INFO_END }, 69 [ANDROID_SENSOR] = { ANDROID_SENSOR_START, 70 ANDROID_SENSOR_END }, 71 [ANDROID_SENSOR_INFO] = { ANDROID_SENSOR_INFO_START, 72 ANDROID_SENSOR_INFO_END }, 73 [ANDROID_FLASH] = { ANDROID_FLASH_START, 74 ANDROID_FLASH_END }, 75 [ANDROID_FLASH_INFO] = { ANDROID_FLASH_INFO_START, 76 ANDROID_FLASH_INFO_END }, 77 [ANDROID_HOT_PIXEL] = { ANDROID_HOT_PIXEL_START, 78 ANDROID_HOT_PIXEL_END }, 79 [ANDROID_HOT_PIXEL_INFO] = { ANDROID_HOT_PIXEL_INFO_START, 80 ANDROID_HOT_PIXEL_INFO_END }, 81 [ANDROID_DEMOSAIC] = { ANDROID_DEMOSAIC_START, 82 ANDROID_DEMOSAIC_END }, 83 [ANDROID_DEMOSAIC_INFO] = { ANDROID_DEMOSAIC_INFO_START, 84 ANDROID_DEMOSAIC_INFO_END }, 85 [ANDROID_NOISE] = { ANDROID_NOISE_START, 86 ANDROID_NOISE_END }, 87 [ANDROID_NOISE_INFO] = { ANDROID_NOISE_INFO_START, 88 ANDROID_NOISE_INFO_END }, 89 [ANDROID_SHADING] = { ANDROID_SHADING_START, 90 ANDROID_SHADING_END }, 91 [ANDROID_SHADING_INFO] = { ANDROID_SHADING_INFO_START, 92 ANDROID_SHADING_INFO_END }, 93 [ANDROID_GEOMETRIC] = { ANDROID_GEOMETRIC_START, 94 ANDROID_GEOMETRIC_END }, 95 [ANDROID_GEOMETRIC_INFO] = { ANDROID_GEOMETRIC_INFO_START, 96 ANDROID_GEOMETRIC_INFO_END }, 97 [ANDROID_COLOR] = { ANDROID_COLOR_START, 98 ANDROID_COLOR_END }, 99 [ANDROID_COLOR_INFO] = { ANDROID_COLOR_INFO_START, 100 ANDROID_COLOR_INFO_END }, 101 [ANDROID_TONEMAP] = { ANDROID_TONEMAP_START, 102 ANDROID_TONEMAP_END }, 103 [ANDROID_TONEMAP_INFO] = { ANDROID_TONEMAP_INFO_START, 104 ANDROID_TONEMAP_INFO_END }, 105 [ANDROID_EDGE] = { ANDROID_EDGE_START, 106 ANDROID_EDGE_END }, 107 [ANDROID_EDGE_INFO] = { ANDROID_EDGE_INFO_START, 108 ANDROID_EDGE_INFO_END }, 109 [ANDROID_SCALER] = { ANDROID_SCALER_START, 110 ANDROID_SCALER_END }, 111 [ANDROID_SCALER_INFO] = { ANDROID_SCALER_INFO_START, 112 ANDROID_SCALER_INFO_END }, 113 [ANDROID_JPEG] = { ANDROID_JPEG_START, 114 ANDROID_JPEG_END }, 115 [ANDROID_JPEG_INFO] = { ANDROID_JPEG_INFO_START, 116 ANDROID_JPEG_INFO_END }, 117 [ANDROID_STATS] = { ANDROID_STATS_START, 118 ANDROID_STATS_END }, 119 [ANDROID_STATS_INFO] = { ANDROID_STATS_INFO_START, 120 ANDROID_STATS_INFO_END }, 121 [ANDROID_CONTROL] = { ANDROID_CONTROL_START, 122 ANDROID_CONTROL_END }, 123 [ANDROID_CONTROL_INFO] = { ANDROID_CONTROL_INFO_START, 124 ANDROID_CONTROL_INFO_END }, 125 [ANDROID_QUIRKS_INFO] = { ANDROID_QUIRKS_INFO_START, 126 ANDROID_QUIRKS_INFO_END } 127}; 128 129// Shortcut defines to make succint names for field definitions 130#define TIDX(section, tag) \ 131 [ ANDROID_ ## section ## _ ## tag - ANDROID_ ## section ## _START ] 132 133#define TIIDX(section, tag) \ 134 [ ANDROID_ ## section ## _ ## tag - ANDROID_ ## section ## _INFO_START ] 135 136tag_info_t android_request[ANDROID_REQUEST_END - 137 ANDROID_REQUEST_START] = { 138 TIDX(REQUEST, ID) = 139 { "id", TYPE_INT32 }, 140 TIDX(REQUEST, TYPE) = 141 { "type", TYPE_BYTE }, 142 TIDX(REQUEST, METADATA_MODE) = 143 { "metadataMode", TYPE_BYTE }, 144 TIDX(REQUEST, OUTPUT_STREAMS) = 145 { "outputStreams", TYPE_BYTE }, 146 TIDX(REQUEST, INPUT_STREAMS) = 147 { "inputStreams", TYPE_BYTE }, 148 TIDX(REQUEST, FRAME_COUNT) = 149 { "frameCount", TYPE_INT32 } 150}; 151 152tag_info_t android_lens[ANDROID_LENS_END - 153 ANDROID_LENS_START] = { 154 TIDX(LENS, FOCUS_DISTANCE) = 155 { "focusDistance", TYPE_FLOAT }, 156 TIDX(LENS, APERTURE) = 157 { "aperture", TYPE_FLOAT }, 158 TIDX(LENS, FOCAL_LENGTH) = 159 { "focalLength", TYPE_FLOAT }, 160 TIDX(LENS, FILTER_DENSITY) = 161 { "filterDensity", TYPE_FLOAT }, 162 TIDX(LENS, OPTICAL_STABILIZATION_MODE) = 163 { "opticalStabilizationMode", TYPE_BYTE }, 164 TIDX(LENS, FOCUS_RANGE) = 165 { "focusRange", TYPE_FLOAT } 166}; 167 168tag_info_t android_lens_info[ANDROID_LENS_INFO_END - 169 ANDROID_LENS_INFO_START] = { 170 TIIDX(LENS, MINIMUM_FOCUS_DISTANCE) = 171 { "minimumFocusDistance", TYPE_FLOAT }, 172 TIIDX(LENS, HYPERFOCAL_DISTANCE) = 173 { "hyperfocalDistance", TYPE_FLOAT }, 174 TIIDX(LENS, AVAILABLE_FOCAL_LENGTHS) = 175 { "availableFocalLengths", TYPE_FLOAT }, 176 TIIDX(LENS, AVAILABLE_APERTURES) = 177 { "availableApertures", TYPE_FLOAT }, 178 TIIDX(LENS, AVAILABLE_FILTER_DENSITY) = 179 { "availableFilterDensities", TYPE_FLOAT }, 180 TIIDX(LENS, AVAILABLE_OPTICAL_STABILIZATION) = 181 { "availableOpticalStabilizationModes", TYPE_BYTE }, 182 TIIDX(LENS, SHADING_MAP_SIZE) = 183 { "shadingMapSize", TYPE_INT32 }, 184 TIIDX(LENS, SHADING_MAP) = 185 { "shadingMap", TYPE_FLOAT }, 186 TIIDX(LENS, GEOMETRIC_CORRECTION_MAP_SIZE) = 187 { "geometricCorrectionMapSize", TYPE_INT32 }, 188 TIIDX(LENS, GEOMETRIC_CORRECTION_MAP) = 189 { "geometricCorrectionMap", TYPE_FLOAT }, 190 TIIDX(LENS, FACING) = 191 { "facing", TYPE_BYTE }, 192 TIIDX(LENS, POSITION) = 193 { "position", TYPE_FLOAT } 194}; 195 196tag_info_t android_sensor[ANDROID_SENSOR_END - 197 ANDROID_SENSOR_START] = { 198 TIDX(SENSOR, EXPOSURE_TIME) = 199 { "exposureTime", TYPE_INT64 }, 200 TIDX(SENSOR, FRAME_DURATION) = 201 { "frameDuration", TYPE_INT64 }, 202 TIDX(SENSOR, SENSITIVITY) = 203 { "sensitivity", TYPE_INT32 }, 204 TIDX(SENSOR, TIMESTAMP) = 205 { "timestamp", TYPE_INT64 } 206}; 207 208tag_info_t android_sensor_info[ANDROID_SENSOR_INFO_END - 209 ANDROID_SENSOR_INFO_START] = { 210 TIIDX(SENSOR, EXPOSURE_TIME_RANGE) = 211 { "exposureTimeRange", TYPE_INT64 }, 212 TIIDX(SENSOR, MAX_FRAME_DURATION) = 213 { "maxFrameDuration", TYPE_INT64 }, 214 TIIDX(SENSOR, AVAILABLE_SENSITIVITIES) = 215 { "availableSensitivities", TYPE_INT32 }, 216 TIIDX(SENSOR, COLOR_FILTER_ARRANGEMENT) = 217 { "colorFilterArrangement", TYPE_BYTE }, 218 TIIDX(SENSOR, PHYSICAL_SIZE) = 219 { "physicalSize", TYPE_FLOAT }, 220 TIIDX(SENSOR, PIXEL_ARRAY_SIZE) = 221 { "pixelArraySize", TYPE_INT32 }, 222 TIIDX(SENSOR, ACTIVE_ARRAY_SIZE) = 223 { "activeArraySize", TYPE_INT32 }, 224 TIIDX(SENSOR, WHITE_LEVEL) = 225 { "whiteLevel", TYPE_INT32 }, 226 TIIDX(SENSOR, BLACK_LEVEL_PATTERN) = 227 { "blackLevelPattern", TYPE_INT32 }, 228 TIIDX(SENSOR, COLOR_TRANSFORM_1) = 229 { "colorTransform1", TYPE_RATIONAL }, 230 TIIDX(SENSOR, COLOR_TRANSFORM_2) = 231 { "colorTransform2", TYPE_RATIONAL }, 232 TIIDX(SENSOR, REFERENCE_ILLUMINANT_1) = 233 { "referenceIlluminant1", TYPE_BYTE }, 234 TIIDX(SENSOR, REFERENCE_ILLUMINANT_2) = 235 { "referenceIlluminant2", TYPE_BYTE }, 236 TIIDX(SENSOR, FORWARD_MATRIX_1) = 237 { "forwardMatrix1", TYPE_RATIONAL }, 238 TIIDX(SENSOR, FORWARD_MATRIX_2) = 239 { "forwardMatrix2", TYPE_RATIONAL }, 240 TIIDX(SENSOR, CALIBRATION_TRANSFORM_1) = 241 { "calibrationTransform1", TYPE_RATIONAL }, 242 TIIDX(SENSOR, CALIBRATION_TRANSFORM_2) = 243 { "calibrationTransform2", TYPE_RATIONAL }, 244 TIIDX(SENSOR, BASE_GAIN_FACTOR) = 245 { "baseGainFactor", TYPE_RATIONAL }, 246 TIIDX(SENSOR, MAX_ANALOG_SENSITIVITY) = 247 { "maxAnalogSensitivity", TYPE_INT32 }, 248 TIIDX(SENSOR, NOISE_MODEL_COEFFICIENTS) = 249 { "noiseModelCoefficients", TYPE_FLOAT }, 250 TIIDX(SENSOR, ORIENTATION) = 251 { "orientation", TYPE_INT32 } 252}; 253 254tag_info_t android_flash[ANDROID_FLASH_END - 255 ANDROID_FLASH_START] = { 256 TIDX(FLASH, MODE) = 257 { "mode", TYPE_BYTE }, 258 TIDX(FLASH, FIRING_POWER) = 259 { "firingPower", TYPE_BYTE }, 260 TIDX(FLASH, FIRING_TIME) = 261 { "firingTime", TYPE_INT64 } 262}; 263 264tag_info_t android_flash_info[ANDROID_FLASH_INFO_END - 265 ANDROID_FLASH_INFO_START] = { 266 TIIDX(FLASH, AVAILABLE) = 267 { "available", TYPE_BYTE }, 268 TIIDX(FLASH, CHARGE_DURATION) = 269 { "chargeDuration", TYPE_INT64 }, 270}; 271 272tag_info_t android_hot_pixel[ANDROID_HOT_PIXEL_END - 273 ANDROID_HOT_PIXEL_START] = { 274 TIDX(HOT_PIXEL, MODE) = 275 { "mode", TYPE_BYTE } 276}; 277 278tag_info_t android_hot_pixel_info[ANDROID_HOT_PIXEL_INFO_END - 279 ANDROID_HOT_PIXEL_INFO_START]; 280 281tag_info_t android_demosaic[ANDROID_DEMOSAIC_END - 282 ANDROID_DEMOSAIC_START] = { 283 TIDX(DEMOSAIC, MODE) = 284 { "mode", TYPE_BYTE } 285}; 286 287tag_info_t android_demosaic_info[ANDROID_DEMOSAIC_INFO_END - 288 ANDROID_DEMOSAIC_INFO_START]; 289 290tag_info_t android_noise[ANDROID_NOISE_END - 291 ANDROID_NOISE_START] = { 292 TIDX(NOISE, MODE) = 293 { "mode", TYPE_BYTE }, 294 TIDX(NOISE, STRENGTH) = 295 { "strength", TYPE_BYTE } 296}; 297 298tag_info_t android_noise_info[ANDROID_NOISE_INFO_END - 299 ANDROID_NOISE_INFO_START]; 300 301tag_info_t android_shading[ANDROID_SHADING_END - 302 ANDROID_SHADING_START] = { 303 TIDX(SHADING, MODE) = 304 { "mode", TYPE_BYTE } 305}; 306 307tag_info_t android_shading_info[ANDROID_SHADING_INFO_END - 308 ANDROID_SHADING_INFO_START]; 309 310tag_info_t android_geometric[ANDROID_GEOMETRIC_END - 311 ANDROID_GEOMETRIC_START] = { 312 TIDX(GEOMETRIC, MODE) = 313 { "mode", TYPE_BYTE } 314}; 315 316tag_info_t android_geometric_info[ANDROID_GEOMETRIC_INFO_END - 317 ANDROID_GEOMETRIC_INFO_START]; 318 319tag_info_t android_color[ANDROID_COLOR_END - 320 ANDROID_COLOR_START] = { 321 TIDX(COLOR, MODE) = 322 { "mode", TYPE_BYTE }, 323 TIDX(COLOR, TRANSFORM) = 324 { "transform", TYPE_FLOAT } 325}; 326 327tag_info_t android_color_info[ANDROID_COLOR_INFO_END - 328 ANDROID_COLOR_INFO_START]; 329 330tag_info_t android_tonemap[ANDROID_TONEMAP_END - 331 ANDROID_TONEMAP_START] = { 332 TIDX(TONEMAP, MODE) = 333 { "mode", TYPE_BYTE }, 334 TIDX(TONEMAP, CURVE_RED) = 335 { "curveRed", TYPE_FLOAT }, 336 TIDX(TONEMAP, CURVE_GREEN) = 337 { "curveGreen", TYPE_FLOAT }, 338 TIDX(TONEMAP, CURVE_BLUE) = 339 { "curveBlue", TYPE_FLOAT } 340}; 341 342tag_info_t android_tonemap_info[ANDROID_TONEMAP_INFO_END - 343 ANDROID_TONEMAP_INFO_START] = { 344 TIIDX(TONEMAP, MAX_CURVE_POINTS) = 345 { "maxCurvePoints", TYPE_INT32 } 346}; 347 348tag_info_t android_edge[ANDROID_EDGE_END - 349 ANDROID_EDGE_START] = { 350 TIDX(EDGE, MODE) = 351 { "mode", TYPE_BYTE }, 352 TIDX(EDGE, STRENGTH) = 353 { "strength", TYPE_BYTE } 354}; 355 356tag_info_t android_edge_info[ANDROID_EDGE_INFO_END - 357 ANDROID_EDGE_INFO_START]; 358 359tag_info_t android_scaler[ANDROID_SCALER_END - 360 ANDROID_SCALER_START] = { 361 TIDX(SCALER, CROP_REGION) = 362 { "cropRegion", TYPE_INT32 } 363}; 364 365tag_info_t android_scaler_info[ANDROID_SCALER_INFO_END - 366 ANDROID_SCALER_INFO_START] = { 367 TIIDX(SCALER, AVAILABLE_FORMATS) = 368 { "availableFormats", TYPE_INT32 }, 369 TIIDX(SCALER, AVAILABLE_RAW_SIZES) = 370 { "availableRawSizes", TYPE_INT32 }, 371 TIIDX(SCALER, AVAILABLE_RAW_MIN_DURATIONS) = 372 { "availableRawMinDurations", TYPE_INT64 }, 373 TIIDX(SCALER, AVAILABLE_PROCESSED_SIZES) = 374 { "availableProcessedSizes", TYPE_INT32 }, 375 TIIDX(SCALER, AVAILABLE_PROCESSED_MIN_DURATIONS) = 376 { "availableProcessedMinDurations", TYPE_INT64 }, 377 TIIDX(SCALER, AVAILABLE_JPEG_SIZES) = 378 { "availableJpegSizes", TYPE_INT32 }, 379 TIIDX(SCALER, AVAILABLE_JPEG_MIN_DURATIONS) = 380 { "availableJpegMinDurations", TYPE_INT64 }, 381 TIIDX(SCALER, AVAILABLE_MAX_ZOOM) = 382 { "availableMaxDigitalZoom", TYPE_INT32 } 383}; 384 385tag_info_t android_jpeg[ANDROID_JPEG_END - 386 ANDROID_JPEG_START] = { 387 TIDX(JPEG, QUALITY) = 388 { "quality", TYPE_INT32 }, 389 TIDX(JPEG, THUMBNAIL_SIZE) = 390 { "thumbnailSize", TYPE_INT32 }, 391 TIDX(JPEG, THUMBNAIL_QUALITY) = 392 { "thumbnailQuality", TYPE_INT32 }, 393 TIDX(JPEG, GPS_COORDINATES) = 394 { "gpsCoordinates", TYPE_DOUBLE }, 395 TIDX(JPEG, GPS_PROCESSING_METHOD) = 396 { "gpsProcessingMethod", TYPE_BYTE }, 397 TIDX(JPEG, GPS_TIMESTAMP) = 398 { "gpsTimestamp", TYPE_INT64 }, 399 TIDX(JPEG, ORIENTATION) = 400 { "orientation", TYPE_INT32 }, 401 TIDX(JPEG, SIZE) = 402 { "size", TYPE_INT32 } 403}; 404 405tag_info_t android_jpeg_info[ANDROID_JPEG_INFO_END - 406 ANDROID_JPEG_INFO_START] = { 407 TIIDX(JPEG, AVAILABLE_THUMBNAIL_SIZES) = 408 { "availableThumbnailSizes", TYPE_INT32 }, 409 TIIDX(JPEG, MAX_SIZE) = 410 { "maxSize", TYPE_INT32 } 411}; 412 413tag_info_t android_stats[ANDROID_STATS_END - 414 ANDROID_STATS_START] = { 415 TIDX(STATS, FACE_DETECT_MODE) = 416 { "faceDetectMode", TYPE_BYTE }, 417 TIDX(STATS, FACE_RECTANGLES) = 418 { "faceRectangles", TYPE_INT32 }, 419 TIDX(STATS, FACE_SCORES) = 420 { "faceScores", TYPE_BYTE }, 421 TIDX(STATS, FACE_LANDMARKS) = 422 { "faceLandmarks", TYPE_INT32 }, 423 TIDX(STATS, FACE_IDS) = 424 { "faceIds", TYPE_INT32 }, 425 TIDX(STATS, HISTOGRAM_MODE) = 426 { "histogramMode", TYPE_BYTE }, 427 TIDX(STATS, HISTOGRAM) = 428 { "histogram", TYPE_INT32 }, 429 TIDX(STATS, SHARPNESS_MAP_MODE) = 430 { "sharpnessMapMode", TYPE_BYTE }, 431 TIDX(STATS, SHARPNESS_MAP) = 432 { "sharpnessMap", TYPE_INT32 } 433}; 434 435tag_info_t android_stats_info[ANDROID_STATS_INFO_END - 436 ANDROID_STATS_INFO_START] = { 437 TIIDX(STATS, AVAILABLE_FACE_DETECT_MODES) = 438 { "availableFaceDetectModes", TYPE_BYTE }, 439 TIIDX(STATS, MAX_FACE_COUNT) = 440 { "maxFaceCount", TYPE_INT32 }, 441 TIIDX(STATS, HISTOGRAM_BUCKET_COUNT) = 442 { "histogramBucketCount", TYPE_INT32 }, 443 TIIDX(STATS, MAX_HISTOGRAM_COUNT) = 444 { "maxHistogramCount", TYPE_INT32 }, 445 TIIDX(STATS, SHARPNESS_MAP_SIZE) = 446 { "sharpnessMapSize", TYPE_INT32 }, 447 TIIDX(STATS, MAX_SHARPNESS_MAP_VALUE) = 448 { "maxSharpnessMapValue", TYPE_INT32 } 449}; 450 451 452tag_info_t android_control[ANDROID_CONTROL_END - 453 ANDROID_CONTROL_START] = { 454 TIDX(CONTROL, CAPTURE_INTENT) = 455 { "captureIntent", TYPE_BYTE }, 456 TIDX(CONTROL, MODE) = 457 { "mode", TYPE_BYTE }, 458 TIDX(CONTROL, EFFECT_MODE) = 459 { "effectMode", TYPE_BYTE }, 460 TIDX(CONTROL, SCENE_MODE) = 461 { "sceneMode", TYPE_BYTE }, 462 TIDX(CONTROL, VIDEO_STABILIZATION_MODE) = 463 { "videoStabilizationMode", TYPE_BYTE }, 464 TIDX(CONTROL, AE_MODE) = 465 { "aeMode", TYPE_BYTE }, 466 TIDX(CONTROL, AE_LOCK) = 467 { "aeLock", TYPE_BYTE }, 468 TIDX(CONTROL, AE_REGIONS) = 469 { "aeRegions", TYPE_INT32 }, 470 TIDX(CONTROL, AE_EXP_COMPENSATION) = 471 { "aeExposureCompensation", TYPE_INT32 }, 472 TIDX(CONTROL, AE_TARGET_FPS_RANGE) = 473 { "aeTargetFpsRange", TYPE_INT32 }, 474 TIDX(CONTROL, AE_ANTIBANDING_MODE) = 475 { "aeAntibandingMode", TYPE_BYTE }, 476 TIDX(CONTROL, AE_STATE) = 477 { "aeState", TYPE_BYTE }, 478 TIDX(CONTROL, AE_PRECAPTURE_ID) = 479 { "aePrecaptureId", TYPE_INT32}, 480 TIDX(CONTROL, AWB_MODE) = 481 { "awbMode", TYPE_BYTE }, 482 TIDX(CONTROL, AWB_LOCK) = 483 { "awbLock", TYPE_BYTE }, 484 TIDX(CONTROL, AWB_REGIONS) = 485 { "awbRegions", TYPE_INT32 }, 486 TIDX(CONTROL, AWB_STATE) = 487 { "awbState", TYPE_BYTE }, 488 TIDX(CONTROL, AF_MODE) = 489 { "afMode", TYPE_BYTE }, 490 TIDX(CONTROL, AF_REGIONS) = 491 { "afRegions", TYPE_INT32 }, 492 TIDX(CONTROL, AF_STATE) = 493 { "afState", TYPE_BYTE }, 494 TIDX(CONTROL, AF_TRIGGER_ID) = 495 { "afTriggerId", TYPE_INT32 } 496}; 497 498tag_info_t android_control_info[ANDROID_CONTROL_INFO_END - 499 ANDROID_CONTROL_INFO_START] = { 500 TIIDX(CONTROL, AVAILABLE_SCENE_MODES) = 501 { "availableSceneModes", TYPE_BYTE }, 502 TIIDX(CONTROL, AVAILABLE_EFFECTS) = 503 { "availableEffects", TYPE_BYTE }, 504 TIIDX(CONTROL, MAX_REGIONS) = 505 { "maxRegions", TYPE_INT32 }, 506 TIIDX(CONTROL, AE_AVAILABLE_MODES) = 507 { "aeAvailableModes", TYPE_BYTE }, 508 TIIDX(CONTROL, AE_EXP_COMPENSATION_STEP) = 509 { "aeCompensationStep", TYPE_RATIONAL }, 510 TIIDX(CONTROL, AE_EXP_COMPENSATION_RANGE) = 511 { "aeCompensationRange", TYPE_INT32 }, 512 TIIDX(CONTROL, AE_AVAILABLE_TARGET_FPS_RANGES) = 513 { "aeAvailableTargetFpsRanges", TYPE_INT32 }, 514 TIIDX(CONTROL, AE_AVAILABLE_ANTIBANDING_MODES) = 515 { "aeAvailableAntibandingModes", TYPE_BYTE }, 516 TIIDX(CONTROL, AWB_AVAILABLE_MODES) = 517 { "awbAvailableModes", TYPE_BYTE }, 518 TIIDX(CONTROL, AF_AVAILABLE_MODES) = 519 { "afAvailableModes", TYPE_BYTE }, 520 TIIDX(CONTROL, AVAILABLE_VIDEO_STABILIZATION_MODES) = 521 { "availableVideoStabilizationModes", TYPE_BYTE }, 522 TIIDX(CONTROL, SCENE_MODE_OVERRIDES) = 523 { "sceneModeOverrides", TYPE_BYTE } 524}; 525 526tag_info_t android_quirks_info[ANDROID_QUIRKS_INFO_END - 527 ANDROID_QUIRKS_INFO_START] = { 528 TIIDX(QUIRKS, TRIGGER_AF_WITH_AUTO) = 529 { "triggerAfWithAuto", TYPE_BYTE }, 530 TIIDX(QUIRKS, USE_ZSL_FORMAT) = 531 { "useZslFormat", TYPE_BYTE }, 532 TIIDX(QUIRKS, METERING_CROP_REGION) = 533 { "meteringCropRegion", TYPE_BYTE }, 534}; 535 536#undef TIDX 537#undef TIIDX 538 539tag_info_t *tag_info[ANDROID_SECTION_COUNT] = { 540 android_request, 541 android_lens, 542 android_lens_info, 543 android_sensor, 544 android_sensor_info, 545 android_flash, 546 android_flash_info, 547 android_hot_pixel, 548 android_hot_pixel_info, 549 android_demosaic, 550 android_demosaic_info, 551 android_noise, 552 android_noise_info, 553 android_shading, 554 android_shading_info, 555 android_geometric, 556 android_geometric_info, 557 android_color, 558 android_color_info, 559 android_tonemap, 560 android_tonemap_info, 561 android_edge, 562 android_edge_info, 563 android_scaler, 564 android_scaler_info, 565 android_jpeg, 566 android_jpeg_info, 567 android_stats, 568 android_stats_info, 569 android_control, 570 android_control_info, 571 android_quirks_info 572}; 573