metadata_properties.xml revision 96bd019289c47433e1b3522500bb166a4662e0f5
1<?xml version="1.0" encoding="utf-8"?> 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<metadata xmlns="http://schemas.android.com/service/camera/metadata/" 17xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 18xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata_properties.xsd"> 19 20 <tags> 21 <tag id="AWB"> 22 <!-- TODO: fill the tag description --> 23 </tag> 24 <tag id="BC"> 25 <!-- TODO: fill the tag description --> 26 </tag> 27 <tag id="V1"> 28 <!-- TODO: fill the tag description --> 29 </tag> 30 <tag id="ADV"> 31 <!-- TODO: fill the tag description --> 32 </tag> 33 <tag id="DNG"> 34 <!-- TODO: fill the tag description --> 35 </tag> 36 <tag id="EXIF"> 37 <!-- TODO: fill the tag description --> 38 </tag> 39 </tags> 40 <namespace name="android"> 41 <section name="colorCorrection"> 42 <controls> 43 <entry name="mode" type="enum"> 44 <enum> 45 <value>TRANSFORM_MATRIX 46 <notes>Use the android.colorCorrection.transform matrix 47 to do color conversion</notes></value> 48 <value>FAST 49 <notes>Must not slow down frame rate relative to raw 50 bayer output</notes></value> 51 <value>HIGH_QUALITY 52 <notes>Frame rate may be reduced by high 53 quality</notes></value> 54 </enum> 55 <description>enum</description> 56 <units>enum:</units> 57 </entry> 58 <entry name="transform" type="float" 59 type_notes="3x3 float matrix in row-major order" 60 container="array"> 61 <array> 62 <size>9</size> 63 </array> 64 <description>A transform matrix to chromatically adapt 65 pixels in the CIE XYZ (1931) color space from the scene 66 illuminant to the sRGB-standard 67 D65-illuminant</description> 68 <range>Output values are expected to be in the range 69 (0,1)</range> 70 <notes>Values outside (0,1) should be clamped. Need to 71 provide utilities to go from CCT (+hue?), or (x,y) white 72 point, (or AWB mode) to matrix; use linear Bradford 73 algorithm.</notes> 74 </entry> 75 </controls> 76 <dynamic> 77 <clone entry="android.colorCorrection.mode" 78 kind="controls"></clone> 79 </dynamic> 80 </section> 81 <section name="control"> 82 <controls> 83 <entry name="aeAntibandingMode" type="enum"> 84 <enum> 85 <value>ANTIBANDING_OFF</value> 86 <value>ANTIBANDING_50HZ</value> 87 <value>ANTIBANDING_60HZ</value> 88 <value>ANTIBANDING_AUTO</value> 89 </enum> 90 <description>Enum for controlling 91 antibanding</description> 92 <units>Enum</units> 93 <range> 94 android.control.aeAvailableAntibandingModes</range> 95 </entry> 96 <entry name="aeExposureCompensation" type="int32"> 97 <description>Adjustment to AE target image 98 brightness</description> 99 <units>count of positive/negative EV steps</units> 100 <notes>For example, if EV step is 0.333, '6' will mean an 101 exposure compensation of +2 EV; -3 will mean an exposure 102 compensation of -1</notes> 103 <tag id="BC" /> 104 </entry> 105 <entry name="aeLock" type="enum"> 106 <enum> 107 <value>ON 108 <notes>Autoexposure lock is enabled; the AE algorithm 109 must not update the exposure and sensitivity parameters 110 while the lock is active</notes></value> 111 <value>OFF 112 <notes>Autoexposure lock is disabled; the AE algorithm 113 is free to update its parameters.</notes></value> 114 </enum> 115 <description>Whether AE is currently locked to its latest 116 calculated values</description> 117 <units>Enum</units> 118 <notes>Note that even when AE is locked, the flash may be 119 fired if the AE mode is ON_AUTO_FLASH / ON_ALWAYS_FLASH / 120 ON_AUTO_FLASH_REDEYE.</notes> 121 <tag id="BC" /> 122 </entry> 123 <entry name="aeMode" type="enum"> 124 <enum> 125 <value>OFF 126 <notes>Autoexposure is disabled; sensor.exposureTime 127 and sensor.sensitivity are used</notes></value> 128 <value>ON 129 <notes>Autoexposure is active, no flash 130 control</notes></value> 131 <value>ON_AUTO_FLASH 132 <notes>if flash exists Autoexposure is active, auto 133 flash control; flash may be fired when precapture 134 trigger is activated, and for captures for which 135 captureIntent = STILL_CAPTURE</notes></value> 136 <value>ON_ALWAYS_FLASH 137 <notes>if flash exists Autoexposure is active, auto 138 flash control for precapture trigger and always flash 139 when captureIntent = STILL_CAPTURE</notes></value> 140 <value>ON_AUTO_FLASH_REDEYE 141 <notes>optional Automatic red eye reduction with flash. 142 If deemed necessary, red eye reduction sequence should 143 fire when precapture trigger is activated, and final 144 flash should fire when captureIntent = 145 STILL_CAPTURE</notes></value> 146 </enum> 147 <description>Whether AE is currently updating the sensor 148 exposure and sensitivity fields</description> 149 <units>Enum</units> 150 <range>android.control.aeAvailableModes</range> 151 <notes>Only effective if android.control.mode = 152 AUTO</notes> 153 <tag id="BC" /> 154 </entry> 155 <entry name="aeRegions" type="int32" container="array"> 156 <array> 157 <size>5 per area</size> 158 </array> 159 <description>List of areas to use for 160 metering</description> 161 <notes>Each area is a rectangle plus weight: xmin, ymin, 162 xmax, ymax, weight. The coordinate system is based on the 163 active pixel array, with (0,0) being the top-left of the 164 active pixel array, and 165 (android.sensor.info.activeArraySize.width, 166 android.sensor.info.activeArraySize.height) being the 167 bottom-right point of the active pixel array. The weight 168 should be nonnegative. If all regions have 0 weight, then 169 no specific metering area needs to be used by the HAL. If 170 the metering region is outside the current 171 android.scaler.cropRegion, the HAL should ignore the 172 sections outside the region and output the used sections 173 in the frame metadata</notes> 174 <tag id="BC" /> 175 </entry> 176 <entry name="aeTargetFpsRange" type="int32" 177 container="array"> 178 <array> 179 <size>2</size> 180 </array> 181 <description>Range over which fps can be adjusted to 182 maintain exposure</description> 183 <range>android.control.aeAvailableTargetFpsRanges</range> 184 <notes>Only constrains AE algorithm, not manual control 185 of android.sensor.exposureTime</notes> 186 <tag id="BC" /> 187 </entry> 188 <entry name="afMode" type="enum"> 189 <enum> 190 <value>OFF 191 <notes>The 3A routines do not control the lens; 192 android.lens.focusPosition is controlled by the 193 application</notes></value> 194 <value>AUTO 195 <notes>if lens is not fixed focus. Use 196 android.lens.minimumFocusDistance to determine if lens 197 is fixed focus In this mode, the lens does not move 198 unless the autofocus trigger action is called. When 199 that trigger is activated, AF must transition to 200 ACTIVE_SCAN, then to the outcome of the scan (FOCUSED 201 or NOT_FOCUSED). Triggering cancel AF resets the lens 202 position to default, and sets the AF state to 203 INACTIVE.</notes></value> 204 <value>MACRO 205 <notes>In this mode, the lens does not move unless the 206 autofocus trigger action is called. When that trigger 207 is activated, AF must transition to ACTIVE_SCAN, then 208 to the outcome of the scan (FOCUSED or NOT_FOCUSED). 209 Triggering cancel AF resets the lens position to 210 default, and sets the AF state to 211 INACTIVE.</notes></value> 212 <value>CONTINUOUS_VIDEO 213 <notes>In this mode, the AF algorithm modifies the lens 214 position continually to attempt to provide a 215 constantly-in-focus image stream. The focusing behavior 216 should be suitable for good quality video recording; 217 typically this means slower focus movement and no 218 overshoots. When the AF trigger is not involved, the AF 219 algorithm should start in INACTIVE state, and then 220 transition into PASSIVE_SCAN and PASSIVE_FOCUSED states 221 as appropriate. When the AF trigger is activated, the 222 algorithm should immediately transition into AF_FOCUSED 223 or AF_NOT_FOCUSED as appropriate, and lock the lens 224 position until a cancel AF trigger is received. Once 225 cancel is received, the algorithm should transition 226 back to INACTIVE and resume passive scan. Note that 227 this behavior is not identical to CONTINUOUS_PICTURE, 228 since an ongoing PASSIVE_SCAN must immediately be 229 canceled.</notes></value> 230 <value>CONTINUOUS_PICTURE 231 <notes>In this mode, the AF algorithm modifies the lens 232 position continually to attempt to provide a 233 constantly-in-focus image stream. The focusing behavior 234 should be suitable for still image capture; typically 235 this means focusing as fast as possible. When the AF 236 trigger is not involved, the AF algorithm should start 237 in INACTIVE state, and then transition into 238 PASSIVE_SCAN and PASSIVE_FOCUSED states as appropriate 239 as it attempts to maintain focus. When the AF trigger 240 is activated, the algorithm should finish its 241 PASSIVE_SCAN if active, and then transition into 242 AF_FOCUSED or AF_NOT_FOCUSED as appropriate, and lock 243 the lens position until a cancel AF trigger is 244 received. When the AF cancel trigger is activated, the 245 algorithm should transition back to INACTIVE and then 246 act as if it has just been started.</notes></value> 247 <value>EDOF 248 <notes>Extended depth of field (digital focus). AF 249 trigger is ignored, AF state should always be 250 INACTIVE.</notes></value> 251 </enum> 252 <description>Whether AF is currently enabled, and what 253 mode it is set to</description> 254 <units>Enum</units> 255 <tag id="BC" /> 256 </entry> 257 <entry name="afRegions" type="int32" container="array"> 258 <array> 259 <size>5 per area</size> 260 </array> 261 <description>List of areas to use for focus 262 estimation</description> 263 <notes>Each area is a rectangle plus weight: xmin, ymin, 264 xmax, ymax, weight. The coordinate system is based on the 265 active pixel array, with (0,0) being the top-left of the 266 active pixel array, and 267 (android.sensor.info.activeArraySize.width, 268 android.sensor.info.activeArraySize.height) being the 269 bottom-right point of the active pixel array. The weight 270 should be nonnegative. If all regions have 0 weight, then 271 no specific focus area needs to be used by the HAL. If 272 the focusing region is outside the current 273 android.scaler.cropRegion, the HAL should ignore the 274 sections outside the region and output the used sections 275 in the frame metadata</notes> 276 <tag id="BC" /> 277 </entry> 278 <entry name="awbLock" type="enum"> 279 <enum> 280 <value>ON 281 <notes>Auto-whitebalance lock is enabled; the AWB 282 algorithm must not update the exposure and sensitivity 283 parameters while the lock is active</notes></value> 284 <value>OFF 285 <notes>Auto-whitebalance lock is disabled; the AWB 286 algorithm is free to update its parameters if in AUTO 287 mode.</notes></value> 288 </enum> 289 <description>Whether AWB is currently locked to its 290 latest calculated values</description> 291 <units>Enum</units> 292 <notes>Note that AWB lock is only meaningful for AUTO 293 mode; in other modes, AWB is already fixed to a specific 294 setting</notes> 295 <tag id="BC" /> 296 </entry> 297 <entry name="awbMode" type="enum"> 298 <enum> 299 <value>OFF</value> 300 <value>AUTO</value> 301 <value>INCANDESCENT</value> 302 <value>FLUORESCENT</value> 303 <value>WARM_FLUORESCENT</value> 304 <value>DAYLIGHT</value> 305 <value>CLOUDY_DAYLIGHT</value> 306 <value>TWILIGHT</value> 307 <value>SHADE</value> 308 </enum> 309 <description>Whether AWB is currently setting the color 310 transform fields, and what its illumination target 311 is</description> 312 <units>Enum</units> 313 <notes>[BC - AWB lock,AWB modes]</notes> 314 <tag id="BC" /> 315 <tag id="AWB" /> 316 </entry> 317 <entry name="awbRegions" type="int32" container="array"> 318 <array> 319 <size>5 per area</size> 320 </array> 321 <description>List of areas to use for illuminant 322 estimation</description> 323 <notes>Only used in AUTO mode. Each area is a rectangle 324 plus weight: xmin, ymin, xmax, ymax, weight. The 325 coordinate system is based on the active pixel array, 326 with (0,0) being the top-left of the active pixel array, 327 and (android.sensor.info.activeArraySize.width, 328 android.sensor.info.activeArraySize.height) being the 329 bottom-right point of the active pixel array. The weight 330 should be nonnegative. If all regions have 0 weight, then 331 no specific metering area needs to be used by the HAL. If 332 the metering region is outside the current 333 android.scaler.cropRegion, the HAL should ignore the 334 sections outside the region and output the used sections 335 in the frame metadata</notes> 336 <tag id="BC" /> 337 </entry> 338 <entry name="captureIntent" type="enum"> 339 <enum> 340 <value>INTENT_CUSTOM 341 <notes>This request doesn't fall into the other 342 categories. Default to preview-like 343 behavior.</notes></value> 344 <value>INTENT_PREVIEW 345 <notes>This request is for a preview-like usecase. The 346 precapture trigger may be used to start off a metering 347 w/flash sequence</notes></value> 348 <value>INTENT_STILL_CAPTURE 349 <notes>This request is for a still capture-type 350 usecase.</notes></value> 351 <value>INTENT_VIDEO_RECORD 352 <notes>This request is for a video recording 353 usecase.</notes></value> 354 <value>INTENT_VIDEO_SNAPSHOT 355 <notes>This request is for a video snapshot (still 356 image while recording video) usecase</notes></value> 357 <value>INTENT_ZERO_SHUTTER_LAG 358 <notes>This request is for a ZSL usecase; the 359 application will stream full-resolution images and 360 reprocess one or several later for a final 361 capture</notes></value> 362 </enum> 363 <description>Information to 3A routines about the purpose 364 of this capture, to help decide optimal 3A 365 strategy</description> 366 <units>Enum</units> 367 <range>all must be supported</range> 368 <notes>Only used if android.control.mode != OFF.</notes> 369 <tag id="BC" /> 370 </entry> 371 <entry name="effectMode" type="enum"> 372 <enum> 373 <value>EFFECT_OFF</value> 374 <value optional="true">EFFECT_MONO</value> 375 <value optional="true">EFFECT_NEGATIVE</value> 376 <value optional="true">EFFECT_SOLARIZE</value> 377 <value optional="true">EFFECT_SEPIA</value> 378 <value optional="true">EFFECT_POSTERIZE</value> 379 <value optional="true">EFFECT_WHITEBOARD</value> 380 <value optional="true">EFFECT_BLACKBOARD</value> 381 <value optional="true">EFFECT_AQUA</value> 382 </enum> 383 <description>Whether any special color effect is in use. 384 Only used if android.control.mode != OFF</description> 385 <units>Enum</units> 386 <range>android.control.availableEffects</range> 387 <tag id="BC" /> 388 </entry> 389 <entry name="mode" type="enum"> 390 <enum> 391 <value>OFF 392 <notes>Full application control of pipeline. All 3A 393 routines are disabled, no other settings in 394 android.control.* have any effect</notes></value> 395 <value>AUTO 396 <notes>Use settings for each individual 3A routine. 397 Manual control of capture parameters is disabled. All 398 controls in android.control.* besides sceneMode take 399 effect</notes></value> 400 <value>USE_SCENE_MODE 401 <notes>Use specific scene mode. Enabling this disables 402 control.aeMode, control.awbMode and control.afMode 403 controls; the HAL must ignore those settings while 404 USE_SCENE_MODE is active (except for FACE_PRIORITY 405 scene mode). Other control entries are still active. 406 This setting can only be used if availableSceneModes != 407 UNSUPPORTED</notes></value> 408 </enum> 409 <description>Overall mode of 3A control 410 routines</description> 411 <units>Enum</units> 412 <range>all must be supported</range> 413 <tag id="BC" /> 414 </entry> 415 <entry name="sceneMode" type="enum"> 416 <enum> 417 <value>SCENE_MODE_FACE_PRIORITY 418 <notes>if face detection support exists Use face 419 detection data to drive 3A routines. If face detection 420 statistics are disabled, should still operate correctly 421 (but not return face detection statistics to the 422 framework). Unlike the other scene modes, aeMode, 423 awbMode, and afMode remain active when FACE_PRIORITY is 424 set. This is due to compatibility concerns with the old 425 camera API</notes></value> 426 <value optional="true">SCENE_MODE_ACTION</value> 427 <value optional="true">SCENE_MODE_PORTRAIT</value> 428 <value optional="true">SCENE_MODE_LANDSCAPE</value> 429 <value optional="true">SCENE_MODE_NIGHT</value> 430 <value optional="true"> 431 SCENE_MODE_NIGHT_PORTRAIT</value> 432 <value optional="true">SCENE_MODE_THEATRE</value> 433 <value optional="true">SCENE_MODE_BEACH</value> 434 <value optional="true">SCENE_MODE_SNOW</value> 435 <value optional="true">SCENE_MODE_SUNSET</value> 436 <value optional="true">SCENE_MODE_STEADYPHOTO</value> 437 <value optional="true">SCENE_MODE_FIREWORKS</value> 438 <value optional="true">SCENE_MODE_SPORTS</value> 439 <value optional="true">SCENE_MODE_PARTY</value> 440 <value optional="true">SCENE_MODE_CANDLELIGHT</value> 441 <value optional="true">SCENE_MODE_BARCODE</value> 442 </enum> 443 <description>Which scene mode is active when 444 android.control.mode = SCENE_MODE</description> 445 <units>Enum</units> 446 <range>android.control.availableSceneModes</range> 447 <tag id="BC" /> 448 </entry> 449 <entry name="videoStabilizationMode" type="enum"> 450 <enum> 451 <value>OFF</value> 452 <value>ON</value> 453 </enum> 454 <description>Whether video stabilization is 455 active</description> 456 <units>Enum</units> 457 <notes>If enabled, video stabilization can modify the 458 android.scaler.cropRegion to keep the video stream 459 stabilized</notes> 460 <tag id="BC" /> 461 </entry> 462 </controls> 463 <static> 464 <entry name="aeAvailableAntibandingModes" type="byte" 465 type_notes="list of enums" container="array"> 466 <array> 467 <size>n</size> 468 </array> 469 <description>Which set of antibanding modes are 470 supported</description> 471 </entry> 472 <entry name="aeAvailableModes" type="byte" 473 type_notes="list of enums" container="array"> 474 <array> 475 <size>n</size> 476 </array> 477 <description>Which subset of AE modes is 478 supported</description> 479 <range>OFF, ON must be supported. 480 ON_AUTO_FLASH/ON_ALWAYS_FLASH must be supported if flash 481 unit is available</range> 482 </entry> 483 <entry name="aeAvailableTargetFpsRanges" type="int32" 484 type_notes="list of pairs of frame rates" 485 container="array"> 486 <array> 487 <size>2</size> 488 <size>n</size> 489 </array> 490 <description>List of frame rate ranges supported by the 491 AE algorithm/hardware</description> 492 </entry> 493 <entry name="aeCompensationRange" type="int32" 494 container="array"> 495 <array> 496 <size>2</size> 497 </array> 498 <description>Maximum and minimum exposure compensation 499 setting, in counts of 500 android.control.aeCompensationStepSize</description> 501 <range>At least (-2,2)/(exp compensation step 502 size)</range> 503 <tag id="BC" /> 504 </entry> 505 <entry name="aeCompensationStep" type="rational"> 506 <description>Smallest step by which exposure compensation 507 can be changed</description> 508 <range><= 1/2</range> 509 <tag id="BC" /> 510 </entry> 511 <entry name="afAvailableModes" type="byte" 512 type_notes="List of enums" container="array"> 513 <array> 514 <size>n</size> 515 </array> 516 <description>List of AF modes that can be 517 selected</description> 518 <range>OFF must be included. AUTO must be supported if 519 lens allows for changing focus</range> 520 <tag id="BC" /> 521 </entry> 522 <entry name="availableEffects" type="byte" 523 type_notes="list of enums" container="array"> 524 <array> 525 <size>n</size> 526 </array> 527 <description>what subset of the full color effect enum 528 list is supported</description> 529 <range>OFF must be listed</range> 530 <tag id="BC" /> 531 </entry> 532 <entry name="availableSceneModes" type="byte" 533 type_notes="list of enums from android.control.sceneMode, plus UNSUPPORTED to indicate no scene modes are supported" 534 container="array"> 535 <array> 536 <size>n</size> 537 </array> 538 <description>what subset of the scene mode enum list is 539 supported.</description> 540 <range>SCENE_MODE_FACE_PRIORITY must be supported if face 541 detection is supported</range> 542 <tag id="BC" /> 543 </entry> 544 <entry name="availableVideoStabilizationModes" type="byte" 545 type_notes="List of enums." container="array"> 546 <array> 547 <size>n</size> 548 </array> 549 <description>List of video stabilization modes that can 550 be supported</description> 551 <range>OFF must be included</range> 552 <tag id="BC" /> 553 </entry> 554 <entry name="awbAvailableModes" type="byte"> 555 <units>List of enums</units> 556 <range>OFF, AUTO must be included</range> 557 <tag id="BC" /> 558 </entry> 559 <entry name="maxRegions" type="int32"> 560 <description>For AE, AWB, and AF, how many individual 561 regions can be listed for metering?</description> 562 <range>>= 1</range> 563 <tag id="BC" /> 564 </entry> 565 <entry name="sceneModeOverrides" type="byte" 566 container="array"> 567 <array> 568 <size>3</size> 569 <size>lengthavailablescenemodes</size> 570 </array> 571 <description>List of AE, AWB, and AF modes to use for 572 each available scene mode</description> 573 <range>For each listed scene mode, lists the aeMode, 574 awbMode, and afMode that the HAL wants to use for that 575 scene mode. For each entry, the order is {aeMode, 576 awbMode, afMode} in order of increasing index</range> 577 <notes>When a scene mode is enabled, the HAL is expected 578 to override aeMode, awbMode, and afMode with its 579 preferred settings for that scene mode. To simplify 580 communication with old camera API applications, the 581 service wants this override list in the static metadata. 582 The order of this list matches that of 583 availableSceneModes, with 3 entires for each scene mode. 584 The overrides listed for SCENE_MODE_FACE_PRIORITY are 585 ignored, since for that mode, the application-set aeMode, 586 awbMode, and afMode are used instead, like they are when 587 android.control.mode is AUTO. It is recommended that for 588 FACE_PRIORITY, the overrides should be set to 0. As an 589 example, if availableSceneModes is { FACE_PRIORITY, 590 ACTION, NIGHT }, then the service expects this field to 591 have 9 entries; for example { 0 , 0, 0, ON_AUTO_FLASH, 592 AUTO, CONTINUOUS_PICTURE, ON_AUTO_FLASH, INCANDESCENT, 593 AUTO }</notes> 594 <tag id="BC" /> 595 </entry> 596 </static> 597 <dynamic> 598 <entry name="aePrecaptureId" type="int32"> 599 <description>The ID sent with the latest 600 CAMERA2_TRIGGER_PRECAPTURE_METERING call</description> 601 <notes>Must be 0 if no 602 CAMERA2_TRIGGER_PRECAPTURE_METERING trigger received yet 603 by HAL. Always updated even if AE algorithm ignores the 604 trigger</notes> 605 </entry> 606 <clone entry="android.control.aeRegions" kind="controls"> 607 </clone> 608 <entry name="aeState" type="enum"> 609 <enum> 610 <value>INACTIVE 611 <notes>AE is off</notes></value> 612 <value>SEARCHING 613 <notes>AE doesn't yet have a good set of control values 614 for the current scene</notes></value> 615 <value>CONVERGED 616 <notes>AE has a good set of control values for the 617 current scene</notes></value> 618 <value>LOCKED 619 <notes>AE has been locked (aeMode = 620 LOCKED)</notes></value> 621 <value>FLASH_REQUIRED 622 <notes>AE has a good set of control values, but flash 623 needs to be fired for good quality still 624 capture</notes></value> 625 <value>PRECAPTURE 626 <notes>AE has been asked to do a precapture sequence 627 (through the 628 trigger_action(CAMERA2_TRIGGER_PRECAPTURE_METERING) 629 call), and is currently executing it. Once PRECAPTURE 630 completes, AE will transition to CONVERGED or 631 FLASH_REQUIRED as appropriate</notes></value> 632 </enum> 633 <description>Current state of AE algorithm</description> 634 <units>Enum</units> 635 <notes>Whenever the AE algorithm state changes, a 636 MSG_AUTOEXPOSURE notification must be send if a 637 notification callback is registered.</notes> 638 </entry> 639 <clone entry="android.control.afMode" kind="controls"> 640 </clone> 641 <clone entry="android.control.afRegions" kind="controls"> 642 </clone> 643 <entry name="afState" type="enum"> 644 <enum> 645 <value>INACTIVE 646 <notes>AF off or has not yet tried to scan/been asked 647 to scan</notes></value> 648 <value>PASSIVE_SCAN 649 <notes>if CONTINUOUS_* modes are supported AF is 650 currently doing an AF scan initiated by a continuous 651 autofocus mode</notes></value> 652 <value>PASSIVE_FOCUSED 653 <notes>if CONTINUOUS_* modes are supported AF currently 654 believes it is in focus, but may restart scanning at 655 any time.</notes></value> 656 <value>ACTIVE_SCAN 657 <notes>if AUTO or MACRO modes are supported AF is doing 658 an AF scan because it was triggered by AF 659 trigger</notes></value> 660 <value>AF_FOCUSED_LOCKED 661 <notes>if any AF mode besides OFF is supported AF 662 believes it is focused correctly and is 663 locked</notes></value> 664 <value>AF_NOT_FOCUSED_LOCKED 665 <notes>if any AF mode besides OFF is supported AF has 666 failed to focus successfully and is 667 locked</notes></value> 668 </enum> 669 <description>Current state of AF algorithm</description> 670 <units>Enum</units> 671 <notes>Whenever the AF algorithm state changes, a 672 MSG_AUTOFOCUS notification must be send if a notification 673 callback is registered.</notes> 674 </entry> 675 <entry name="afTriggerId" type="int32"> 676 <description>The ID sent with the latest 677 CAMERA2_TRIGGER_AUTOFOCUS call</description> 678 <notes>Must be 0 if no CAMERA2_TRIGGER_AUTOFOCUS trigger 679 received yet by HAL. Always updated even if AF algorithm 680 ignores the trigger</notes> 681 </entry> 682 <clone entry="android.control.awbMode" kind="controls"> 683 </clone> 684 <clone entry="android.control.awbRegions" kind="controls"> 685 </clone> 686 <entry name="awbState" type="enum"> 687 <enum> 688 <value>INACTIVE 689 <notes>AWB is not in auto mode</notes></value> 690 <value>SEARCHING 691 <notes>AWB doesn't yet have a good set of control 692 values for the current scene</notes></value> 693 <value>CONVERGED 694 <notes>AWB has a good set of control values for the 695 current scene</notes></value> 696 <value>LOCKED 697 <notes>AE has been locked (aeMode = 698 LOCKED)</notes></value> 699 </enum> 700 <description>Current state of AWB algorithm</description> 701 <units>Enum</units> 702 <notes>Whenever the AWB algorithm state changes, a 703 MSG_AUTOWHITEBALANCE notification must be send if a 704 notification callback is registered.</notes> 705 </entry> 706 <clone entry="android.control.mode" kind="controls"> 707 </clone> 708 </dynamic> 709 </section> 710 <section name="demosaic"> 711 <controls> 712 <entry name="mode" type="enum"> 713 <enum> 714 <value>FAST 715 <notes>Minimal or no slowdown of frame rate compared to 716 Bayer RAW output</notes></value> 717 <value>HIGH_QUALITY 718 <notes>High-quality may reduce output frame 719 rate</notes></value> 720 </enum> 721 <description>Controls the quality of the demosaicing 722 processing</description> 723 <units>Enum:</units> 724 <tag id="V1" /> 725 </entry> 726 </controls> 727 </section> 728 <section name="edge"> 729 <controls> 730 <entry name="mode" type="enum"> 731 <enum> 732 <value>OFF 733 <notes>No edge enhancement is applied</notes></value> 734 <value>FAST 735 <notes>Must not slow down frame rate relative to raw 736 bayer output</notes></value> 737 <value>HIGH_QUALITY 738 <notes>Frame rate may be reduced by high 739 quality</notes></value> 740 </enum> 741 <description>Operation mode for edge 742 enhancement</description> 743 <units>enum:</units> 744 </entry> 745 <entry name="strength" type="byte"> 746 <description>Control the amount of edge enhancement 747 applied to the images</description> 748 <units>1-10; 10 is maximum sharpening</units> 749 </entry> 750 </controls> 751 <dynamic> 752 <clone entry="android.edge.mode" kind="controls"></clone> 753 </dynamic> 754 </section> 755 <section name="flash"> 756 <controls> 757 <entry name="firingPower" type="byte"> 758 <description>Power for flash firing/torch</description> 759 <units>10 is max power; 0 is no flash. Linear</units> 760 <range>0 - 10</range> 761 <notes>Power for snapshot may use a different scale than 762 for torch mode. Only one entry for torch mode will be 763 used</notes> 764 <tag id="V1" /> 765 </entry> 766 <entry name="firingTime" type="int64"> 767 <description>Firing time of flash relative to start of 768 exposure</description> 769 <units>nanoseconds</units> 770 <range>0-(exposure time-flash duration)</range> 771 <notes>Clamped to (0, exposure time - flash 772 duration).</notes> 773 <tag id="V1" /> 774 </entry> 775 <entry name="mode" type="enum"> 776 <enum> 777 <value>OFF 778 <notes>Do not fire the flash for this 779 capture</notes></value> 780 <value>SINGLE 781 <notes>if android.flash.available is true Fire flash 782 for this capture based on firingPower, 783 firingTime.</notes></value> 784 <value>TORCH 785 <notes>if android.flash.available is true Flash 786 continuously on, power set by 787 firingPower</notes></value> 788 </enum> 789 <description>Select flash operation mode</description> 790 <units>enum</units> 791 <tag id="BC" /> 792 </entry> 793 </controls> 794 <static> 795 <namespace name="info"> 796 <entry name="available" type="byte"> 797 <description>Whether this camera has a 798 flash</description> 799 <units>boolean (0 = false, otherwise true)</units> 800 <notes>If no flash, none of the flash controls do 801 anything. All other metadata should return 0</notes> 802 <tag id="BC" /> 803 </entry> 804 <entry name="chargeDuration" type="int64"> 805 <description>Time taken before flash can fire 806 again</description> 807 <units>nanoseconds</units> 808 <range>0-1e9</range> 809 <notes>1 second too long/too short for recharge? Should 810 this be power-dependent?</notes> 811 <tag id="V1" /> 812 </entry> 813 </namespace> 814 <entry name="colorTemperature" type="byte"> 815 <description>The x,y whitepoint of the 816 flash</description> 817 <units>pair of floats</units> 818 <range>0-1 for both</range> 819 <tag id="ADV" /> 820 </entry> 821 <entry name="maxEnergy" type="byte"> 822 <description>Max energy output of the flash for a full 823 power single flash</description> 824 <units>lumen-seconds</units> 825 <range>>= 0</range> 826 <tag id="ADV" /> 827 </entry> 828 </static> 829 <dynamic> 830 <clone entry="android.flash.firingPower" kind="controls"> 831 </clone> 832 <clone entry="android.flash.firingTime" kind="controls"> 833 </clone> 834 <clone entry="android.flash.mode" kind="controls"></clone> 835 <entry name="state" type="enum"> 836 <enum> 837 <value>UNAVAILABLE 838 <notes>No flash on camera</notes></value> 839 <value>CHARGING 840 <notes>if android.flash.available is true Flash is 841 charging and cannot be fired</notes></value> 842 <value>READY 843 <notes>if android.flash.available is true Flash is 844 ready to fire</notes></value> 845 <value>FIRED 846 <notes>if android.flash.available is true Flash fired 847 for this capture</notes></value> 848 </enum> 849 <description>Current state of the flash 850 unit</description> 851 <units>enum</units> 852 </entry> 853 </dynamic> 854 </section> 855 <section name="geometric"> 856 <controls> 857 <entry name="mode" type="enum"> 858 <enum> 859 <value>OFF 860 <notes>No geometric correction is 861 applied</notes></value> 862 <value>FAST 863 <notes>Must not slow down frame rate relative to raw 864 bayer output</notes></value> 865 <value>HIGH_QUALITY 866 <notes>Frame rate may be reduced by high 867 quality</notes></value> 868 </enum> 869 <description>Operating mode of geometric 870 correction</description> 871 <units>enum:</units> 872 </entry> 873 <entry name="strength" type="byte"> 874 <description>Control the amount of shading correction 875 applied to the images</description> 876 <units>unitless: 1-10; 10 is full shading 877 compensation</units> 878 <tag id="ADV" /> 879 </entry> 880 </controls> 881 </section> 882 <section name="hotPIxel"> 883 <static> 884 <namespace name="info"> 885 <entry name="map" type="int32" 886 type_notes="list of coordinates based on android.sensor.pixelArraySize" 887 container="array"> 888 <array> 889 <size>2</size> 890 <size>n</size> 891 </array> 892 <description>Location of hot/defective pixels on 893 sensor</description> 894 <tag id="ADV" /> 895 </entry> 896 </namespace> 897 </static> 898 </section> 899 <section name="hotPixel"> 900 <controls> 901 <entry name="mode" type="enum"> 902 <enum> 903 <value>OFF 904 <notes>No hot pixel correction can be 905 applied</notes></value> 906 <value>FAST 907 <notes>Frame rate must not be reduced compared to raw 908 Bayer output</notes></value> 909 <value>HIGH_QUALITY 910 <notes>Frame rate may be reduced by high 911 quality</notes></value> 912 </enum> 913 <description>Set operational mode for hot pixel 914 correction</description> 915 <units>Enum:</units> 916 <tag id="V1" /> 917 </entry> 918 </controls> 919 <dynamic> 920 <clone entry="android.hotPixel.mode" kind="controls"> 921 <tag id="V1" /> 922 </clone> 923 </dynamic> 924 </section> 925 <section name="jpeg"> 926 <controls> 927 <entry name="gpsCoordinates" type="double" 928 type_notes="latitude, longitude, altitude. First two in degrees, the third in meters" 929 container="array"> 930 <array> 931 <size>3</size> 932 </array> 933 <description>GPS coordinates to include in output JPEG 934 EXIF</description> 935 <range>(-180 - 180], [-90,90], [-inf, inf]</range> 936 <tag id="BC" /> 937 </entry> 938 <entry name="gpsProcessingMethod" type="byte"> 939 <description>32 characters describing GPS algorithm to 940 include in EXIF</description> 941 <units>UTF-8 null-terminated string</units> 942 <tag id="BC" /> 943 </entry> 944 <entry name="gpsTimestamp" type="int64"> 945 <description>Time GPS fix was made to include in 946 EXIF</description> 947 <units>UTC in seconds since January 1, 1970</units> 948 <tag id="BC" /> 949 </entry> 950 <entry name="orientation" type="int32"> 951 <description>Orientation of JPEG image to 952 write</description> 953 <units>Degrees in multiples of 90</units> 954 <range>0, 90, 180, 270</range> 955 <tag id="BC" /> 956 </entry> 957 <entry name="quality" type="byte"> 958 <description>Compression quality of the final JPEG 959 image</description> 960 <range>1-100; larger is higher quality</range> 961 <notes>85-95 is typical usage range</notes> 962 <tag id="BC" /> 963 </entry> 964 <entry name="thumbnailQuality" type="byte"> 965 <description>Compression quality of JPEG 966 thumbnail</description> 967 <range>1-100; larger is higher quality</range> 968 <tag id="BC" /> 969 </entry> 970 <entry name="thumbnailSize" type="int32" container="array"> 971 <array> 972 <size>2</size> 973 </array> 974 <description>Resolution of embedded JPEG 975 thumbnail</description> 976 <range>from android.jpeg.availableThumbnailSizes</range> 977 <tag id="BC" /> 978 </entry> 979 </controls> 980 <static> 981 <entry name="availableThumbnailSizes" type="int32" 982 type_notes="list of resolution pairs" container="array"> 983 <array> 984 <size>2</size> 985 <size>n</size> 986 </array> 987 <description>Supported resolutions for the JPEG 988 thumbnail</description> 989 <range>Must include at least one valid resolution, plus 990 (0,0) for no thumbnail generation</range> 991 <tag id="BC" /> 992 </entry> 993 <entry name="maxSize" type="int32"> 994 <description>Maximum size in bytes for the compressed 995 JPEG buffer</description> 996 <range>Must be large enough to fit any JPEG produced by 997 the camera</range> 998 <notes>This is used for sizing the gralloc buffers for 999 JPEG</notes> 1000 </entry> 1001 </static> 1002 <dynamic> 1003 <clone entry="android.jpeg.gpsCoordinates" kind="controls"> 1004 </clone> 1005 <clone entry="android.jpeg.gpsProcessingMethod" 1006 kind="controls"></clone> 1007 <clone entry="android.jpeg.gpsTimestamp" kind="controls"> 1008 </clone> 1009 <clone entry="android.jpeg.orientation" kind="controls"> 1010 </clone> 1011 <clone entry="android.jpeg.quality" kind="controls"> 1012 </clone> 1013 <entry name="size" type="int32"> 1014 <description>The size of the compressed JPEG image, in 1015 bytes</description> 1016 <range>>= 0</range> 1017 <notes>If no JPEG output is produced for the request, 1018 this must be 0. Otherwise, this describes the real size 1019 of the compressed JPEG image placed in the output stream. 1020 More specifically, if android.jpeg.maxSize = 1000000, and 1021 a specific capture has android.jpeg.size = 500000, then 1022 the output buffer from the JPEG stream will be 1000000 1023 bytes, of which the first 500000 make up the real 1024 data.</notes> 1025 </entry> 1026 <clone entry="android.jpeg.thumbnailQuality" 1027 kind="controls"></clone> 1028 <clone entry="android.jpeg.thumbnailSize" kind="controls"> 1029 </clone> 1030 </dynamic> 1031 </section> 1032 <section name="lens"> 1033 <controls> 1034 <entry name="aperture" type="float"> 1035 <description>Size of the lens aperture</description> 1036 <units>f-number (f/NNN)</units> 1037 <range>android.lens.info.availableApertures</range> 1038 <notes>Will not be supported on most devices. Can only 1039 pick from supported list</notes> 1040 <tag id="V1" /> 1041 </entry> 1042 <entry name="filterDensity" type="float"> 1043 <description>State of lens neutral density 1044 filter(s)</description> 1045 <units>number of stops of filtering</units> 1046 <range>android.lens.info.availableFilterDensities</range> 1047 <notes>Will not be supported on most devices. Can only 1048 pick from supported list</notes> 1049 <tag id="V1" /> 1050 </entry> 1051 <entry name="focalLength" type="float"> 1052 <description>Lens optical zoom setting</description> 1053 <units>focal length in mm</units> 1054 <range>> 0</range> 1055 <notes>Will not be supported on most devices.</notes> 1056 <tag id="V1" /> 1057 </entry> 1058 <entry name="focusDistance" type="float"> 1059 <description>Distance to plane of sharpest focus, 1060 measured from frontmost surface of the lens</description> 1061 <units>diopters (1/m)</units> 1062 <range>>= 0</range> 1063 <notes>0 = infinity focus. Used value should be clamped 1064 to (0,minimum focus distance)</notes> 1065 <tag id="BC" /> 1066 <tag id="V1" /> 1067 </entry> 1068 <entry name="opticalStabilizationMode" type="enum"> 1069 <enum> 1070 <value>OFF</value> 1071 <value optional="true">ON</value> 1072 </enum> 1073 <description>Whether optical image stabilization is 1074 enabled.</description> 1075 <units>enum</units> 1076 <range>android.lens.availableOpticalStabilization</range> 1077 <notes>Will not be supported on most devices.</notes> 1078 <tag id="V1" /> 1079 </entry> 1080 </controls> 1081 <static> 1082 <namespace name="info"> 1083 <entry name="availableApertures" type="float" 1084 container="array"> 1085 <array> 1086 <size>n</size> 1087 </array> 1088 <description>List of supported aperture 1089 values</description> 1090 <range>one entry required, > 0</range> 1091 <notes>If variable aperture not available, only setting 1092 should be for the fixed aperture</notes> 1093 <tag id="V1" /> 1094 </entry> 1095 <entry name="availableFilterDensities" type="float" 1096 container="array"> 1097 <array> 1098 <size>n</size> 1099 </array> 1100 <description>List of supported ND filter 1101 values</description> 1102 <range>one entry required, >= 0</range> 1103 <notes>If not available, only setting is 0. Otherwise, 1104 lists the available exposure index values for dimming 1105 (2 would mean the filter is set to reduce incoming 1106 light by two stops)</notes> 1107 <tag id="V1" /> 1108 </entry> 1109 <entry name="availableFocalLengths" type="float" 1110 type_notes="the list of available focal lengths" 1111 container="array"> 1112 <array> 1113 <size>n</size> 1114 </array> 1115 <description>If fitted with optical zoom, what focal 1116 lengths are available. If not, the static focal 1117 length</description> 1118 <range>> 0</range> 1119 <notes>If optical zoom not supported, only one value 1120 should be reported</notes> 1121 <tag id="BC" /> 1122 <tag id="V1" /> 1123 </entry> 1124 <entry name="availableOpticalStabilization" type="byte" 1125 type_notes="list of enums" container="array"> 1126 <array> 1127 <size>n</size> 1128 </array> 1129 <description>List of supported optical image 1130 stabilization modes</description> 1131 <tag id="V1" /> 1132 </entry> 1133 <entry name="geometricCorrectionMap" type="float" 1134 type_notes="2D array of destination coordinate pairs for uniform grid points in source image, per color channel. Size in the range of 2x3x40x30" 1135 container="array"> 1136 <array> 1137 <size>2</size> 1138 <size>3</size> 1139 <size>n</size> 1140 <size>m</size> 1141 </array> 1142 <description>A low-resolution map for correction of 1143 geometric distortions and chromatic aberrations, per 1144 color channel</description> 1145 <range>N, M >= 2</range> 1146 <notes>[DNG wants a function instead]. What's easiest 1147 for implementers? With an array size (M, N), entry (i, 1148 j) provides the destination for pixel (i/(M-1) * width, 1149 j/(N-1) * height). Data is row-major, with each array 1150 entry being ( (X, Y)_r, (X, Y)_g, (X, Y)_b ) )</notes> 1151 <tag id="DNG" /> 1152 </entry> 1153 <entry name="geometricCorrectionMapSize" type="int32" 1154 type_notes="width and height of geometric correction map" 1155 container="array"> 1156 <array> 1157 <size>2</size> 1158 </array> 1159 <description>Dimensions of geometric correction 1160 map</description> 1161 <range>Both values >= 2</range> 1162 <tag id="V1" /> 1163 </entry> 1164 <entry name="hyperfocalDistance" type="float"> 1165 <description>Hyperfocal distance for this lens; set to 1166 0 if fixed focus</description> 1167 <units>diopters</units> 1168 <range>>= 0</range> 1169 <notes>The hyperfocal distance is used for the old 1170 API's 'fixed' setting</notes> 1171 <tag id="BC" /> 1172 </entry> 1173 <entry name="minimumFocusDistance" type="float"> 1174 <description>Shortest distance from frontmost surface 1175 of the lens that can be focused correctly</description> 1176 <units>diopters</units> 1177 <range>>= 0</range> 1178 <notes>If the lens is fixed-focus, this should be 1179 0</notes> 1180 <tag id="V1" /> 1181 </entry> 1182 <entry name="shadingMap" type="float" 1183 type_notes="2D array of float gain factors per channel to correct for lens falloff. Should be on the order of 3x40x30" 1184 container="array"> 1185 <array> 1186 <size>3</size> 1187 <size>n</size> 1188 <size>m</size> 1189 </array> 1190 <description>A low-resolution map of lens shading, per 1191 color channel</description> 1192 <range>Each gain factor is >= 1</range> 1193 <notes>Assume bilinear interpolation of map. The least 1194 shaded section of the image should have a gain factor 1195 of 1; all other sections should have gains above 1196 1.</notes> 1197 <tag id="DNG" /> 1198 </entry> 1199 <entry name="shadingMapSize" type="int32" 1200 type_notes="width and height of lens shading map" 1201 container="array"> 1202 <array> 1203 <size>2</size> 1204 </array> 1205 <description>Dimensions of lens shading 1206 map</description> 1207 <range>Both values >= 1</range> 1208 <tag id="V1" /> 1209 </entry> 1210 </namespace> 1211 <entry name="facing" type="enum"> 1212 <enum> 1213 <value>FACING_FRONT</value> 1214 <value>FACING_BACK</value> 1215 </enum> 1216 <description>Direction the camera faces relative to 1217 device screen</description> 1218 <units>enum</units> 1219 <notes>}</notes> 1220 </entry> 1221 <entry name="opticalAxisAngle" type="float" 1222 type_notes="degrees. First defines the angle of separation between the perpendicular to the screen and the camera optical axis. The second then defines the clockwise rotation of the optical axis from native device up." 1223 container="array"> 1224 <array> 1225 <size>2</size> 1226 </array> 1227 <description>Relative angle of camera optical axis to the 1228 perpendicular axis from the display</description> 1229 <range>[0-90) for first angle, [0-360) for second</range> 1230 <notes>Examples: (0,0) means that the camera optical axis 1231 is perpendicular to the display surface; (45,0) means 1232 that the camera points 45 degrees up when device is held 1233 upright; (45,90) means the camera points 45 degrees to 1234 the right when the device is held upright. Use FACING 1235 field to determine perpendicular outgoing 1236 direction</notes> 1237 <tag id="ADV" /> 1238 </entry> 1239 <entry name="position" type="float" container="array"> 1240 <array> 1241 <size>3, location in mm, in the sensor coordinate 1242 system</size> 1243 </array> 1244 <description>Coordinates of camera optical axis on 1245 device</description> 1246 <tag id="V1" /> 1247 </entry> 1248 </static> 1249 <dynamic> 1250 <clone entry="android.lens.aperture" kind="controls"> 1251 <tag id="V1" /> 1252 </clone> 1253 <clone entry="android.lens.filterDensity" kind="controls"> 1254 <tag id="V1" /> 1255 </clone> 1256 <clone entry="android.lens.focalLength" kind="controls"> 1257 <tag id="BC" /> 1258 </clone> 1259 <clone entry="android.lens.focusDistance" kind="controls"> 1260 <notes>Should be zero for fixed-focus cameras</notes> 1261 <tag id="BC" /> 1262 </clone> 1263 <entry name="focusRange" type="float"> 1264 <description>The range of scene distances that are in 1265 sharp focus (depth of field)</description> 1266 <units>pair of focus distances in diopters: (near, 1267 far)</units> 1268 <range>>=0</range> 1269 <notes>If variable focus not supported, can still report 1270 fixed depth of field range</notes> 1271 <tag id="BC" /> 1272 </entry> 1273 <clone entry="android.lens.opticalStabilizationMode" 1274 kind="controls"> 1275 <tag id="V1" /> 1276 </clone> 1277 <entry name="state" type="enum"> 1278 <enum> 1279 <value>STATIONARY</value> 1280 </enum> 1281 <description>Current lens status</description> 1282 <tag id="V1" /> 1283 </entry> 1284 </dynamic> 1285 </section> 1286 <section name="noiseReduction"> 1287 <controls> 1288 <entry name="mode" type="enum"> 1289 <enum> 1290 <value>OFF 1291 <notes>No noise reduction is applied</notes></value> 1292 <value>FAST 1293 <notes>Must not slow down frame rate relative to raw 1294 bayer output</notes></value> 1295 <value>HIGH_QUALITY 1296 <notes>May slow down frame rate to provide highest 1297 quality</notes></value> 1298 </enum> 1299 <description>Mode of operation for the noise reduction 1300 algorithm</description> 1301 <units>enum:</units> 1302 <range>android.noiseReduction.availableModes</range> 1303 <tag id="V1" /> 1304 </entry> 1305 <entry name="strength" type="byte"> 1306 <description>Control the amount of noise reduction 1307 applied to the images</description> 1308 <units>1-10; 10 is max noise reduction</units> 1309 <range>1 - 10</range> 1310 </entry> 1311 </controls> 1312 <dynamic> 1313 <clone entry="android.noiseReduction.mode" kind="controls"> 1314 </clone> 1315 </dynamic> 1316 </section> 1317 <section name="quirks"> 1318 <static> 1319 <entry name="meteringCropRegion" type="byte"> 1320 <description>If set to 1, the camera service does not 1321 scale 'normalized' coordinates with respect to the crop 1322 region. This applies to metering input (a{e,f,wb}Region 1323 and output (face rectangles).</description> 1324 <notes>Normalized coordinates refer to those in the 1325 (-1000,1000) range mentioned in the 1326 android.hardware.Camera API. HAL implementations should 1327 instead always use and emit sensor array-relative 1328 coordinates for all region data. Does not need to be 1329 listed in static metadata. Support will be removed in 1330 future versions of camera service.</notes> 1331 </entry> 1332 <entry name="triggerAfWithAuto" type="byte"> 1333 <description>If set to 1, then the camera service always 1334 switches to FOCUS_MODE_AUTO before issuing a AF 1335 trigger.</description> 1336 <notes>HAL implementations should implement AF trigger 1337 modes for AUTO, MACRO, CONTINUOUS_FOCUS, and 1338 CONTINUOUS_PICTURE modes instead of using this flag. Does 1339 not need to be listed in static metadata. Support will be 1340 removed in future versions of camera service</notes> 1341 </entry> 1342 <entry name="useZslFormat" type="byte"> 1343 <description>If set to 1, the camera service uses 1344 CAMERA2_PIXEL_FORMAT_ZSL instead of 1345 HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED for the zero 1346 shutter lag stream</description> 1347 <notes>HAL implementations should use gralloc usage flags 1348 to determine that a stream will be used for 1349 zero-shutter-lag, instead of relying on an explicit 1350 format setting. Does not need to be listed in static 1351 metadata. Support will be removed in future versions of 1352 camera service.</notes> 1353 </entry> 1354 </static> 1355 </section> 1356 <section name="request"> 1357 <controls> 1358 <entry name="frameCount" type="int32"> 1359 <description>A frame counter set by the framework. Must 1360 be maintained unchanged in output frame</description> 1361 <units>incrementing integer</units> 1362 <range>Any int</range> 1363 </entry> 1364 <entry name="id" type="int32"> 1365 <description>An application-specified ID for the current 1366 request. Must be maintained unchanged in output 1367 frame</description> 1368 <units>arbitrary integer assigned by application</units> 1369 <range>Any int</range> 1370 <tag id="V1" /> 1371 </entry> 1372 <entry name="inputStreams" type="byte"> 1373 <description>List which camera reprocess stream is used 1374 for the source of reprocessing data.</description> 1375 <units>List of camera reprocess stream IDs</units> 1376 <range>Typically, only one entry allowed, must be a valid 1377 reprocess stream ID. If android.jpeg.needsThumbnail is 1378 set, then multiple reprocess streams may be included in a 1379 single request; they must be different scaled versions of 1380 the same image.</range> 1381 <notes>Only meaningful when android.request.type == 1382 REPROCESS. Ignored otherwise</notes> 1383 </entry> 1384 <entry name="metadataMode" type="enum"> 1385 <enum> 1386 <value>NONE 1387 <notes>No metadata should be produced on output, except 1388 for application-bound buffer data. If no 1389 application-bound streams exist, no frame should be 1390 placed in the output frame queue. If such streams 1391 exist, a frame should be placed on the output queue 1392 with null metadata but with the necessary output buffer 1393 information. Timestamp information should still be 1394 included with any output stream buffers</notes></value> 1395 <value>FULL 1396 <notes>All metadata should be produced. Statistics will 1397 only be produced if they are separately 1398 enabled</notes></value> 1399 </enum> 1400 <description>How much metadata to produce on 1401 output</description> 1402 <units>Enum:</units> 1403 </entry> 1404 <entry name="outputStreams" type="byte"> 1405 <description>Lists which camera output streams image data 1406 from this capture must be sent to</description> 1407 <units>List of camera stream IDs</units> 1408 <range>List must only include streams that have been 1409 created</range> 1410 <notes>If no output streams are listed, then the image 1411 data should simply be discarded. The image data must 1412 still be captured for metadata and statistics production, 1413 and the lens and flash must operate as requested.</notes> 1414 </entry> 1415 <entry name="type" type="enum"> 1416 <enum> 1417 <value>CAPTURE 1418 <notes>Capture a new image from the imaging hardware, 1419 and process it according to the 1420 settings</notes></value> 1421 <value>REPROCESS 1422 <notes>Process previously captured data; the 1423 android.request.inputStream parameter determines the 1424 source reprocessing stream. TODO: Mark dynamic metadata 1425 needed for reprocessing with [RP]</notes></value> 1426 </enum> 1427 <description>The type of the request; either CAPTURE or 1428 REPROCESS</description> 1429 <units>Enum:</units> 1430 </entry> 1431 </controls> 1432 <static> 1433 <entry name="maxNumOutputStreams" type="int32" 1434 container="array"> 1435 <array> 1436 <size>3</size> 1437 </array> 1438 <description>How many output streams can be allocated at 1439 the same time for each type of stream</description> 1440 <units>The number of raw sensor streams; the number of 1441 processed, uncompressed streams; and the number of 1442 JPEG-compressed streams</units> 1443 <range>>=1 for Raw and JPEG-compressed stream. >= 3 1444 for processed, uncompressed streams</range> 1445 <notes>Video snapshot with preview callbacks requires 3 1446 processed streams (preview, record, app callbacks) and 1447 one JPEG stream (snapshot)</notes> 1448 <tag id="BC" /> 1449 </entry> 1450 <entry name="maxNumReprocessStreams" type="int32" 1451 container="array"> 1452 <array> 1453 <size>1</size> 1454 </array> 1455 <description>How many reprocessing streams of any type 1456 can be allocated at the same time</description> 1457 <range>>= 1</range> 1458 </entry> 1459 </static> 1460 <dynamic> 1461 <entry name="frameCount" type="int32"> 1462 <description>Number of frames captured since 1463 open()</description> 1464 <units>count of frames</units> 1465 <range>> 0</range> 1466 <notes>Reset on release()</notes> 1467 </entry> 1468 <clone entry="android.request.id" kind="controls"></clone> 1469 <clone entry="android.request.metadataMode" 1470 kind="controls"></clone> 1471 <clone entry="android.request.outputStreams" 1472 kind="controls"></clone> 1473 </dynamic> 1474 </section> 1475 <section name="scaler"> 1476 <controls> 1477 <entry name="cropRegion" type="int32" container="array"> 1478 <array> 1479 <size>3</size> 1480 </array> 1481 <description>Top-left corner and width of the output 1482 region to select from the active pixel 1483 array</description> 1484 <units>(x,y) of top-left corner, width of region in 1485 pixels; (0,0) is top-left corner of 1486 android.sensor.activePixelArray</units> 1487 <notes>[BC - zoom] Height determined based on width and 1488 aspect ratio of output stream. Negative values for corner 1489 are allowed for raw output if full pixel array is larger 1490 than active pixel array. Width may be rounded to nearest 1491 larger supportable width, especially for raw output, 1492 where only a few fixed scales may be possible</notes> 1493 <tag id="BC" /> 1494 </entry> 1495 </controls> 1496 <static> 1497 <entry name="availableFormats" type="enum" 1498 type_notes="values from HAL_PIXEL_FORMAT_* in /system/core/include/system/graphics.h" 1499 container="array"> 1500 <array> 1501 <size>n</size> 1502 </array> 1503 <enum> 1504 <value id="0x20">RAW_SENSOR 1505 </value> 1506 <value id="0x32315659">YV12 1507 <notes>YCrCb 4:2:0 Planar</notes> 1508 </value> 1509 <value id="0x11">YCbCr_420_SP 1510 <notes>NV21</notes> 1511 </value> 1512 <value id="0x21">JPEG 1513 <notes>BLOB</notes> 1514 </value> 1515 </enum> 1516 <description>List of app-visible formats</description> 1517 <tag id="BC" /> 1518 </entry> 1519 <entry name="availableJpegMinDurations" type="int64" 1520 container="array"> 1521 <array> 1522 <size>n</size> 1523 </array> 1524 <description>The minimum frame duration that is supported 1525 for each resolution in availableJpegSizes. Should 1526 correspond to the frame duration when only that JPEG 1527 stream is active, with all processing set to 1528 FAST</description> 1529 <notes>When multiple streams are configured, the minimum 1530 frame duration will be >= max(individual stream min 1531 durations)</notes> 1532 <tag id="BC" /> 1533 </entry> 1534 <entry name="availableJpegSizes" type="int32" 1535 container="array"> 1536 <array> 1537 <size>n</size> 1538 <size>2</size> 1539 </array> 1540 <description>The resolutions available for output from 1541 the JPEG block. Listed as width x height</description> 1542 <range>Must include: - sensor maximum resolution Should 1543 include: - half/quarter max resolution</range> 1544 <tag id="BC" /> 1545 </entry> 1546 <entry name="availableProcessedMinDurations" type="int64" 1547 container="array"> 1548 <array> 1549 <size>n</size> 1550 </array> 1551 <description>The minimum frame duration that is supported 1552 for each resolution in availableProcessedSizes. Should 1553 correspond to the frame duration when only that processed 1554 stream is active, with all processing set to 1555 FAST</description> 1556 <notes>When multiple streams are configured, the minimum 1557 frame duration will be >= max(individual stream min 1558 durations)</notes> 1559 <tag id="BC" /> 1560 </entry> 1561 <entry name="availableProcessedSizes" type="int32" 1562 container="array"> 1563 <array> 1564 <size>n</size> 1565 <size>2</size> 1566 </array> 1567 <description>The resolutions available for use with 1568 processed output streams, such as YV12, NV12, and 1569 platform opaque YUV/RGB streams to the GPU or video 1570 encoders. Listed as width, height</description> 1571 <range>Must include: - sensor maximum resolution - 1572 standard QCIF, 240p, 480p, 720p, and 1080p 1573 resolutions</range> 1574 <tag id="BC" /> 1575 </entry> 1576 <entry name="availableRawMinDurations" type="int64" 1577 container="array"> 1578 <array> 1579 <size>n</size> 1580 </array> 1581 <description>The minimum frame duration that is supported 1582 for each raw resolution in availableRawSizes. Should 1583 correspond to the frame duration when only the raw stream 1584 is active.</description> 1585 <notes>When multiple streams are configured, the minimum 1586 frame duration will be >= max(individual stream min 1587 durations)</notes> 1588 <tag id="BC" /> 1589 </entry> 1590 <entry name="availableRawSizes" type="int32" 1591 container="array"> 1592 <array> 1593 <size>n</size> 1594 <size>2</size> 1595 </array> 1596 <description>The resolutions available for use with raw 1597 sensor output streams, listed as width, 1598 height</description> 1599 <range>Must include: - sensor maximum resolution</range> 1600 </entry> 1601 <entry name="maxDigitalZoom" type="float"> 1602 <description>The maximum ratio between active area width 1603 and crop region width, or between active area height and 1604 crop region height, if the crop region height is larger 1605 than width</description> 1606 <range>>=1</range> 1607 <tag id="BC" /> 1608 </entry> 1609 </static> 1610 <dynamic> 1611 <clone entry="android.scaler.cropRegion" kind="controls"> 1612 </clone> 1613 </dynamic> 1614 </section> 1615 <section name="sensor"> 1616 <controls> 1617 <entry name="exposureTime" type="int64"> 1618 <description>Duration each pixel is exposed to 1619 light</description> 1620 <units>nanoseconds</units> 1621 <range>android.sensor.info.exposureTimeRange</range> 1622 <notes>1/10000 - 30 sec range. No bulb mode</notes> 1623 <tag id="V1" /> 1624 </entry> 1625 <entry name="frameDuration" type="int64"> 1626 <description>Duration from start of frame exposure to 1627 start of next frame exposure</description> 1628 <units>nanoseconds</units> 1629 <range>see android.sensor.info.maxFrameDuration, 1630 android.scaler.info.availableMinFrameDurations</range> 1631 <notes>Exposure time has priority, so duration is set to 1632 max(duration, exposure time + overhead)</notes> 1633 <tag id="V1" /> 1634 <tag id="BC" /> 1635 </entry> 1636 <entry name="sensitivity" type="int32"> 1637 <description>Gain applied to image data. Must be 1638 implemented through analog gain only if set to values 1639 below 'maximum analog sensitivity'.</description> 1640 <units>ISO arithmetic units</units> 1641 <range>android.sensor.info.sensitivityRange</range> 1642 <notes>ISO 12232:2006 REI method</notes> 1643 <tag id="V1" /> 1644 </entry> 1645 </controls> 1646 <static> 1647 <namespace name="info"> 1648 <entry name="activeArraySize" type="int32" 1649 type_notes="Four ints defining the active pixel rectangle" 1650 container="array"> 1651 <array> 1652 <size>4</size> 1653 </array> 1654 <description>Area of raw data which corresponds to only 1655 active pixels; smaller or equal to 1656 pixelArraySize.</description> 1657 <units>xmin, ymin, width, height. Top left of full 1658 pixel array is (0,0)</units> 1659 <tag id="DNG" /> 1660 </entry> 1661 <entry name="availableSensitivities" type="int32" 1662 type_notes="List of supported sensitivity values" 1663 container="array"> 1664 <array> 1665 <size>n</size> 1666 </array> 1667 <description>Range of valid sensitivities</description> 1668 <range>Must at least include 100, 200, 400, 800, 1669 1600</range> 1670 <tag id="BC" /> 1671 <tag id="V1" /> 1672 </entry> 1673 <entry name="colorFilterArrangement" type="enum"> 1674 <enum> 1675 <value>RGGB</value> 1676 <value>GRBG</value> 1677 <value>GBRG</value> 1678 <value>BGGR</value> 1679 <value>RGB 1680 <notes>Sensor is not Bayer; output has 3 16-bit 1681 values for each pixel, instead of just 1 16-bit value 1682 per pixel.</notes></value> 1683 </enum> 1684 <description>Arrangement of color filters on sensor; 1685 represents the colors in the top-left 2x2 section of 1686 the sensor, in reading order</description> 1687 <units>Enum</units> 1688 <tag id="DNG" /> 1689 </entry> 1690 <entry name="exposureTimeRange" type="int64" 1691 type_notes="nanoseconds" container="array"> 1692 <array> 1693 <size>2</size> 1694 </array> 1695 <description>Range of valid exposure 1696 times</description> 1697 <range>Min <= 100e3 (100 us), Max >= 30e9 (30 1698 sec)</range> 1699 <tag id="V1" /> 1700 </entry> 1701 <entry name="maxFrameDuration" type="int64"> 1702 <description>Maximum frame duration (minimum frame 1703 rate)</description> 1704 <units>nanoseconds</units> 1705 <range>>= 30e9</range> 1706 <notes>Minimum duration is a function of resolution, 1707 processing settings. See 1708 android.scaler.info.availableMinFrameDurations</notes> 1709 <tag id="BC" /> 1710 <tag id="V1" /> 1711 </entry> 1712 <entry name="physicalSize" type="float" 1713 type_notes="width x height in millimeters" 1714 container="array"> 1715 <array> 1716 <size>2</size> 1717 </array> 1718 <description>The physical dimensions of the full pixel 1719 array</description> 1720 <notes>Needed for FOV calculation for old API</notes> 1721 <tag id="V1" /> 1722 <tag id="BC" /> 1723 </entry> 1724 <entry name="pixelArraySize" type="int32" 1725 container="array"> 1726 <array> 1727 <size>2</size> 1728 </array> 1729 <description>Dimensions of full pixel array, possibly 1730 including black calibration pixels</description> 1731 <notes>Maximum output resolution for raw format must 1732 match this in 1733 android.scaler.info.availableSizesPerFormat</notes> 1734 <tag id="DNG" /> 1735 <tag id="BC" /> 1736 </entry> 1737 <entry name="whiteLevel" type="int32"> 1738 <description>Maximum raw value output by 1739 sensor</description> 1740 <range>> 1024 (10-bit output)</range> 1741 <notes>Defines sensor bit depth (10-14 bits is 1742 expected)</notes> 1743 <tag id="DNG" /> 1744 </entry> 1745 </namespace> 1746 <entry name="baseGainFactor" type="rational"> 1747 <description>Gain factor from electrons to raw units when 1748 ISO=100</description> 1749 <tag id="V1" /> 1750 </entry> 1751 <entry name="blackLevelPattern" type="int32" 1752 type_notes="2x2 raw count block" container="array"> 1753 <array> 1754 <size>4</size> 1755 </array> 1756 <description>A fixed black level offset for each of the 1757 Bayer mosaic channels</description> 1758 <range>>= 0 each</range> 1759 <notes>As per DNG BlackLevelRepeatDim / BlackLevel 1760 tags</notes> 1761 <tag id="DNG" /> 1762 </entry> 1763 <entry name="calibrationTransform1" type="rational" 1764 type_notes="3x3 matrix in row-major-order" 1765 container="array"> 1766 <array> 1767 <size>9</size> 1768 </array> 1769 <description>Per-device calibration on top of color space 1770 transform 1</description> 1771 <tag id="DNG" /> 1772 </entry> 1773 <entry name="calibrationTransform2" type="rational" 1774 type_notes="3x3 matrix in row-major-order" 1775 container="array"> 1776 <array> 1777 <size>9</size> 1778 </array> 1779 <description>Per-device calibration on top of color space 1780 transform 2</description> 1781 <tag id="DNG" /> 1782 </entry> 1783 <entry name="colorTransform1" type="rational" 1784 type_notes="3x3 matrix in row-major-order" 1785 container="array"> 1786 <array> 1787 <size>9</size> 1788 </array> 1789 <description>Linear mapping from XYZ (D50) color space to 1790 reference linear sensor color, for first reference 1791 illuminant</description> 1792 <notes>Use as follows XYZ = inv(transform) * clip( (raw - 1793 black level(raw) ) / ( white level - max black level) ). 1794 At least in the simple case</notes> 1795 <tag id="DNG" /> 1796 </entry> 1797 <entry name="colorTransform2" type="rational" 1798 type_notes="3x3 matrix in row-major-order" 1799 container="array"> 1800 <array> 1801 <size>9</size> 1802 </array> 1803 <description>Linear mapping from XYZ (D50) color space to 1804 reference linear sensor color, for second reference 1805 illuminant</description> 1806 <tag id="DNG" /> 1807 </entry> 1808 <entry name="forwardMatrix1" type="rational" 1809 type_notes="3x3 matrix in row-major-order" 1810 container="array"> 1811 <array> 1812 <size>9</size> 1813 </array> 1814 <description>Used by DNG for better WB 1815 adaptation</description> 1816 <tag id="DNG" /> 1817 </entry> 1818 <entry name="forwardMatrix2" type="rational" 1819 type_notes="3x3 matrix in row-major-order" 1820 container="array"> 1821 <array> 1822 <size>9</size> 1823 </array> 1824 <description>Used by DNG for better WB 1825 adaptation</description> 1826 <tag id="DNG" /> 1827 </entry> 1828 <entry name="maxAnalogSensitivity" type="int32"> 1829 <description>Maximum sensitivity that is implemented 1830 purely through analog gain</description> 1831 <notes>For android.sensor.sensitivity values less than or 1832 equal to this, all applied gain must be analog. For 1833 values above this, it can be a mix of analog and 1834 digital</notes> 1835 <tag id="V1" /> 1836 </entry> 1837 <entry name="noiseModelCoefficients" type="float" 1838 type_notes="float constants A, B for the noise variance model" 1839 container="array"> 1840 <array> 1841 <size>2</size> 1842 </array> 1843 <description>Estimation of sensor noise 1844 characteristics</description> 1845 <units>var(raw pixel value) = electrons * (baseGainFactor 1846 * iso/100)^2 + A * (baseGainFactor * iso/100)^2 + 1847 B</units> 1848 <notes>A represents sensor read noise before analog 1849 amplification; B represents noise from A/D conversion and 1850 other circuits after amplification. Both noise sources 1851 are assumed to be gaussian, independent, and not to vary 1852 across the sensor</notes> 1853 <tag id="V1" /> 1854 </entry> 1855 <entry name="orientation" type="int32"> 1856 <description>Clockwise angle through which the output 1857 image needs to be rotated to be upright on the device 1858 screen in its native orientation. Also defines the 1859 direction of rolling shutter readout, which is from top 1860 to bottom in the sensor's coordinate system</description> 1861 <units>degrees clockwise rotation, only multiples of 1862 90</units> 1863 <range>0,90,180,270</range> 1864 <tag id="BC" /> 1865 </entry> 1866 <entry name="referenceIlluminant1" type="enum"> 1867 <enum> 1868 <value id="1">DAYLIGHT</value> 1869 <value id="2">FLUORESCENT</value> 1870 <value id="3">TUNGSTEN 1871 <notes>Incandescent light</notes></value> 1872 <value id="4">FLASH</value> 1873 <value id="9">FINE_WEATHER</value> 1874 <value id="10">CLOUDY_WEATHER</value> 1875 <value id="11">SHADE</value> 1876 <value id="12">DAYLIGHT_FLUORESCENT 1877 <notes>D 5700 - 7100K</notes></value> 1878 <value id="13">DAY_WHITE_FLUORESCENT 1879 <notes>N 4600 - 5400K</notes></value> 1880 <value id="14">COOL_WHITE_FLUORESCENT 1881 <notes>W 3900 - 4500K</notes></value> 1882 <value id="15">WHITE_FLUORESCENT 1883 <notes>WW 3200 - 3700K</notes></value> 1884 <value id="17">STANDARD_A</value> 1885 <value id="18">STANDARD_B</value> 1886 <value id="19">STANDARD_C</value> 1887 <value id="20">D55</value> 1888 <value id="21">D65</value> 1889 <value id="22">D75</value> 1890 <value id="23">D50</value> 1891 <value id="24">ISO_STUDIO_TUNGSTEN</value> 1892 </enum> 1893 <description>Light source used to define transform 1894 1</description> 1895 <units>Enum</units> 1896 <notes>[EXIF LightSource tag] Must all these be 1897 supported? Need CCT for each!</notes> 1898 <tag id="DNG" /> 1899 <tag id="EXIF" /> 1900 </entry> 1901 <entry name="referenceIlluminant2" type="byte"> 1902 <description>Light source used to define transform 1903 2</description> 1904 <units>Same as illuminant 1</units> 1905 </entry> 1906 </static> 1907 <dynamic> 1908 <clone entry="android.sensor.exposureTime" kind="controls"> 1909 </clone> 1910 <clone entry="android.sensor.frameDuration" 1911 kind="controls"></clone> 1912 <clone entry="android.sensor.sensitivity" kind="controls"> 1913 </clone> 1914 <entry name="timestamp" type="int64"> 1915 <description>Time at start of exposure of first 1916 row</description> 1917 <units>nanoseconds</units> 1918 <range>> 0</range> 1919 <notes>Monotonic, should be synced to other timestamps in 1920 system</notes> 1921 <tag id="BC" /> 1922 </entry> 1923 </dynamic> 1924 </section> 1925 <section name="shading"> 1926 <controls> 1927 <entry name="mode" type="enum"> 1928 <enum> 1929 <value>OFF 1930 <notes>No shading correction is applied</notes></value> 1931 <value>FAST 1932 <notes>Must not slow down frame rate relative to raw 1933 bayer output</notes></value> 1934 <value>HIGH_QUALITY 1935 <notes>Frame rate may be reduced by high 1936 quality</notes></value> 1937 </enum> 1938 <description>Quality of lens shading correction applied 1939 to the image data</description> 1940 <units>enum:</units> 1941 </entry> 1942 <entry name="strength" type="byte"> 1943 <description>Control the amount of shading correction 1944 applied to the images</description> 1945 <units>unitless: 1-10; 10 is full shading 1946 compensation</units> 1947 <tag id="ADV" /> 1948 </entry> 1949 </controls> 1950 <dynamic> 1951 <clone entry="android.shading.mode" kind="controls"> 1952 </clone> 1953 </dynamic> 1954 </section> 1955 <section name="statistics"> 1956 <controls> 1957 <entry name="faceDetectMode" type="enum"> 1958 <enum> 1959 <value>OFF</value> 1960 <value>SIMPLE 1961 <notes>Optional Return rectangle and confidence 1962 only</notes></value> 1963 <value>FULL 1964 <notes>Optional Return all face 1965 metadata</notes></value> 1966 </enum> 1967 <description>State of the face detector 1968 unit</description> 1969 <units>enum</units> 1970 <range> 1971 android.statistics.availableFaceDetectModes</range> 1972 <tag id="BC" /> 1973 </entry> 1974 <entry name="histogramMode" type="enum"> 1975 <enum> 1976 <value>OFF</value> 1977 <value>ON</value> 1978 </enum> 1979 <description>Operating mode for histogram 1980 generation</description> 1981 <units>enum</units> 1982 <tag id="V1" /> 1983 </entry> 1984 <entry name="sharpnessMapMode" type="enum"> 1985 <enum> 1986 <value>OFF</value> 1987 <value>ON</value> 1988 </enum> 1989 <description>Operating mode for sharpness map 1990 generation</description> 1991 <units>enum</units> 1992 <tag id="V1" /> 1993 </entry> 1994 </controls> 1995 <static> 1996 <namespace name="info"> 1997 <entry name="availableFaceDetectModes" type="byte" 1998 type_notes="List of enums" container="array"> 1999 <array> 2000 <size>n</size> 2001 </array> 2002 <description>Which face detection modes are available, 2003 if any</description> 2004 <range>OFF</range> 2005 </entry> 2006 <entry name="histogramBucketCount" type="int32"> 2007 <description>Number of histogram buckets 2008 supported</description> 2009 <range>>= 64</range> 2010 </entry> 2011 <entry name="maxFaceCount" type="int32"> 2012 <description>If face detection is supported, how many 2013 faces can be detected at once</description> 2014 <range>>= 4 if availableFaceDetectionModes lists 2015 modes besides OFF, otherwise 0</range> 2016 </entry> 2017 <entry name="maxHistogramCount" type="int32"> 2018 <description>Maximum value possible for a histogram 2019 bucket</description> 2020 </entry> 2021 <entry name="maxSharpnessMapValue" type="int32"> 2022 <description>Maximum value possible for a sharpness map 2023 region.</description> 2024 </entry> 2025 <entry name="sharpnessMapSize" type="int32" 2026 type_notes="width x height" container="array"> 2027 <array> 2028 <size>2</size> 2029 </array> 2030 <description>Dimensions of the sharpness 2031 map</description> 2032 <range>Must be at least 32 x 32</range> 2033 </entry> 2034 </namespace> 2035 </static> 2036 <dynamic> 2037 <clone entry="android.statistics.faceDetectMode" 2038 kind="controls"></clone> 2039 <entry name="faceIds" type="int32" container="array"> 2040 <array> 2041 <size>n</size> 2042 </array> 2043 <description>List of unique IDs for detected 2044 faces</description> 2045 <notes>Only available if faceDetectMode == FULL</notes> 2046 <tag id="BC" /> 2047 </entry> 2048 <entry name="faceLandmarks" type="int32" 2049 type_notes="(leftEyeX, leftEyeY, rightEyeX, rightEyeY, mouthX, mouthY)" 2050 container="array"> 2051 <array> 2052 <size>n</size> 2053 <size>6</size> 2054 </array> 2055 <description>List of landmarks for detected 2056 faces</description> 2057 <notes>Only available if faceDetectMode == FULL</notes> 2058 <tag id="BC" /> 2059 </entry> 2060 <entry name="faceRectangles" type="int32" 2061 type_notes="(xmin, ymin, xmax, ymax). (0,0) is top-left of active pixel area" 2062 container="array"> 2063 <array> 2064 <size>n</size> 2065 <size>4</size> 2066 </array> 2067 <description>List of the bounding rectangles for detected 2068 faces</description> 2069 <notes>Only available if faceDetectMode != OFF</notes> 2070 <tag id="BC" /> 2071 </entry> 2072 <entry name="faceScores" type="byte" container="array"> 2073 <array> 2074 <size>n</size> 2075 </array> 2076 <description>List of the face confidence scores for 2077 detected faces</description> 2078 <range>0-100</range> 2079 <notes>Only available if faceDetectMode != OFF</notes> 2080 <tag id="BC" /> 2081 </entry> 2082 <entry name="histogram" type="int32" 2083 type_notes="count of pixels for each color channel that fall into each histogram bucket, scaled to be between 0 and maxHistogramCount" 2084 container="array"> 2085 <array> 2086 <size>n</size> 2087 <size>3</size> 2088 </array> 2089 <description>A 3-channel histogram based on the raw 2090 sensor data</description> 2091 <notes>The k'th bucket (0-based) covers the input range 2092 (with w = android.sensor.info.whiteLevel) of [ k * w/N, 2093 (k + 1) * w / N ). If only a monochrome sharpness map is 2094 supported, all channels should have the same data</notes> 2095 <tag id="V1" /> 2096 </entry> 2097 <clone entry="android.statistics.histogramMode" 2098 kind="controls"></clone> 2099 <entry name="sharpnessMap" type="int32" 2100 type_notes="estimated sharpness for each region of the input image. Normalized to be between 0 and maxSharpnessMapValue. Higher values mean sharper (better focused)" 2101 container="array"> 2102 <array> 2103 <size>n</size> 2104 <size>m</size> 2105 <size>3</size> 2106 </array> 2107 <description>A 3-channel sharpness map, based on the raw 2108 sensor data</description> 2109 <notes>If only a monochrome sharpness map is supported, 2110 all channels should have the same data</notes> 2111 <tag id="V1" /> 2112 </entry> 2113 <clone entry="android.statistics.sharpnessMapMode" 2114 kind="controls"></clone> 2115 </dynamic> 2116 </section> 2117 <section name="tonemap"> 2118 <controls> 2119 <entry name="curveBlue" type="byte"> 2120 <description>Table mapping blue input values to output 2121 values</description> 2122 <units>same as android.tonemap.curveRed</units> 2123 <range>same as android.tonemap.curveRed</range> 2124 </entry> 2125 <entry name="curveGreen" type="byte"> 2126 <description>Table mapping green input values to output 2127 values</description> 2128 <units>same as android.tonemap.curveRed</units> 2129 <range>same as android.tonemap.curveRed</range> 2130 </entry> 2131 <entry name="curveRed" type="float" 2132 type_notes="A 1D array of pairs of floats. mapping a 0-1 input range to a 0-1 output range." 2133 container="array"> 2134 <array> 2135 <size>n</size> 2136 <size>2</size> 2137 </array> 2138 <description>Table mapping red input values to output 2139 values</description> 2140 <range>0-1 on input and output coordinates. Max entry 2141 count speciied by android.tonemap.maxCurvePoints</range> 2142 <notes>.The input range must be monotonically increasing 2143 with N, and values between entries should be linearly 2144 interpolated. For example, if the array is: [0.0, 0.0, 2145 0.3, 0.5, 1.0, 1.0], then the input->output mapping 2146 for a few sample points would be: 0 -> 0, 0.15 -> 2147 0.25, 0.3 -> 0.5, 0.5 -> 0.64</notes> 2148 <tag id="DNG" /> 2149 </entry> 2150 <entry name="mode" type="enum"> 2151 <enum> 2152 <value>CONTRAST_CURVE 2153 <notes>Use the tone mapping curve specified in 2154 android.tonemap.curve</notes></value> 2155 <value>FAST 2156 <notes>Must not slow down frame rate relative to raw 2157 bayer output</notes></value> 2158 <value>HIGH_QUALITY 2159 <notes>Frame rate may be reduced by high 2160 quality</notes></value> 2161 </enum> 2162 <units>enum:</units> 2163 </entry> 2164 </controls> 2165 <static> 2166 <entry name="maxCurvePoints" type="int32"> 2167 <description>Maximum number of supported points in the 2168 tonemap curve</description> 2169 <range>>= 128</range> 2170 </entry> 2171 </static> 2172 <dynamic> 2173 <clone entry="android.tonemap.curveBlue" kind="controls"> 2174 </clone> 2175 <clone entry="android.tonemap.curveGreen" kind="controls"> 2176 </clone> 2177 <clone entry="android.tonemap.curveRed" kind="controls"> 2178 </clone> 2179 <clone entry="android.tonemap.mode" kind="controls"> 2180 </clone> 2181 </dynamic> 2182 </section> 2183 </namespace> 2184</metadata> 2185