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