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