docs.html revision 30bf75b88a25a49fdd388fc3c5a77ecbdede2e24
1<!DOCTYPE html> 2<html> 3<!-- Copyright (C) 2012 The Android Open Source Project 4 5 Licensed under the Apache License, Version 2.0 (the "License"); 6 you may not use this file except in compliance with the License. 7 You may obtain a copy of the License at 8 9 http://www.apache.org/licenses/LICENSE-2.0 10 11 Unless required by applicable law or agreed to in writing, software 12 distributed under the License is distributed on an "AS IS" BASIS, 13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 See the License for the specific language governing permissions and 15 limitations under the License. 16--> 17<head> 18 <!-- automatically generated from html.mako. do NOT edit directly --> 19 <meta charset="utf-8" /> 20 <title>Android Camera HAL3.2 Properties</title> 21 <style type="text/css"> 22 body { background-color: #f7f7f7; font-family: Roboto, sans-serif;} 23 h1 { color: #333333; } 24 h2 { color: #333333; } 25 a:link { color: #258aaf; text-decoration: none} 26 a:hover { color: #459aaf; text-decoration: underline } 27 a:visited { color: #154a5f; text-decoration: none} 28 .section { color: #eeeeee; font-size: 1.5em; font-weight: bold; background-color: #888888; padding: 0.5em 0em 0.5em 0.5em; border-width: thick thin thin thin; border-color: #111111 #777777 #777777 #777777} 29 .kind { color: #eeeeee; font-size: 1.2em; font-weight: bold; padding-left: 1.5em; background-color: #aaaaaa } 30 .entry { background-color: #f0f0f0 } 31 .entry_cont { background-color: #f0f0f0 } 32 .entries_header { background-color: #dddddd; text-align: center} 33 34 /* toc style */ 35 .toc_section_header { font-size:1.3em; } 36 .toc_kind_header { font-size:1.2em; } 37 .toc_deprecated { text-decoration:line-through; } 38 39 /* table column sizes */ 40 table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word } 41 td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em } 42 .th_name { width: 20% } 43 .th_units { width: 10% } 44 .th_tags { width: 5% } 45 .th_details { width: 25% } 46 .th_type { width: 20% } 47 .th_description { width: 20% } 48 .th_range { width: 10% } 49 td { font-size: 0.9em; } 50 51 /* hide the first thead, we need it there only to enforce column sizes */ 52 .thead_dummy { visibility: hidden; } 53 54 /* Entry flair */ 55 .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; } 56 .entry_name_deprecated { text-decoration:line-through; } 57 58 /* Entry type flair */ 59 .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;} 60 .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" } 61 .entry_type_visibility { font-weight: bolder; padding-left:1em} 62 .entry_type_synthetic { font-weight: bolder; color: #996600; } 63 .entry_type_hwlevel { font-weight: bolder; color: #000066; } 64 .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; } 65 .entry_type_enum_name { font-family: monospace; font-weight: bolder; } 66 .entry_type_enum_notes:before { content:" - " } 67 .entry_type_enum_notes>p:first-child { display:inline; } 68 .entry_type_enum_value:before { content:" = " } 69 .entry_type_enum_value { font-family: monospace; } 70 .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; } 71 .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;} 72 .entry_range_deprecated { font-weight: bolder; } 73 74 /* Entry tags flair */ 75 .entry_tags ul { list-style-type: none; } 76 77 /* Entry details (full docs) flair */ 78 .entry_details_header { font-weight: bold; background-color: #dddddd; 79 text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; } 80 81 /* Entry spacer flair */ 82 .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; } 83 84 /* TODO: generate abbr element for each tag link? */ 85 /* TODO for each x.y.z try to link it to the entry */ 86 87 </style> 88 89 <style> 90 91 { 92 /* broken... 93 supposedly there is a bug in chrome that it lays out tables before 94 it knows its being printed, so the page-break-* styles are ignored 95 */ 96 tr { page-break-after: always; page-break-inside: avoid; } 97 } 98 99 </style> 100</head> 101 102 103 104<body> 105 <h1>Android Camera HAL3.2 Properties</h1> 106 107 108 <h2>Table of Contents</h2> 109 <ul class="toc"> 110 <li><a href="#tag_index" class="toc_section_header">Tags</a></li> 111 <li> 112 <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span> 113 <ul class="toc_section"> 114 <li> 115 <span class="toc_kind_header">controls</span> 116 <ul class="toc_section"> 117 <li 118 ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li> 119 <li 120 ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li> 121 <li 122 ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li> 123 <li 124 ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li> 125 </ul> 126 </li> 127 <li> 128 <span class="toc_kind_header">dynamic</span> 129 <ul class="toc_section"> 130 <li 131 ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li> 132 <li 133 ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li> 134 <li 135 ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li> 136 <li 137 ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li> 138 </ul> 139 </li> 140 <li> 141 <span class="toc_kind_header">static</span> 142 <ul class="toc_section"> 143 <li 144 ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li> 145 </ul> 146 </li> 147 </ul> <!-- toc_section --> 148 </li> 149 <li> 150 <span class="toc_section_header"><a href="#section_control">control</a></span> 151 <ul class="toc_section"> 152 <li> 153 <span class="toc_kind_header">controls</span> 154 <ul class="toc_section"> 155 <li 156 ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 157 <li 158 ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 159 <li 160 ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li> 161 <li 162 ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li> 163 <li 164 ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li> 165 <li 166 ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 167 <li 168 ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 169 <li 170 ><a href="#controls_android.control.afMode">android.control.afMode</a></li> 171 <li 172 ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li> 173 <li 174 ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li> 175 <li 176 ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li> 177 <li 178 ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li> 179 <li 180 ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li> 181 <li 182 ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li> 183 <li 184 ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li> 185 <li 186 ><a href="#controls_android.control.mode">android.control.mode</a></li> 187 <li 188 ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li> 189 <li 190 ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 191 </ul> 192 </li> 193 <li> 194 <span class="toc_kind_header">static</span> 195 <ul class="toc_section"> 196 <li 197 ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li> 198 <li 199 ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li> 200 <li 201 ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li> 202 <li 203 ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li> 204 <li 205 ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li> 206 <li 207 ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li> 208 <li 209 ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li> 210 <li 211 ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li> 212 <li 213 ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li> 214 <li 215 ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li> 216 <li 217 ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li> 218 <li 219 ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li> 220 <li 221 ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li> 222 <li 223 ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li> 224 <li 225 ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li> 226 <li 227 ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li> 228 <li 229 ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li> 230 <li 231 ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li> 232 <li 233 ><a href="#static_android.control.availableModes">android.control.availableModes</a></li> 234 </ul> 235 </li> 236 <li> 237 <span class="toc_kind_header">dynamic</span> 238 <ul class="toc_section"> 239 <li 240 class="toc_deprecated" 241 ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li> 242 <li 243 ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 244 <li 245 ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 246 <li 247 ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li> 248 <li 249 ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li> 250 <li 251 ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li> 252 <li 253 ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 254 <li 255 ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 256 <li 257 ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li> 258 <li 259 ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li> 260 <li 261 ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li> 262 <li 263 ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li> 264 <li 265 ><a href="#dynamic_android.control.afState">android.control.afState</a></li> 266 <li 267 class="toc_deprecated" 268 ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li> 269 <li 270 ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li> 271 <li 272 ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li> 273 <li 274 ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li> 275 <li 276 ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li> 277 <li 278 ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li> 279 <li 280 ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li> 281 <li 282 ><a href="#dynamic_android.control.mode">android.control.mode</a></li> 283 <li 284 ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li> 285 <li 286 ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 287 </ul> 288 </li> 289 </ul> <!-- toc_section --> 290 </li> 291 <li> 292 <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span> 293 <ul class="toc_section"> 294 <li> 295 <span class="toc_kind_header">controls</span> 296 <ul class="toc_section"> 297 <li 298 ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li> 299 </ul> 300 </li> 301 </ul> <!-- toc_section --> 302 </li> 303 <li> 304 <span class="toc_section_header"><a href="#section_edge">edge</a></span> 305 <ul class="toc_section"> 306 <li> 307 <span class="toc_kind_header">controls</span> 308 <ul class="toc_section"> 309 <li 310 ><a href="#controls_android.edge.mode">android.edge.mode</a></li> 311 <li 312 ><a href="#controls_android.edge.strength">android.edge.strength</a></li> 313 </ul> 314 </li> 315 <li> 316 <span class="toc_kind_header">static</span> 317 <ul class="toc_section"> 318 <li 319 ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li> 320 </ul> 321 </li> 322 <li> 323 <span class="toc_kind_header">dynamic</span> 324 <ul class="toc_section"> 325 <li 326 ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li> 327 </ul> 328 </li> 329 </ul> <!-- toc_section --> 330 </li> 331 <li> 332 <span class="toc_section_header"><a href="#section_flash">flash</a></span> 333 <ul class="toc_section"> 334 <li> 335 <span class="toc_kind_header">controls</span> 336 <ul class="toc_section"> 337 <li 338 ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li> 339 <li 340 ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li> 341 <li 342 ><a href="#controls_android.flash.mode">android.flash.mode</a></li> 343 </ul> 344 </li> 345 <li> 346 <span class="toc_kind_header">static</span> 347 <ul class="toc_section"> 348 349 <li 350 ><a href="#static_android.flash.info.available">android.flash.info.available</a></li> 351 <li 352 ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li> 353 354 <li 355 ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li> 356 <li 357 ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li> 358 </ul> 359 </li> 360 <li> 361 <span class="toc_kind_header">dynamic</span> 362 <ul class="toc_section"> 363 <li 364 ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li> 365 <li 366 ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li> 367 <li 368 ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li> 369 <li 370 ><a href="#dynamic_android.flash.state">android.flash.state</a></li> 371 </ul> 372 </li> 373 </ul> <!-- toc_section --> 374 </li> 375 <li> 376 <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span> 377 <ul class="toc_section"> 378 <li> 379 <span class="toc_kind_header">controls</span> 380 <ul class="toc_section"> 381 <li 382 ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li> 383 </ul> 384 </li> 385 <li> 386 <span class="toc_kind_header">static</span> 387 <ul class="toc_section"> 388 <li 389 ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li> 390 </ul> 391 </li> 392 <li> 393 <span class="toc_kind_header">dynamic</span> 394 <ul class="toc_section"> 395 <li 396 ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li> 397 </ul> 398 </li> 399 </ul> <!-- toc_section --> 400 </li> 401 <li> 402 <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span> 403 <ul class="toc_section"> 404 <li> 405 <span class="toc_kind_header">controls</span> 406 <ul class="toc_section"> 407 <li 408 ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 409 <li 410 ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 411 <li 412 ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 413 <li 414 ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 415 <li 416 ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li> 417 <li 418 ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li> 419 <li 420 ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 421 <li 422 ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 423 </ul> 424 </li> 425 <li> 426 <span class="toc_kind_header">static</span> 427 <ul class="toc_section"> 428 <li 429 ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li> 430 <li 431 ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li> 432 </ul> 433 </li> 434 <li> 435 <span class="toc_kind_header">dynamic</span> 436 <ul class="toc_section"> 437 <li 438 ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 439 <li 440 ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 441 <li 442 ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 443 <li 444 ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 445 <li 446 ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li> 447 <li 448 ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li> 449 <li 450 ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li> 451 <li 452 ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 453 <li 454 ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 455 </ul> 456 </li> 457 </ul> <!-- toc_section --> 458 </li> 459 <li> 460 <span class="toc_section_header"><a href="#section_lens">lens</a></span> 461 <ul class="toc_section"> 462 <li> 463 <span class="toc_kind_header">controls</span> 464 <ul class="toc_section"> 465 <li 466 ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li> 467 <li 468 ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li> 469 <li 470 ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li> 471 <li 472 ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li> 473 <li 474 ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 475 </ul> 476 </li> 477 <li> 478 <span class="toc_kind_header">static</span> 479 <ul class="toc_section"> 480 481 <li 482 ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li> 483 <li 484 ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li> 485 <li 486 ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li> 487 <li 488 ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li> 489 <li 490 ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li> 491 <li 492 ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li> 493 <li 494 ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li> 495 <li 496 ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li> 497 498 <li 499 ><a href="#static_android.lens.facing">android.lens.facing</a></li> 500 <li 501 ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li> 502 <li 503 ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li> 504 <li 505 ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li> 506 <li 507 ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li> 508 </ul> 509 </li> 510 <li> 511 <span class="toc_kind_header">dynamic</span> 512 <ul class="toc_section"> 513 <li 514 ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li> 515 <li 516 ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li> 517 <li 518 ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li> 519 <li 520 ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li> 521 <li 522 ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li> 523 <li 524 ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 525 <li 526 ><a href="#dynamic_android.lens.state">android.lens.state</a></li> 527 <li 528 ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li> 529 <li 530 ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li> 531 <li 532 ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li> 533 <li 534 ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li> 535 </ul> 536 </li> 537 </ul> <!-- toc_section --> 538 </li> 539 <li> 540 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span> 541 <ul class="toc_section"> 542 <li> 543 <span class="toc_kind_header">controls</span> 544 <ul class="toc_section"> 545 <li 546 ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 547 <li 548 ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li> 549 </ul> 550 </li> 551 <li> 552 <span class="toc_kind_header">static</span> 553 <ul class="toc_section"> 554 <li 555 ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li> 556 </ul> 557 </li> 558 <li> 559 <span class="toc_kind_header">dynamic</span> 560 <ul class="toc_section"> 561 <li 562 ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 563 </ul> 564 </li> 565 </ul> <!-- toc_section --> 566 </li> 567 <li> 568 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span> 569 <ul class="toc_section"> 570 <li> 571 <span class="toc_kind_header">static</span> 572 <ul class="toc_section"> 573 <li 574 class="toc_deprecated" 575 ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li> 576 <li 577 class="toc_deprecated" 578 ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li> 579 <li 580 class="toc_deprecated" 581 ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li> 582 <li 583 class="toc_deprecated" 584 ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li> 585 </ul> 586 </li> 587 <li> 588 <span class="toc_kind_header">dynamic</span> 589 <ul class="toc_section"> 590 <li 591 class="toc_deprecated" 592 ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li> 593 </ul> 594 </li> 595 </ul> <!-- toc_section --> 596 </li> 597 <li> 598 <span class="toc_section_header"><a href="#section_request">request</a></span> 599 <ul class="toc_section"> 600 <li> 601 <span class="toc_kind_header">controls</span> 602 <ul class="toc_section"> 603 <li 604 class="toc_deprecated" 605 ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li> 606 <li 607 ><a href="#controls_android.request.id">android.request.id</a></li> 608 <li 609 class="toc_deprecated" 610 ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li> 611 <li 612 ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li> 613 <li 614 class="toc_deprecated" 615 ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li> 616 <li 617 class="toc_deprecated" 618 ><a href="#controls_android.request.type">android.request.type</a></li> 619 </ul> 620 </li> 621 <li> 622 <span class="toc_kind_header">static</span> 623 <ul class="toc_section"> 624 <li 625 ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li> 626 <li 627 ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li> 628 <li 629 ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li> 630 <li 631 ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li> 632 <li 633 class="toc_deprecated" 634 ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li> 635 <li 636 ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li> 637 <li 638 ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li> 639 <li 640 ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li> 641 <li 642 ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li> 643 <li 644 ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li> 645 <li 646 ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li> 647 <li 648 ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li> 649 </ul> 650 </li> 651 <li> 652 <span class="toc_kind_header">dynamic</span> 653 <ul class="toc_section"> 654 <li 655 class="toc_deprecated" 656 ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li> 657 <li 658 ><a href="#dynamic_android.request.id">android.request.id</a></li> 659 <li 660 ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li> 661 <li 662 class="toc_deprecated" 663 ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li> 664 <li 665 ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li> 666 </ul> 667 </li> 668 </ul> <!-- toc_section --> 669 </li> 670 <li> 671 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span> 672 <ul class="toc_section"> 673 <li> 674 <span class="toc_kind_header">controls</span> 675 <ul class="toc_section"> 676 <li 677 ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 678 </ul> 679 </li> 680 <li> 681 <span class="toc_kind_header">static</span> 682 <ul class="toc_section"> 683 <li 684 class="toc_deprecated" 685 ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li> 686 <li 687 class="toc_deprecated" 688 ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li> 689 <li 690 class="toc_deprecated" 691 ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li> 692 <li 693 ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li> 694 <li 695 class="toc_deprecated" 696 ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li> 697 <li 698 class="toc_deprecated" 699 ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li> 700 <li 701 class="toc_deprecated" 702 ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li> 703 <li 704 class="toc_deprecated" 705 ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li> 706 <li 707 ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li> 708 <li 709 ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li> 710 <li 711 ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li> 712 <li 713 ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li> 714 <li 715 ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li> 716 <li 717 ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li> 718 </ul> 719 </li> 720 <li> 721 <span class="toc_kind_header">dynamic</span> 722 <ul class="toc_section"> 723 <li 724 ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 725 </ul> 726 </li> 727 </ul> <!-- toc_section --> 728 </li> 729 <li> 730 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span> 731 <ul class="toc_section"> 732 <li> 733 <span class="toc_kind_header">controls</span> 734 <ul class="toc_section"> 735 <li 736 ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 737 <li 738 ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 739 <li 740 ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 741 <li 742 ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 743 <li 744 ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 745 </ul> 746 </li> 747 <li> 748 <span class="toc_kind_header">static</span> 749 <ul class="toc_section"> 750 751 <li 752 ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li> 753 <li 754 ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li> 755 <li 756 ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li> 757 <li 758 ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li> 759 <li 760 ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li> 761 <li 762 ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li> 763 <li 764 ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li> 765 <li 766 ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li> 767 <li 768 ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li> 769 <li 770 ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li> 771 <li 772 ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li> 773 774 <li 775 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li> 776 <li 777 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li> 778 <li 779 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li> 780 <li 781 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li> 782 <li 783 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li> 784 <li 785 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li> 786 <li 787 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li> 788 <li 789 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li> 790 <li 791 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li> 792 <li 793 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li> 794 <li 795 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li> 796 <li 797 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li> 798 <li 799 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li> 800 <li 801 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li> 802 </ul> 803 </li> 804 <li> 805 <span class="toc_kind_header">dynamic</span> 806 <ul class="toc_section"> 807 <li 808 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 809 <li 810 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 811 <li 812 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 813 <li 814 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li> 815 <li 816 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li> 817 <li 818 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li> 819 <li 820 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li> 821 <li 822 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li> 823 <li 824 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li> 825 <li 826 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li> 827 <li 828 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 829 <li 830 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 831 <li 832 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li> 833 </ul> 834 </li> 835 </ul> <!-- toc_section --> 836 </li> 837 <li> 838 <span class="toc_section_header"><a href="#section_shading">shading</a></span> 839 <ul class="toc_section"> 840 <li> 841 <span class="toc_kind_header">controls</span> 842 <ul class="toc_section"> 843 <li 844 ><a href="#controls_android.shading.mode">android.shading.mode</a></li> 845 <li 846 ><a href="#controls_android.shading.strength">android.shading.strength</a></li> 847 </ul> 848 </li> 849 <li> 850 <span class="toc_kind_header">dynamic</span> 851 <ul class="toc_section"> 852 <li 853 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li> 854 </ul> 855 </li> 856 <li> 857 <span class="toc_kind_header">static</span> 858 <ul class="toc_section"> 859 <li 860 ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li> 861 </ul> 862 </li> 863 </ul> <!-- toc_section --> 864 </li> 865 <li> 866 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span> 867 <ul class="toc_section"> 868 <li> 869 <span class="toc_kind_header">controls</span> 870 <ul class="toc_section"> 871 <li 872 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 873 <li 874 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 875 <li 876 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 877 <li 878 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 879 <li 880 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 881 </ul> 882 </li> 883 <li> 884 <span class="toc_kind_header">static</span> 885 <ul class="toc_section"> 886 887 <li 888 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li> 889 <li 890 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li> 891 <li 892 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li> 893 <li 894 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li> 895 <li 896 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li> 897 <li 898 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li> 899 <li 900 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li> 901 <li 902 ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li> 903 904 </ul> 905 </li> 906 <li> 907 <span class="toc_kind_header">dynamic</span> 908 <ul class="toc_section"> 909 <li 910 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 911 <li 912 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li> 913 <li 914 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li> 915 <li 916 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li> 917 <li 918 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li> 919 <li 920 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li> 921 <li 922 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li> 923 <li 924 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 925 <li 926 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li> 927 <li 928 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 929 <li 930 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li> 931 <li 932 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li> 933 <li 934 class="toc_deprecated" 935 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li> 936 <li 937 class="toc_deprecated" 938 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li> 939 <li 940 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li> 941 <li 942 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 943 <li 944 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li> 945 <li 946 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 947 </ul> 948 </li> 949 </ul> <!-- toc_section --> 950 </li> 951 <li> 952 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span> 953 <ul class="toc_section"> 954 <li> 955 <span class="toc_kind_header">controls</span> 956 <ul class="toc_section"> 957 <li 958 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 959 <li 960 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 961 <li 962 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 963 <li 964 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li> 965 <li 966 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li> 967 <li 968 ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li> 969 <li 970 ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 971 </ul> 972 </li> 973 <li> 974 <span class="toc_kind_header">static</span> 975 <ul class="toc_section"> 976 <li 977 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li> 978 <li 979 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li> 980 </ul> 981 </li> 982 <li> 983 <span class="toc_kind_header">dynamic</span> 984 <ul class="toc_section"> 985 <li 986 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 987 <li 988 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 989 <li 990 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 991 <li 992 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li> 993 <li 994 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li> 995 <li 996 ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li> 997 <li 998 ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 999 </ul> 1000 </li> 1001 </ul> <!-- toc_section --> 1002 </li> 1003 <li> 1004 <span class="toc_section_header"><a href="#section_led">led</a></span> 1005 <ul class="toc_section"> 1006 <li> 1007 <span class="toc_kind_header">controls</span> 1008 <ul class="toc_section"> 1009 <li 1010 ><a href="#controls_android.led.transmit">android.led.transmit</a></li> 1011 </ul> 1012 </li> 1013 <li> 1014 <span class="toc_kind_header">dynamic</span> 1015 <ul class="toc_section"> 1016 <li 1017 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li> 1018 </ul> 1019 </li> 1020 <li> 1021 <span class="toc_kind_header">static</span> 1022 <ul class="toc_section"> 1023 <li 1024 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li> 1025 </ul> 1026 </li> 1027 </ul> <!-- toc_section --> 1028 </li> 1029 <li> 1030 <span class="toc_section_header"><a href="#section_info">info</a></span> 1031 <ul class="toc_section"> 1032 <li> 1033 <span class="toc_kind_header">static</span> 1034 <ul class="toc_section"> 1035 <li 1036 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li> 1037 </ul> 1038 </li> 1039 </ul> <!-- toc_section --> 1040 </li> 1041 <li> 1042 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span> 1043 <ul class="toc_section"> 1044 <li> 1045 <span class="toc_kind_header">controls</span> 1046 <ul class="toc_section"> 1047 <li 1048 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li> 1049 </ul> 1050 </li> 1051 <li> 1052 <span class="toc_kind_header">dynamic</span> 1053 <ul class="toc_section"> 1054 <li 1055 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li> 1056 </ul> 1057 </li> 1058 </ul> <!-- toc_section --> 1059 </li> 1060 <li> 1061 <span class="toc_section_header"><a href="#section_sync">sync</a></span> 1062 <ul class="toc_section"> 1063 <li> 1064 <span class="toc_kind_header">dynamic</span> 1065 <ul class="toc_section"> 1066 <li 1067 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li> 1068 </ul> 1069 </li> 1070 <li> 1071 <span class="toc_kind_header">static</span> 1072 <ul class="toc_section"> 1073 <li 1074 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li> 1075 </ul> 1076 </li> 1077 </ul> <!-- toc_section --> 1078 </li> 1079 <li> 1080 <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span> 1081 <ul class="toc_section"> 1082 <li> 1083 <span class="toc_kind_header">controls</span> 1084 <ul class="toc_section"> 1085 <li 1086 ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1087 </ul> 1088 </li> 1089 <li> 1090 <span class="toc_kind_header">dynamic</span> 1091 <ul class="toc_section"> 1092 <li 1093 ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1094 </ul> 1095 </li> 1096 <li> 1097 <span class="toc_kind_header">static</span> 1098 <ul class="toc_section"> 1099 <li 1100 ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li> 1101 </ul> 1102 </li> 1103 </ul> <!-- toc_section --> 1104 </li> 1105 <li> 1106 <span class="toc_section_header"><a href="#section_depth">depth</a></span> 1107 <ul class="toc_section"> 1108 <li> 1109 <span class="toc_kind_header">static</span> 1110 <ul class="toc_section"> 1111 <li 1112 ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li> 1113 <li 1114 ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li> 1115 <li 1116 ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li> 1117 <li 1118 ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li> 1119 <li 1120 ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li> 1121 </ul> 1122 </li> 1123 </ul> <!-- toc_section --> 1124 </li> 1125 </ul> 1126 1127 1128 <h1>Properties</h1> 1129 <table class="properties"> 1130 1131 <thead class="thead_dummy"> 1132 <tr> 1133 <th class="th_name">Property Name</th> 1134 <th class="th_type">Type</th> 1135 <th class="th_description">Description</th> 1136 <th class="th_units">Units</th> 1137 <th class="th_range">Range</th> 1138 <th class="th_tags">Tags</th> 1139 </tr> 1140 </thead> <!-- so that the first occurrence of thead is not 1141 above the first occurrence of tr --> 1142<!-- <namespace name="android"> --> 1143 <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr> 1144 1145 1146 <tr><td colspan="6" class="kind">controls</td></tr> 1147 1148 <thead class="entries_header"> 1149 <tr> 1150 <th class="th_name">Property Name</th> 1151 <th class="th_type">Type</th> 1152 <th class="th_description">Description</th> 1153 <th class="th_units">Units</th> 1154 <th class="th_range">Range</th> 1155 <th class="th_tags">Tags</th> 1156 </tr> 1157 </thead> 1158 1159 <tbody> 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 <tr class="entry" id="controls_android.colorCorrection.mode"> 1171 <td class="entry_name 1172 " rowspan="5"> 1173 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1174 </td> 1175 <td class="entry_type"> 1176 <span class="entry_type_name entry_type_name_enum">byte</span> 1177 1178 <span class="entry_type_visibility"> [public]</span> 1179 1180 1181 <span class="entry_type_hwlevel">[full] </span> 1182 1183 1184 1185 <ul class="entry_type_enum"> 1186 <li> 1187 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> 1188 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1189and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1190<p>All advanced white balance adjustments (not specified 1191by our white balance pipeline) must be disabled.<wbr/></p> 1192<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then 1193TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1194this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1195 </li> 1196 <li> 1197 <span class="entry_type_enum_name">FAST</span> 1198 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1199capture rate relative to sensor raw output.<wbr/></p> 1200<p>Advanced white balance adjustments above and beyond 1201the specified white balance pipeline may be applied.<wbr/></p> 1202<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then 1203the camera device uses the last frame's AWB values 1204(or defaults if AWB has never been run).<wbr/></p></span> 1205 </li> 1206 <li> 1207 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1208 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1209quality but the capture rate might be reduced (relative to sensor 1210raw output rate)</p> 1211<p>Advanced white balance adjustments above and beyond 1212the specified white balance pipeline may be applied.<wbr/></p> 1213<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then 1214the camera device uses the last frame's AWB values 1215(or defaults if AWB has never been run).<wbr/></p></span> 1216 </li> 1217 </ul> 1218 1219 </td> <!-- entry_type --> 1220 1221 <td class="entry_description"> 1222 <p>The mode control selects how the image data is converted from the 1223sensor's native color into linear sRGB color.<wbr/></p> 1224 </td> 1225 1226 <td class="entry_units"> 1227 </td> 1228 1229 <td class="entry_range"> 1230 </td> 1231 1232 <td class="entry_tags"> 1233 </td> 1234 1235 </tr> 1236 <tr class="entries_header"> 1237 <th class="th_details" colspan="5">Details</th> 1238 </tr> 1239 <tr class="entry_cont"> 1240 <td class="entry_details" colspan="5"> 1241 <p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this 1242control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1243application controls how the color mapping is performed.<wbr/></p> 1244<p>We define the expected processing pipeline below.<wbr/> For consistency 1245across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1246<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1247do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1248<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1249camera device (in the results) and be roughly correct.<wbr/></p> 1250<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1251FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1252as what was produced by the camera device in the earlier frame.<wbr/></p> 1253<p>The expected processing pipeline is as follows:</p> 1254<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1255<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1256gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1257matrix (applied after demosaic).<wbr/></p> 1258<p>The 4-channel white-balance gains are defined as:</p> 1259<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1260</code></pre> 1261<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1262output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1263These may be identical for a given camera device implementation; if 1264the camera device does not support a separate gain for even/<wbr/>odd green 1265channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1266<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1267<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1268<pre><code><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> = [ I0 I1 I2 I3 I4 I5 I6 I7 I8 ] 1269</code></pre> 1270<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1271to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1272<p>with colors as follows:</p> 1273<pre><code>r' = I0r + I1g + I2b 1274g' = I3r + I4g + I5b 1275b' = I6r + I7g + I8b 1276</code></pre> 1277<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1278values are clipped to fit within the range.<wbr/></p> 1279 </td> 1280 </tr> 1281 1282 <tr class="entries_header"> 1283 <th class="th_details" colspan="5">HAL Implementation Details</th> 1284 </tr> 1285 <tr class="entry_cont"> 1286 <td class="entry_details" colspan="5"> 1287 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1288on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1289That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1290capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1291 </td> 1292 </tr> 1293 1294 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1295 <!-- end of entry --> 1296 1297 1298 <tr class="entry" id="controls_android.colorCorrection.transform"> 1299 <td class="entry_name 1300 " rowspan="3"> 1301 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1302 </td> 1303 <td class="entry_type"> 1304 <span class="entry_type_name">rational</span> 1305 <span class="entry_type_container">x</span> 1306 1307 <span class="entry_type_array"> 1308 3 x 3 1309 </span> 1310 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1311 1312 1313 <span class="entry_type_hwlevel">[full] </span> 1314 1315 1316 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1317 1318 1319 </td> <!-- entry_type --> 1320 1321 <td class="entry_description"> 1322 <p>A color transform matrix to use to transform 1323from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1324 </td> 1325 1326 <td class="entry_units"> 1327 Unitless scale factors 1328 </td> 1329 1330 <td class="entry_range"> 1331 </td> 1332 1333 <td class="entry_tags"> 1334 </td> 1335 1336 </tr> 1337 <tr class="entries_header"> 1338 <th class="th_details" colspan="5">Details</th> 1339 </tr> 1340 <tr class="entry_cont"> 1341 <td class="entry_details" colspan="5"> 1342 <p>This matrix is either set by the camera device when the request 1343<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1344directly by the application in the request when the 1345<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1346<p>In the latter case,<wbr/> the camera device may round the matrix to account 1347for precision issues; the final rounded matrix should be reported back 1348in this matrix result metadata.<wbr/> The transform should keep the magnitude 1349of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1350values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1351<p>The valid range of each matrix element varies on different devices,<wbr/> but 1352values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1353 </td> 1354 </tr> 1355 1356 1357 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1358 <!-- end of entry --> 1359 1360 1361 <tr class="entry" id="controls_android.colorCorrection.gains"> 1362 <td class="entry_name 1363 " rowspan="5"> 1364 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1365 </td> 1366 <td class="entry_type"> 1367 <span class="entry_type_name">float</span> 1368 <span class="entry_type_container">x</span> 1369 1370 <span class="entry_type_array"> 1371 4 1372 </span> 1373 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1374 1375 1376 <span class="entry_type_hwlevel">[full] </span> 1377 1378 1379 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1380 1381 1382 </td> <!-- entry_type --> 1383 1384 <td class="entry_description"> 1385 <p>Gains applying to Bayer raw color channels for 1386white-balance.<wbr/></p> 1387 </td> 1388 1389 <td class="entry_units"> 1390 Unitless gain factors 1391 </td> 1392 1393 <td class="entry_range"> 1394 </td> 1395 1396 <td class="entry_tags"> 1397 </td> 1398 1399 </tr> 1400 <tr class="entries_header"> 1401 <th class="th_details" colspan="5">Details</th> 1402 </tr> 1403 <tr class="entry_cont"> 1404 <td class="entry_details" colspan="5"> 1405 <p>These per-channel gains are either set by the camera device 1406when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1407TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1408request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1409TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1410<p>The gains in the result metadata are the gains actually 1411applied by the camera device to the current frame.<wbr/></p> 1412<p>The valid range of gains varies on different devices,<wbr/> but gains 1413between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1414device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1415this can create color artifacts.<wbr/></p> 1416 </td> 1417 </tr> 1418 1419 <tr class="entries_header"> 1420 <th class="th_details" colspan="5">HAL Implementation Details</th> 1421 </tr> 1422 <tr class="entry_cont"> 1423 <td class="entry_details" colspan="5"> 1424 <p>The 4-channel white-balance gains are defined in 1425the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1426for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1427is the gain for green pixels on the odd rows.<wbr/></p> 1428<p>If a HAL does not support a separate gain for even/<wbr/>odd green 1429channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1430<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1431 </td> 1432 </tr> 1433 1434 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1435 <!-- end of entry --> 1436 1437 1438 <tr class="entry" id="controls_android.colorCorrection.aberrationMode"> 1439 <td class="entry_name 1440 " rowspan="3"> 1441 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1442 </td> 1443 <td class="entry_type"> 1444 <span class="entry_type_name entry_type_name_enum">byte</span> 1445 1446 <span class="entry_type_visibility"> [public]</span> 1447 1448 1449 <span class="entry_type_hwlevel">[legacy] </span> 1450 1451 1452 1453 <ul class="entry_type_enum"> 1454 <li> 1455 <span class="entry_type_enum_name">OFF</span> 1456 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1457 </li> 1458 <li> 1459 <span class="entry_type_enum_name">FAST</span> 1460 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1461relative to sensor raw output.<wbr/></p></span> 1462 </li> 1463 <li> 1464 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1465 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 1466reduced (relative to sensor raw output rate)</p></span> 1467 </li> 1468 </ul> 1469 1470 </td> <!-- entry_type --> 1471 1472 <td class="entry_description"> 1473 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1474 </td> 1475 1476 <td class="entry_units"> 1477 </td> 1478 1479 <td class="entry_range"> 1480 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1481 </td> 1482 1483 <td class="entry_tags"> 1484 </td> 1485 1486 </tr> 1487 <tr class="entries_header"> 1488 <th class="th_details" colspan="5">Details</th> 1489 </tr> 1490 <tr class="entry_cont"> 1491 <td class="entry_details" colspan="5"> 1492 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1493can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1494the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1495minimize the chromatic artifacts that may occur along the object boundaries in an 1496image.<wbr/></p> 1497<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1498correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1499use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1500capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1501applying aberration correction.<wbr/></p> 1502<p>LEGACY devices will always be in FAST mode.<wbr/></p> 1503 </td> 1504 </tr> 1505 1506 1507 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1508 <!-- end of entry --> 1509 1510 1511 1512 <!-- end of kind --> 1513 </tbody> 1514 <tr><td colspan="6" class="kind">dynamic</td></tr> 1515 1516 <thead class="entries_header"> 1517 <tr> 1518 <th class="th_name">Property Name</th> 1519 <th class="th_type">Type</th> 1520 <th class="th_description">Description</th> 1521 <th class="th_units">Units</th> 1522 <th class="th_range">Range</th> 1523 <th class="th_tags">Tags</th> 1524 </tr> 1525 </thead> 1526 1527 <tbody> 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 <tr class="entry" id="dynamic_android.colorCorrection.mode"> 1539 <td class="entry_name 1540 " rowspan="5"> 1541 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1542 </td> 1543 <td class="entry_type"> 1544 <span class="entry_type_name entry_type_name_enum">byte</span> 1545 1546 <span class="entry_type_visibility"> [public]</span> 1547 1548 1549 <span class="entry_type_hwlevel">[full] </span> 1550 1551 1552 1553 <ul class="entry_type_enum"> 1554 <li> 1555 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> 1556 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1557and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1558<p>All advanced white balance adjustments (not specified 1559by our white balance pipeline) must be disabled.<wbr/></p> 1560<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then 1561TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1562this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1563 </li> 1564 <li> 1565 <span class="entry_type_enum_name">FAST</span> 1566 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1567capture rate relative to sensor raw output.<wbr/></p> 1568<p>Advanced white balance adjustments above and beyond 1569the specified white balance pipeline may be applied.<wbr/></p> 1570<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then 1571the camera device uses the last frame's AWB values 1572(or defaults if AWB has never been run).<wbr/></p></span> 1573 </li> 1574 <li> 1575 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1576 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1577quality but the capture rate might be reduced (relative to sensor 1578raw output rate)</p> 1579<p>Advanced white balance adjustments above and beyond 1580the specified white balance pipeline may be applied.<wbr/></p> 1581<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then 1582the camera device uses the last frame's AWB values 1583(or defaults if AWB has never been run).<wbr/></p></span> 1584 </li> 1585 </ul> 1586 1587 </td> <!-- entry_type --> 1588 1589 <td class="entry_description"> 1590 <p>The mode control selects how the image data is converted from the 1591sensor's native color into linear sRGB color.<wbr/></p> 1592 </td> 1593 1594 <td class="entry_units"> 1595 </td> 1596 1597 <td class="entry_range"> 1598 </td> 1599 1600 <td class="entry_tags"> 1601 </td> 1602 1603 </tr> 1604 <tr class="entries_header"> 1605 <th class="th_details" colspan="5">Details</th> 1606 </tr> 1607 <tr class="entry_cont"> 1608 <td class="entry_details" colspan="5"> 1609 <p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this 1610control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1611application controls how the color mapping is performed.<wbr/></p> 1612<p>We define the expected processing pipeline below.<wbr/> For consistency 1613across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1614<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1615do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1616<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1617camera device (in the results) and be roughly correct.<wbr/></p> 1618<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1619FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1620as what was produced by the camera device in the earlier frame.<wbr/></p> 1621<p>The expected processing pipeline is as follows:</p> 1622<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1623<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1624gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1625matrix (applied after demosaic).<wbr/></p> 1626<p>The 4-channel white-balance gains are defined as:</p> 1627<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1628</code></pre> 1629<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1630output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1631These may be identical for a given camera device implementation; if 1632the camera device does not support a separate gain for even/<wbr/>odd green 1633channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1634<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1635<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1636<pre><code><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> = [ I0 I1 I2 I3 I4 I5 I6 I7 I8 ] 1637</code></pre> 1638<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1639to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1640<p>with colors as follows:</p> 1641<pre><code>r' = I0r + I1g + I2b 1642g' = I3r + I4g + I5b 1643b' = I6r + I7g + I8b 1644</code></pre> 1645<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1646values are clipped to fit within the range.<wbr/></p> 1647 </td> 1648 </tr> 1649 1650 <tr class="entries_header"> 1651 <th class="th_details" colspan="5">HAL Implementation Details</th> 1652 </tr> 1653 <tr class="entry_cont"> 1654 <td class="entry_details" colspan="5"> 1655 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1656on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1657That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1658capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1659 </td> 1660 </tr> 1661 1662 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1663 <!-- end of entry --> 1664 1665 1666 <tr class="entry" id="dynamic_android.colorCorrection.transform"> 1667 <td class="entry_name 1668 " rowspan="3"> 1669 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1670 </td> 1671 <td class="entry_type"> 1672 <span class="entry_type_name">rational</span> 1673 <span class="entry_type_container">x</span> 1674 1675 <span class="entry_type_array"> 1676 3 x 3 1677 </span> 1678 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1679 1680 1681 <span class="entry_type_hwlevel">[full] </span> 1682 1683 1684 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1685 1686 1687 </td> <!-- entry_type --> 1688 1689 <td class="entry_description"> 1690 <p>A color transform matrix to use to transform 1691from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1692 </td> 1693 1694 <td class="entry_units"> 1695 Unitless scale factors 1696 </td> 1697 1698 <td class="entry_range"> 1699 </td> 1700 1701 <td class="entry_tags"> 1702 </td> 1703 1704 </tr> 1705 <tr class="entries_header"> 1706 <th class="th_details" colspan="5">Details</th> 1707 </tr> 1708 <tr class="entry_cont"> 1709 <td class="entry_details" colspan="5"> 1710 <p>This matrix is either set by the camera device when the request 1711<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1712directly by the application in the request when the 1713<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1714<p>In the latter case,<wbr/> the camera device may round the matrix to account 1715for precision issues; the final rounded matrix should be reported back 1716in this matrix result metadata.<wbr/> The transform should keep the magnitude 1717of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1718values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1719<p>The valid range of each matrix element varies on different devices,<wbr/> but 1720values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1721 </td> 1722 </tr> 1723 1724 1725 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1726 <!-- end of entry --> 1727 1728 1729 <tr class="entry" id="dynamic_android.colorCorrection.gains"> 1730 <td class="entry_name 1731 " rowspan="5"> 1732 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1733 </td> 1734 <td class="entry_type"> 1735 <span class="entry_type_name">float</span> 1736 <span class="entry_type_container">x</span> 1737 1738 <span class="entry_type_array"> 1739 4 1740 </span> 1741 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1742 1743 1744 <span class="entry_type_hwlevel">[full] </span> 1745 1746 1747 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1748 1749 1750 </td> <!-- entry_type --> 1751 1752 <td class="entry_description"> 1753 <p>Gains applying to Bayer raw color channels for 1754white-balance.<wbr/></p> 1755 </td> 1756 1757 <td class="entry_units"> 1758 Unitless gain factors 1759 </td> 1760 1761 <td class="entry_range"> 1762 </td> 1763 1764 <td class="entry_tags"> 1765 </td> 1766 1767 </tr> 1768 <tr class="entries_header"> 1769 <th class="th_details" colspan="5">Details</th> 1770 </tr> 1771 <tr class="entry_cont"> 1772 <td class="entry_details" colspan="5"> 1773 <p>These per-channel gains are either set by the camera device 1774when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1775TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1776request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1777TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1778<p>The gains in the result metadata are the gains actually 1779applied by the camera device to the current frame.<wbr/></p> 1780<p>The valid range of gains varies on different devices,<wbr/> but gains 1781between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1782device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1783this can create color artifacts.<wbr/></p> 1784 </td> 1785 </tr> 1786 1787 <tr class="entries_header"> 1788 <th class="th_details" colspan="5">HAL Implementation Details</th> 1789 </tr> 1790 <tr class="entry_cont"> 1791 <td class="entry_details" colspan="5"> 1792 <p>The 4-channel white-balance gains are defined in 1793the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1794for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1795is the gain for green pixels on the odd rows.<wbr/></p> 1796<p>If a HAL does not support a separate gain for even/<wbr/>odd green 1797channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1798<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1799 </td> 1800 </tr> 1801 1802 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1803 <!-- end of entry --> 1804 1805 1806 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode"> 1807 <td class="entry_name 1808 " rowspan="3"> 1809 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1810 </td> 1811 <td class="entry_type"> 1812 <span class="entry_type_name entry_type_name_enum">byte</span> 1813 1814 <span class="entry_type_visibility"> [public]</span> 1815 1816 1817 <span class="entry_type_hwlevel">[legacy] </span> 1818 1819 1820 1821 <ul class="entry_type_enum"> 1822 <li> 1823 <span class="entry_type_enum_name">OFF</span> 1824 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1825 </li> 1826 <li> 1827 <span class="entry_type_enum_name">FAST</span> 1828 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1829relative to sensor raw output.<wbr/></p></span> 1830 </li> 1831 <li> 1832 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1833 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 1834reduced (relative to sensor raw output rate)</p></span> 1835 </li> 1836 </ul> 1837 1838 </td> <!-- entry_type --> 1839 1840 <td class="entry_description"> 1841 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1842 </td> 1843 1844 <td class="entry_units"> 1845 </td> 1846 1847 <td class="entry_range"> 1848 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1849 </td> 1850 1851 <td class="entry_tags"> 1852 </td> 1853 1854 </tr> 1855 <tr class="entries_header"> 1856 <th class="th_details" colspan="5">Details</th> 1857 </tr> 1858 <tr class="entry_cont"> 1859 <td class="entry_details" colspan="5"> 1860 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1861can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1862the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1863minimize the chromatic artifacts that may occur along the object boundaries in an 1864image.<wbr/></p> 1865<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1866correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1867use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1868capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1869applying aberration correction.<wbr/></p> 1870<p>LEGACY devices will always be in FAST mode.<wbr/></p> 1871 </td> 1872 </tr> 1873 1874 1875 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1876 <!-- end of entry --> 1877 1878 1879 1880 <!-- end of kind --> 1881 </tbody> 1882 <tr><td colspan="6" class="kind">static</td></tr> 1883 1884 <thead class="entries_header"> 1885 <tr> 1886 <th class="th_name">Property Name</th> 1887 <th class="th_type">Type</th> 1888 <th class="th_description">Description</th> 1889 <th class="th_units">Units</th> 1890 <th class="th_range">Range</th> 1891 <th class="th_tags">Tags</th> 1892 </tr> 1893 </thead> 1894 1895 <tbody> 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes"> 1907 <td class="entry_name 1908 " rowspan="5"> 1909 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes 1910 </td> 1911 <td class="entry_type"> 1912 <span class="entry_type_name">byte</span> 1913 <span class="entry_type_container">x</span> 1914 1915 <span class="entry_type_array"> 1916 n 1917 </span> 1918 <span class="entry_type_visibility"> [public as enumList]</span> 1919 1920 1921 <span class="entry_type_hwlevel">[legacy] </span> 1922 1923 1924 <div class="entry_type_notes">list of enums</div> 1925 1926 1927 </td> <!-- entry_type --> 1928 1929 <td class="entry_description"> 1930 <p>List of aberration correction modes for <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a> that are 1931supported by this camera device.<wbr/></p> 1932 </td> 1933 1934 <td class="entry_units"> 1935 </td> 1936 1937 <td class="entry_range"> 1938 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p> 1939 </td> 1940 1941 <td class="entry_tags"> 1942 <ul class="entry_tags"> 1943 <li><a href="#tag_V1">V1</a></li> 1944 </ul> 1945 </td> 1946 1947 </tr> 1948 <tr class="entries_header"> 1949 <th class="th_details" colspan="5">Details</th> 1950 </tr> 1951 <tr class="entry_cont"> 1952 <td class="entry_details" colspan="5"> 1953 <p>This key lists the valid modes for <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a>.<wbr/> If no 1954aberration correction modes are available for a device,<wbr/> this list will solely include 1955OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p> 1956<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list 1957OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p> 1958<p>LEGACY devices will always only support FAST mode.<wbr/></p> 1959 </td> 1960 </tr> 1961 1962 <tr class="entries_header"> 1963 <th class="th_details" colspan="5">HAL Implementation Details</th> 1964 </tr> 1965 <tr class="entry_cont"> 1966 <td class="entry_details" colspan="5"> 1967 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available 1968on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1969That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1970capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 1971 </td> 1972 </tr> 1973 1974 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1975 <!-- end of entry --> 1976 1977 1978 1979 <!-- end of kind --> 1980 </tbody> 1981 1982 <!-- end of section --> 1983 <tr><td colspan="6" id="section_control" class="section">control</td></tr> 1984 1985 1986 <tr><td colspan="6" class="kind">controls</td></tr> 1987 1988 <thead class="entries_header"> 1989 <tr> 1990 <th class="th_name">Property Name</th> 1991 <th class="th_type">Type</th> 1992 <th class="th_description">Description</th> 1993 <th class="th_units">Units</th> 1994 <th class="th_range">Range</th> 1995 <th class="th_tags">Tags</th> 1996 </tr> 1997 </thead> 1998 1999 <tbody> 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 <tr class="entry" id="controls_android.control.aeAntibandingMode"> 2011 <td class="entry_name 2012 " rowspan="5"> 2013 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 2014 </td> 2015 <td class="entry_type"> 2016 <span class="entry_type_name entry_type_name_enum">byte</span> 2017 2018 <span class="entry_type_visibility"> [public]</span> 2019 2020 2021 <span class="entry_type_hwlevel">[legacy] </span> 2022 2023 2024 2025 <ul class="entry_type_enum"> 2026 <li> 2027 <span class="entry_type_enum_name">OFF</span> 2028 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 2029avoid banding problems.<wbr/></p></span> 2030 </li> 2031 <li> 2032 <span class="entry_type_enum_name">50HZ</span> 2033 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2034avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 2035 </li> 2036 <li> 2037 <span class="entry_type_enum_name">60HZ</span> 2038 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2039avoid banding problems with 60Hz illumination 2040sources.<wbr/></p></span> 2041 </li> 2042 <li> 2043 <span class="entry_type_enum_name">AUTO</span> 2044 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 2045antibanding routine to the current illumination 2046condition.<wbr/> This is the default mode if AUTO is 2047available on given camera device.<wbr/></p></span> 2048 </li> 2049 </ul> 2050 2051 </td> <!-- entry_type --> 2052 2053 <td class="entry_description"> 2054 <p>The desired setting for the camera device's auto-exposure 2055algorithm's antibanding compensation.<wbr/></p> 2056 </td> 2057 2058 <td class="entry_units"> 2059 </td> 2060 2061 <td class="entry_range"> 2062 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 2063 </td> 2064 2065 <td class="entry_tags"> 2066 <ul class="entry_tags"> 2067 <li><a href="#tag_BC">BC</a></li> 2068 </ul> 2069 </td> 2070 2071 </tr> 2072 <tr class="entries_header"> 2073 <th class="th_details" colspan="5">Details</th> 2074 </tr> 2075 <tr class="entry_cont"> 2076 <td class="entry_details" colspan="5"> 2077 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 2078lights,<wbr/> flicker at the rate of the power supply frequency 2079(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 2080typically not noticeable to a person,<wbr/> it can be visible to 2081a camera device.<wbr/> If a camera sets its exposure time to the 2082wrong value,<wbr/> the flicker may become visible in the 2083viewfinder as flicker or in a final captured image,<wbr/> as a 2084set of variable-brightness bands across the image.<wbr/></p> 2085<p>Therefore,<wbr/> the auto-exposure routines of camera devices 2086include antibanding routines that ensure that the chosen 2087exposure value will not cause such banding.<wbr/> The choice of 2088exposure time depends on the rate of flicker,<wbr/> which the 2089camera device can detect automatically,<wbr/> or the expected 2090rate can be selected by the application using this 2091control.<wbr/></p> 2092<p>A given camera device may not support all of the possible 2093options for the antibanding mode.<wbr/> The 2094<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 2095the available modes for a given camera device.<wbr/></p> 2096<p>AUTO mode is the default if it is available on given 2097camera device.<wbr/> When AUTO mode is not available,<wbr/> the 2098default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 2099and 60HZ will be available.<wbr/></p> 2100<p>If manual exposure control is enabled (by setting 2101<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/> 2102then this setting has no effect,<wbr/> and the application must 2103ensure it selects exposure times that do not cause banding 2104issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 2105the application in this.<wbr/></p> 2106 </td> 2107 </tr> 2108 2109 <tr class="entries_header"> 2110 <th class="th_details" colspan="5">HAL Implementation Details</th> 2111 </tr> 2112 <tr class="entry_cont"> 2113 <td class="entry_details" colspan="5"> 2114 <p>For all capture request templates,<wbr/> this field must be set 2115to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 2116the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 211760HZ must be available.<wbr/></p> 2118<p>If manual exposure control is enabled (by setting 2119<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/> 2120then the exposure values provided by the application must not be 2121adjusted for antibanding.<wbr/></p> 2122 </td> 2123 </tr> 2124 2125 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2126 <!-- end of entry --> 2127 2128 2129 <tr class="entry" id="controls_android.control.aeExposureCompensation"> 2130 <td class="entry_name 2131 " rowspan="3"> 2132 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 2133 </td> 2134 <td class="entry_type"> 2135 <span class="entry_type_name">int32</span> 2136 2137 <span class="entry_type_visibility"> [public]</span> 2138 2139 2140 <span class="entry_type_hwlevel">[legacy] </span> 2141 2142 2143 2144 2145 </td> <!-- entry_type --> 2146 2147 <td class="entry_description"> 2148 <p>Adjustment to auto-exposure (AE) target image 2149brightness.<wbr/></p> 2150 </td> 2151 2152 <td class="entry_units"> 2153 Compensation steps 2154 </td> 2155 2156 <td class="entry_range"> 2157 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 2158 </td> 2159 2160 <td class="entry_tags"> 2161 <ul class="entry_tags"> 2162 <li><a href="#tag_BC">BC</a></li> 2163 </ul> 2164 </td> 2165 2166 </tr> 2167 <tr class="entries_header"> 2168 <th class="th_details" colspan="5">Details</th> 2169 </tr> 2170 <tr class="entry_cont"> 2171 <td class="entry_details" colspan="5"> 2172 <p>The adjustment is measured as a count of steps,<wbr/> with the 2173step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 2174allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 2175<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 2176will mean an exposure compensation of +2 EV; -3 will mean an 2177exposure compensation of -1 EV.<wbr/> One EV represents a doubling 2178of image brightness.<wbr/> Note that this control will only be 2179effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 2180will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 2181<p>In the event of exposure compensation value being changed,<wbr/> camera device 2182may take several frames to reach the newly requested exposure target.<wbr/> 2183During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 2184state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 2185change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 2186FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 2187 </td> 2188 </tr> 2189 2190 2191 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2192 <!-- end of entry --> 2193 2194 2195 <tr class="entry" id="controls_android.control.aeLock"> 2196 <td class="entry_name 2197 " rowspan="3"> 2198 android.<wbr/>control.<wbr/>ae<wbr/>Lock 2199 </td> 2200 <td class="entry_type"> 2201 <span class="entry_type_name entry_type_name_enum">byte</span> 2202 2203 <span class="entry_type_visibility"> [public as boolean]</span> 2204 2205 2206 <span class="entry_type_hwlevel">[legacy] </span> 2207 2208 2209 2210 <ul class="entry_type_enum"> 2211 <li> 2212 <span class="entry_type_enum_name">OFF</span> 2213 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 2214is free to update its parameters.<wbr/></p></span> 2215 </li> 2216 <li> 2217 <span class="entry_type_enum_name">ON</span> 2218 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 2219must not update the exposure and sensitivity parameters 2220while the lock is active.<wbr/></p> 2221<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 2222will still take effect while auto-exposure is locked.<wbr/></p> 2223<p>Some rare LEGACY devices may not support 2224this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 2225 </li> 2226 </ul> 2227 2228 </td> <!-- entry_type --> 2229 2230 <td class="entry_description"> 2231 <p>Whether auto-exposure (AE) is currently locked to its latest 2232calculated values.<wbr/></p> 2233 </td> 2234 2235 <td class="entry_units"> 2236 </td> 2237 2238 <td class="entry_range"> 2239 </td> 2240 2241 <td class="entry_tags"> 2242 <ul class="entry_tags"> 2243 <li><a href="#tag_BC">BC</a></li> 2244 </ul> 2245 </td> 2246 2247 </tr> 2248 <tr class="entries_header"> 2249 <th class="th_details" colspan="5">Details</th> 2250 </tr> 2251 <tr class="entry_cont"> 2252 <td class="entry_details" colspan="5"> 2253 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 2254and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 2255<p>Note that even when AE is locked,<wbr/> the flash may be fired if 2256the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 2257ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 2258<p>When <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> is changed,<wbr/> even if the AE lock 2259is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 2260<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 2261when AE is already locked,<wbr/> the camera device will not change the exposure time 2262(<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) and sensitivity (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 2263parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 2264is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 2265<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> the scene may become overexposed.<wbr/> 2266Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 2267<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 2268the AE if AE is locked by the camera device internally during precapture metering 2269sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 2270ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 2271will never succeed in a sequence of preview requests where AE lock is always set 2272to <code>false</code>.<wbr/></p> 2273<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 2274get locked do not necessarily correspond to the settings that were present in the 2275latest capture result received from the camera device,<wbr/> since additional captures 2276and AE updates may have occurred even before the result was sent out.<wbr/> If an 2277application is switching between automatic and manual control and wishes to eliminate 2278any flicker during the switch,<wbr/> the following procedure is recommended:</p> 2279<ol> 2280<li>Starting in auto-AE mode:</li> 2281<li>Lock AE</li> 2282<li>Wait for the first result to be output that has the AE locked</li> 2283<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 2284<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 2285</ol> 2286<p>See <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE lock related state transition details.<wbr/></p> 2287 </td> 2288 </tr> 2289 2290 2291 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2292 <!-- end of entry --> 2293 2294 2295 <tr class="entry" id="controls_android.control.aeMode"> 2296 <td class="entry_name 2297 " rowspan="3"> 2298 android.<wbr/>control.<wbr/>ae<wbr/>Mode 2299 </td> 2300 <td class="entry_type"> 2301 <span class="entry_type_name entry_type_name_enum">byte</span> 2302 2303 <span class="entry_type_visibility"> [public]</span> 2304 2305 2306 <span class="entry_type_hwlevel">[legacy] </span> 2307 2308 2309 2310 <ul class="entry_type_enum"> 2311 <li> 2312 <span class="entry_type_enum_name">OFF</span> 2313 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 2314<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2315<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 2316<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 2317device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 2318a flash unit for this camera device.<wbr/></p> 2319<p>Note that auto-white balance (AWB) and auto-focus (AF) 2320behavior is device dependent when AE is in OFF mode.<wbr/> 2321To have consistent behavior across different devices,<wbr/> 2322it is recommended to either set AWB and AF to OFF mode 2323or lock AWB and AF before setting AE to OFF.<wbr/> 2324See <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/> 2325<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>,<wbr/> and <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 2326for more details.<wbr/></p> 2327<p>LEGACY devices do not support the OFF mode and will 2328override attempts to use this value to ON.<wbr/></p></span> 2329 </li> 2330 <li> 2331 <span class="entry_type_enum_name">ON</span> 2332 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 2333with no flash control.<wbr/></p> 2334<p>The application's values for 2335<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2336<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2337<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 2338application has control over the various 2339android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 2340 </li> 2341 <li> 2342 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 2343 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2344the camera's flash unit,<wbr/> firing it in low-light 2345conditions.<wbr/></p> 2346<p>The flash may be fired during a precapture sequence 2347(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2348may be fired for captures for which the 2349<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2350STILL_<wbr/>CAPTURE</p></span> 2351 </li> 2352 <li> 2353 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 2354 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2355the camera's flash unit,<wbr/> always firing it for still 2356captures.<wbr/></p> 2357<p>The flash may be fired during a precapture sequence 2358(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2359will always be fired for captures for which the 2360<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2361STILL_<wbr/>CAPTURE</p></span> 2362 </li> 2363 <li> 2364 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 2365 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 2366reduction.<wbr/></p> 2367<p>If deemed necessary by the camera device,<wbr/> a red eye 2368reduction flash will fire during the precapture 2369sequence.<wbr/></p></span> 2370 </li> 2371 </ul> 2372 2373 </td> <!-- entry_type --> 2374 2375 <td class="entry_description"> 2376 <p>The desired mode for the camera device's 2377auto-exposure routine.<wbr/></p> 2378 </td> 2379 2380 <td class="entry_units"> 2381 </td> 2382 2383 <td class="entry_range"> 2384 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 2385 </td> 2386 2387 <td class="entry_tags"> 2388 <ul class="entry_tags"> 2389 <li><a href="#tag_BC">BC</a></li> 2390 </ul> 2391 </td> 2392 2393 </tr> 2394 <tr class="entries_header"> 2395 <th class="th_details" colspan="5">Details</th> 2396 </tr> 2397 <tr class="entry_cont"> 2398 <td class="entry_details" colspan="5"> 2399 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 2400AUTO.<wbr/></p> 2401<p>When set to any of the ON modes,<wbr/> the camera device's 2402auto-exposure routine is enabled,<wbr/> overriding the 2403application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 2404and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2405<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2406<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 2407is selected,<wbr/> the camera device's flash unit controls are 2408also overridden.<wbr/></p> 2409<p>The FLASH modes are only available if the camera device 2410has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 2411<p>If flash TORCH mode is desired,<wbr/> this field must be set to 2412ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 2413<p>When set to any of the ON modes,<wbr/> the values chosen by the 2414camera device auto-exposure routine for the overridden 2415fields for a given capture will be available in its 2416CaptureResult.<wbr/></p> 2417 </td> 2418 </tr> 2419 2420 2421 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2422 <!-- end of entry --> 2423 2424 2425 <tr class="entry" id="controls_android.control.aeRegions"> 2426 <td class="entry_name 2427 " rowspan="5"> 2428 android.<wbr/>control.<wbr/>ae<wbr/>Regions 2429 </td> 2430 <td class="entry_type"> 2431 <span class="entry_type_name">int32</span> 2432 <span class="entry_type_container">x</span> 2433 2434 <span class="entry_type_array"> 2435 5 x area_count 2436 </span> 2437 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2438 2439 2440 2441 2442 2443 2444 </td> <!-- entry_type --> 2445 2446 <td class="entry_description"> 2447 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 2448 </td> 2449 2450 <td class="entry_units"> 2451 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 2452 </td> 2453 2454 <td class="entry_range"> 2455 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 2456<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 2457 </td> 2458 2459 <td class="entry_tags"> 2460 <ul class="entry_tags"> 2461 <li><a href="#tag_BC">BC</a></li> 2462 </ul> 2463 </td> 2464 2465 </tr> 2466 <tr class="entries_header"> 2467 <th class="th_details" colspan="5">Details</th> 2468 </tr> 2469 <tr class="entry_cont"> 2470 <td class="entry_details" colspan="5"> 2471 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 2472Otherwise will always be present.<wbr/></p> 2473<p>The maximum number of regions supported by the device is determined by the value 2474of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 2475<p>The coordinate system is based on the active pixel array,<wbr/> 2476with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2477(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2478<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2479bottom-right pixel in the active pixel array.<wbr/></p> 2480<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 2481for every pixel in the area.<wbr/> This means that a large metering area 2482with the same weight as a smaller area will have more effect in 2483the metering result.<wbr/> Metering areas can partially overlap and the 2484camera device will add the weights in the overlap region.<wbr/></p> 2485<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 2486region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 2487weight is ignored.<wbr/></p> 2488<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 2489camera device.<wbr/></p> 2490<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in 2491capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 2492region and output only the intersection rectangle as the metering region in the result 2493metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 2494not reported in the result metadata.<wbr/></p> 2495 </td> 2496 </tr> 2497 2498 <tr class="entries_header"> 2499 <th class="th_details" colspan="5">HAL Implementation Details</th> 2500 </tr> 2501 <tr class="entry_cont"> 2502 <td class="entry_details" colspan="5"> 2503 <p>The HAL level representation of MeteringRectangle[] is a 2504int[5 * area_<wbr/>count].<wbr/> 2505Every five elements represent a metering region of 2506(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2507The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2508exclusive on xmax and ymax.<wbr/></p> 2509 </td> 2510 </tr> 2511 2512 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2513 <!-- end of entry --> 2514 2515 2516 <tr class="entry" id="controls_android.control.aeTargetFpsRange"> 2517 <td class="entry_name 2518 " rowspan="3"> 2519 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 2520 </td> 2521 <td class="entry_type"> 2522 <span class="entry_type_name">int32</span> 2523 <span class="entry_type_container">x</span> 2524 2525 <span class="entry_type_array"> 2526 2 2527 </span> 2528 <span class="entry_type_visibility"> [public as rangeInt]</span> 2529 2530 2531 <span class="entry_type_hwlevel">[legacy] </span> 2532 2533 2534 2535 2536 </td> <!-- entry_type --> 2537 2538 <td class="entry_description"> 2539 <p>Range over which the auto-exposure routine can 2540adjust the capture frame rate to maintain good 2541exposure.<wbr/></p> 2542 </td> 2543 2544 <td class="entry_units"> 2545 Frames per second (FPS) 2546 </td> 2547 2548 <td class="entry_range"> 2549 <p>Any of the entries in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p> 2550 </td> 2551 2552 <td class="entry_tags"> 2553 <ul class="entry_tags"> 2554 <li><a href="#tag_BC">BC</a></li> 2555 </ul> 2556 </td> 2557 2558 </tr> 2559 <tr class="entries_header"> 2560 <th class="th_details" colspan="5">Details</th> 2561 </tr> 2562 <tr class="entry_cont"> 2563 <td class="entry_details" colspan="5"> 2564 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 2565manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 2566<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 2567 </td> 2568 </tr> 2569 2570 2571 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2572 <!-- end of entry --> 2573 2574 2575 <tr class="entry" id="controls_android.control.aePrecaptureTrigger"> 2576 <td class="entry_name 2577 " rowspan="5"> 2578 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 2579 </td> 2580 <td class="entry_type"> 2581 <span class="entry_type_name entry_type_name_enum">byte</span> 2582 2583 <span class="entry_type_visibility"> [public]</span> 2584 2585 2586 <span class="entry_type_hwlevel">[limited] </span> 2587 2588 2589 2590 <ul class="entry_type_enum"> 2591 <li> 2592 <span class="entry_type_enum_name">IDLE</span> 2593 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2594 </li> 2595 <li> 2596 <span class="entry_type_enum_name">START</span> 2597 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 2598by the camera device.<wbr/></p> 2599<p>The exact effect of the precapture trigger depends on 2600the current AE mode and state.<wbr/></p></span> 2601 </li> 2602 <li> 2603 <span class="entry_type_enum_name">CANCEL</span> 2604 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 2605precapture metering sequence,<wbr/> the auto-exposure routine will return to its 2606initial state.<wbr/></p></span> 2607 </li> 2608 </ul> 2609 2610 </td> <!-- entry_type --> 2611 2612 <td class="entry_description"> 2613 <p>Whether the camera device will trigger a precapture 2614metering sequence when it processes this request.<wbr/></p> 2615 </td> 2616 2617 <td class="entry_units"> 2618 </td> 2619 2620 <td class="entry_range"> 2621 </td> 2622 2623 <td class="entry_tags"> 2624 <ul class="entry_tags"> 2625 <li><a href="#tag_BC">BC</a></li> 2626 </ul> 2627 </td> 2628 2629 </tr> 2630 <tr class="entries_header"> 2631 <th class="th_details" colspan="5">Details</th> 2632 </tr> 2633 <tr class="entry_cont"> 2634 <td class="entry_details" colspan="5"> 2635 <p>This entry is normally set to IDLE,<wbr/> or is not 2636included at all in the request settings.<wbr/> When included and 2637set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 2638precapture metering sequence.<wbr/></p> 2639<p>When set to CANCEL,<wbr/> the camera device will cancel any active 2640precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 2641If a precapture metering sequence is already completed,<wbr/> and the camera 2642device has implicitly locked the AE for subsequent still capture,<wbr/> the 2643CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 2644<p>The precapture sequence should be triggered before starting a 2645high-quality still capture for final metering decisions to 2646be made,<wbr/> and for firing pre-capture flash pulses to estimate 2647scene brightness and required final capture flash power,<wbr/> when 2648the flash is enabled.<wbr/></p> 2649<p>Normally,<wbr/> this entry should be set to START for only a 2650single request,<wbr/> and the application should wait until the 2651sequence completes before starting a new one.<wbr/></p> 2652<p>When a precapture metering sequence is finished,<wbr/> the camera device 2653may lock the auto-exposure routine internally to be able to accurately expose the 2654subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 2655For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 2656submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 2657submit a request with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == true</code>,<wbr/> followed by a request 2658with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == false</code>,<wbr/> if the application decides not to submit a 2659still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 2660API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 2661internally locked AE if the application doesn't submit a still capture request after 2662the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 2663be used in devices that have earlier API levels.<wbr/></p> 2664<p>The exact effect of auto-exposure (AE) precapture trigger 2665depends on the current AE mode and state; see 2666<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 2667details.<wbr/></p> 2668<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 2669capturing a high-resolution JPEG image will automatically trigger a 2670precapture sequence before the high-resolution capture,<wbr/> including 2671potentially firing a pre-capture flash.<wbr/></p> 2672<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 2673simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 2674the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 2675focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 2676trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 2677changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 2678example.<wbr/></p> 2679<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 2680the camera device will complete them in the optimal order for that device.<wbr/></p> 2681 </td> 2682 </tr> 2683 2684 <tr class="entries_header"> 2685 <th class="th_details" colspan="5">HAL Implementation Details</th> 2686 </tr> 2687 <tr class="entry_cont"> 2688 <td class="entry_details" colspan="5"> 2689 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 2690(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 2691treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 2692AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 2693to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 2694 </td> 2695 </tr> 2696 2697 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2698 <!-- end of entry --> 2699 2700 2701 <tr class="entry" id="controls_android.control.afMode"> 2702 <td class="entry_name 2703 " rowspan="5"> 2704 android.<wbr/>control.<wbr/>af<wbr/>Mode 2705 </td> 2706 <td class="entry_type"> 2707 <span class="entry_type_name entry_type_name_enum">byte</span> 2708 2709 <span class="entry_type_visibility"> [public]</span> 2710 2711 2712 <span class="entry_type_hwlevel">[legacy] </span> 2713 2714 2715 2716 <ul class="entry_type_enum"> 2717 <li> 2718 <span class="entry_type_enum_name">OFF</span> 2719 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 2720<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 2721application.<wbr/></p></span> 2722 </li> 2723 <li> 2724 <span class="entry_type_enum_name">AUTO</span> 2725 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 2726<p>In this mode,<wbr/> the lens does not move unless 2727the autofocus trigger action is called.<wbr/> When that trigger 2728is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2729the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 2730<p>Always supported if lens is not fixed focus.<wbr/></p> 2731<p>Use <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> to determine if lens 2732is fixed-focus.<wbr/></p> 2733<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 2734and sets the AF state to INACTIVE.<wbr/></p></span> 2735 </li> 2736 <li> 2737 <span class="entry_type_enum_name">MACRO</span> 2738 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 2739<p>In this mode,<wbr/> the lens does not move unless the 2740autofocus trigger action is called.<wbr/> When that trigger is 2741activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2742the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 2743mode is optimized for focusing on objects very close to 2744the camera.<wbr/></p> 2745<p>When that trigger is activated,<wbr/> AF will transition to 2746ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 2747NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 2748position to default,<wbr/> and sets the AF state to 2749INACTIVE.<wbr/></p></span> 2750 </li> 2751 <li> 2752 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 2753 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2754position continually to attempt to provide a 2755constantly-in-focus image stream.<wbr/></p> 2756<p>The focusing behavior should be suitable for good quality 2757video recording; typically this means slower focus 2758movement and no overshoots.<wbr/> When the AF trigger is not 2759involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 2760and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 2761states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 2762the algorithm should immediately transition into 2763AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2764lens position until a cancel AF trigger is received.<wbr/></p> 2765<p>Once cancel is received,<wbr/> the algorithm should transition 2766back to INACTIVE and resume passive scan.<wbr/> Note that this 2767behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 2768ongoing PASSIVE_<wbr/>SCAN must immediately be 2769canceled.<wbr/></p></span> 2770 </li> 2771 <li> 2772 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 2773 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2774position continually to attempt to provide a 2775constantly-in-focus image stream.<wbr/></p> 2776<p>The focusing behavior should be suitable for still image 2777capture; typically this means focusing as fast as 2778possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 2779algorithm should start in INACTIVE state,<wbr/> and then 2780transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 2781appropriate as it attempts to maintain focus.<wbr/> When the AF 2782trigger is activated,<wbr/> the algorithm should finish its 2783PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 2784AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2785lens position until a cancel AF trigger is received.<wbr/></p> 2786<p>When the AF cancel trigger is activated,<wbr/> the algorithm 2787should transition back to INACTIVE and then act as if it 2788has just been started.<wbr/></p></span> 2789 </li> 2790 <li> 2791 <span class="entry_type_enum_name">EDOF</span> 2792 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 2793<p>The camera device will produce images with an extended 2794depth of field automatically; no special focusing 2795operations need to be done before taking a picture.<wbr/></p> 2796<p>AF triggers are ignored,<wbr/> and the AF state will always be 2797INACTIVE.<wbr/></p></span> 2798 </li> 2799 </ul> 2800 2801 </td> <!-- entry_type --> 2802 2803 <td class="entry_description"> 2804 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 2805mode it is set to.<wbr/></p> 2806 </td> 2807 2808 <td class="entry_units"> 2809 </td> 2810 2811 <td class="entry_range"> 2812 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 2813 </td> 2814 2815 <td class="entry_tags"> 2816 <ul class="entry_tags"> 2817 <li><a href="#tag_BC">BC</a></li> 2818 </ul> 2819 </td> 2820 2821 </tr> 2822 <tr class="entries_header"> 2823 <th class="th_details" colspan="5">Details</th> 2824 </tr> 2825 <tr class="entry_cont"> 2826 <td class="entry_details" colspan="5"> 2827 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 2828(i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>).<wbr/> Also note that 2829when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 2830dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 2831setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p> 2832<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 2833the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 2834in result metadata.<wbr/></p> 2835 </td> 2836 </tr> 2837 2838 <tr class="entries_header"> 2839 <th class="th_details" colspan="5">HAL Implementation Details</th> 2840 </tr> 2841 <tr class="entry_cont"> 2842 <td class="entry_details" colspan="5"> 2843 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 2844request (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> <code>==</code> START).<wbr/> After an AF trigger,<wbr/> the afState will end 2845up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 2846<a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> which indicates that the lens is 2847locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 2848after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 2849the same focal plane remains in focus.<wbr/></p> 2850<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 2851scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 2852(see <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> the HAL should maintain the 2853same lock behavior as above.<wbr/></p> 2854<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 2855focus distance control depends on the <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a>.<wbr/> 2856However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 2857manual control.<wbr/></p> 2858<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 2859camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 2860remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 2861by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 2862that will arise on camera modules with open-loop VCMs.<wbr/></p> 2863 </td> 2864 </tr> 2865 2866 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2867 <!-- end of entry --> 2868 2869 2870 <tr class="entry" id="controls_android.control.afRegions"> 2871 <td class="entry_name 2872 " rowspan="5"> 2873 android.<wbr/>control.<wbr/>af<wbr/>Regions 2874 </td> 2875 <td class="entry_type"> 2876 <span class="entry_type_name">int32</span> 2877 <span class="entry_type_container">x</span> 2878 2879 <span class="entry_type_array"> 2880 5 x area_count 2881 </span> 2882 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2883 2884 2885 2886 2887 2888 2889 </td> <!-- entry_type --> 2890 2891 <td class="entry_description"> 2892 <p>List of metering areas to use for auto-focus.<wbr/></p> 2893 </td> 2894 2895 <td class="entry_units"> 2896 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 2897 </td> 2898 2899 <td class="entry_range"> 2900 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 2901<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 2902 </td> 2903 2904 <td class="entry_tags"> 2905 <ul class="entry_tags"> 2906 <li><a href="#tag_BC">BC</a></li> 2907 </ul> 2908 </td> 2909 2910 </tr> 2911 <tr class="entries_header"> 2912 <th class="th_details" colspan="5">Details</th> 2913 </tr> 2914 <tr class="entry_cont"> 2915 <td class="entry_details" colspan="5"> 2916 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 2917Otherwise will always be present.<wbr/></p> 2918<p>The maximum number of focus areas supported by the device is determined by the value 2919of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 2920<p>The coordinate system is based on the active pixel array,<wbr/> 2921with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2922(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2923<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2924bottom-right pixel in the active pixel array.<wbr/></p> 2925<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 2926for every pixel in the area.<wbr/> This means that a large metering area 2927with the same weight as a smaller area will have more effect in 2928the metering result.<wbr/> Metering areas can partially overlap and the 2929camera device will add the weights in the overlap region.<wbr/></p> 2930<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 2931is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 2932ignored.<wbr/></p> 2933<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 2934camera device.<wbr/></p> 2935<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in 2936capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 2937region and output only the intersection rectangle as the metering region in the result 2938metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 2939not reported in the result metadata.<wbr/></p> 2940 </td> 2941 </tr> 2942 2943 <tr class="entries_header"> 2944 <th class="th_details" colspan="5">HAL Implementation Details</th> 2945 </tr> 2946 <tr class="entry_cont"> 2947 <td class="entry_details" colspan="5"> 2948 <p>The HAL level representation of MeteringRectangle[] is a 2949int[5 * area_<wbr/>count].<wbr/> 2950Every five elements represent a metering region of 2951(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2952The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2953exclusive on xmax and ymax.<wbr/></p> 2954 </td> 2955 </tr> 2956 2957 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2958 <!-- end of entry --> 2959 2960 2961 <tr class="entry" id="controls_android.control.afTrigger"> 2962 <td class="entry_name 2963 " rowspan="5"> 2964 android.<wbr/>control.<wbr/>af<wbr/>Trigger 2965 </td> 2966 <td class="entry_type"> 2967 <span class="entry_type_name entry_type_name_enum">byte</span> 2968 2969 <span class="entry_type_visibility"> [public]</span> 2970 2971 2972 <span class="entry_type_hwlevel">[legacy] </span> 2973 2974 2975 2976 <ul class="entry_type_enum"> 2977 <li> 2978 <span class="entry_type_enum_name">IDLE</span> 2979 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2980 </li> 2981 <li> 2982 <span class="entry_type_enum_name">START</span> 2983 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 2984 </li> 2985 <li> 2986 <span class="entry_type_enum_name">CANCEL</span> 2987 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 2988state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 2989 </li> 2990 </ul> 2991 2992 </td> <!-- entry_type --> 2993 2994 <td class="entry_description"> 2995 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 2996 </td> 2997 2998 <td class="entry_units"> 2999 </td> 3000 3001 <td class="entry_range"> 3002 </td> 3003 3004 <td class="entry_tags"> 3005 <ul class="entry_tags"> 3006 <li><a href="#tag_BC">BC</a></li> 3007 </ul> 3008 </td> 3009 3010 </tr> 3011 <tr class="entries_header"> 3012 <th class="th_details" colspan="5">Details</th> 3013 </tr> 3014 <tr class="entry_cont"> 3015 <td class="entry_details" colspan="5"> 3016 <p>This entry is normally set to IDLE,<wbr/> or is not 3017included at all in the request settings.<wbr/></p> 3018<p>When included and set to START,<wbr/> the camera device will trigger the 3019autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 3020<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 3021and return to its initial AF state.<wbr/></p> 3022<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 3023single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 3024START for multiple captures in a row means restarting the AF operation over 3025and over again.<wbr/></p> 3026<p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what the trigger means for each AF mode.<wbr/></p> 3027<p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> 3028simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 3029the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 3030focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 3031trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 3032changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 3033 </td> 3034 </tr> 3035 3036 <tr class="entries_header"> 3037 <th class="th_details" colspan="5">HAL Implementation Details</th> 3038 </tr> 3039 <tr class="entry_cont"> 3040 <td class="entry_details" colspan="5"> 3041 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 3042(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 3043treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 3044AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 3045to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 3046 </td> 3047 </tr> 3048 3049 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3050 <!-- end of entry --> 3051 3052 3053 <tr class="entry" id="controls_android.control.awbLock"> 3054 <td class="entry_name 3055 " rowspan="3"> 3056 android.<wbr/>control.<wbr/>awb<wbr/>Lock 3057 </td> 3058 <td class="entry_type"> 3059 <span class="entry_type_name entry_type_name_enum">byte</span> 3060 3061 <span class="entry_type_visibility"> [public as boolean]</span> 3062 3063 3064 <span class="entry_type_hwlevel">[legacy] </span> 3065 3066 3067 3068 <ul class="entry_type_enum"> 3069 <li> 3070 <span class="entry_type_enum_name">OFF</span> 3071 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 3072algorithm is free to update its parameters if in AUTO 3073mode.<wbr/></p></span> 3074 </li> 3075 <li> 3076 <span class="entry_type_enum_name">ON</span> 3077 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 3078algorithm will not update its parameters while the lock 3079is active.<wbr/></p></span> 3080 </li> 3081 </ul> 3082 3083 </td> <!-- entry_type --> 3084 3085 <td class="entry_description"> 3086 <p>Whether auto-white balance (AWB) is currently locked to its 3087latest calculated values.<wbr/></p> 3088 </td> 3089 3090 <td class="entry_units"> 3091 </td> 3092 3093 <td class="entry_range"> 3094 </td> 3095 3096 <td class="entry_tags"> 3097 <ul class="entry_tags"> 3098 <li><a href="#tag_BC">BC</a></li> 3099 </ul> 3100 </td> 3101 3102 </tr> 3103 <tr class="entries_header"> 3104 <th class="th_details" colspan="5">Details</th> 3105 </tr> 3106 <tr class="entry_cont"> 3107 <td class="entry_details" colspan="5"> 3108 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 3109and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 3110<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 3111get locked do not necessarily correspond to the settings that were present in the 3112latest capture result received from the camera device,<wbr/> since additional captures 3113and AWB updates may have occurred even before the result was sent out.<wbr/> If an 3114application is switching between automatic and manual control and wishes to eliminate 3115any flicker during the switch,<wbr/> the following procedure is recommended:</p> 3116<ol> 3117<li>Starting in auto-AWB mode:</li> 3118<li>Lock AWB</li> 3119<li>Wait for the first result to be output that has the AWB locked</li> 3120<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 3121<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 3122</ol> 3123<p>Note that AWB lock is only meaningful when 3124<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 3125AWB is already fixed to a specific setting.<wbr/></p> 3126<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 3127 </td> 3128 </tr> 3129 3130 3131 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3132 <!-- end of entry --> 3133 3134 3135 <tr class="entry" id="controls_android.control.awbMode"> 3136 <td class="entry_name 3137 " rowspan="3"> 3138 android.<wbr/>control.<wbr/>awb<wbr/>Mode 3139 </td> 3140 <td class="entry_type"> 3141 <span class="entry_type_name entry_type_name_enum">byte</span> 3142 3143 <span class="entry_type_visibility"> [public]</span> 3144 3145 3146 <span class="entry_type_hwlevel">[legacy] </span> 3147 3148 3149 3150 <ul class="entry_type_enum"> 3151 <li> 3152 <span class="entry_type_enum_name">OFF</span> 3153 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 3154<p>The application-selected color transform matrix 3155(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 3156(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 3157device for manual white balance control.<wbr/></p></span> 3158 </li> 3159 <li> 3160 <span class="entry_type_enum_name">AUTO</span> 3161 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 3162<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3163and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3164For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3165values used by the camera device for the transform and gains 3166will be available in the capture result for this request.<wbr/></p></span> 3167 </li> 3168 <li> 3169 <span class="entry_type_enum_name">INCANDESCENT</span> 3170 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3171the camera device uses incandescent light as the assumed scene 3172illumination for white balance.<wbr/></p> 3173<p>While the exact white balance transforms are up to the 3174camera device,<wbr/> they will approximately match the CIE 3175standard illuminant A.<wbr/></p> 3176<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3177and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3178For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3179values used by the camera device for the transform and gains 3180will be available in the capture result for this request.<wbr/></p></span> 3181 </li> 3182 <li> 3183 <span class="entry_type_enum_name">FLUORESCENT</span> 3184 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3185the camera device uses fluorescent light as the assumed scene 3186illumination for white balance.<wbr/></p> 3187<p>While the exact white balance transforms are up to the 3188camera device,<wbr/> they will approximately match the CIE 3189standard illuminant F2.<wbr/></p> 3190<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3191and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3192For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3193values used by the camera device for the transform and gains 3194will be available in the capture result for this request.<wbr/></p></span> 3195 </li> 3196 <li> 3197 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 3198 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3199the camera device uses warm fluorescent light as the assumed scene 3200illumination for white balance.<wbr/></p> 3201<p>While the exact white balance transforms are up to the 3202camera device,<wbr/> they will approximately match the CIE 3203standard illuminant F4.<wbr/></p> 3204<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3205and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3206For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3207values used by the camera device for the transform and gains 3208will be available in the capture result for this request.<wbr/></p></span> 3209 </li> 3210 <li> 3211 <span class="entry_type_enum_name">DAYLIGHT</span> 3212 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3213the camera device uses daylight light as the assumed scene 3214illumination for white balance.<wbr/></p> 3215<p>While the exact white balance transforms are up to the 3216camera device,<wbr/> they will approximately match the CIE 3217standard illuminant D65.<wbr/></p> 3218<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3219and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3220For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3221values used by the camera device for the transform and gains 3222will be available in the capture result for this request.<wbr/></p></span> 3223 </li> 3224 <li> 3225 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 3226 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3227the camera device uses cloudy daylight light as the assumed scene 3228illumination for white balance.<wbr/></p> 3229<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3230and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3231For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3232values used by the camera device for the transform and gains 3233will be available in the capture result for this request.<wbr/></p></span> 3234 </li> 3235 <li> 3236 <span class="entry_type_enum_name">TWILIGHT</span> 3237 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3238the camera device uses twilight light as the assumed scene 3239illumination for white balance.<wbr/></p> 3240<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3241and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3242For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3243values used by the camera device for the transform and gains 3244will be available in the capture result for this request.<wbr/></p></span> 3245 </li> 3246 <li> 3247 <span class="entry_type_enum_name">SHADE</span> 3248 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3249the camera device uses shade light as the assumed scene 3250illumination for white balance.<wbr/></p> 3251<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3252and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3253For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3254values used by the camera device for the transform and gains 3255will be available in the capture result for this request.<wbr/></p></span> 3256 </li> 3257 </ul> 3258 3259 </td> <!-- entry_type --> 3260 3261 <td class="entry_description"> 3262 <p>Whether auto-white balance (AWB) is currently setting the color 3263transform fields,<wbr/> and what its illumination target 3264is.<wbr/></p> 3265 </td> 3266 3267 <td class="entry_units"> 3268 </td> 3269 3270 <td class="entry_range"> 3271 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 3272 </td> 3273 3274 <td class="entry_tags"> 3275 <ul class="entry_tags"> 3276 <li><a href="#tag_BC">BC</a></li> 3277 </ul> 3278 </td> 3279 3280 </tr> 3281 <tr class="entries_header"> 3282 <th class="th_details" colspan="5">Details</th> 3283 </tr> 3284 <tr class="entry_cont"> 3285 <td class="entry_details" colspan="5"> 3286 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 3287<p>When set to the ON mode,<wbr/> the camera device's auto-white balance 3288routine is enabled,<wbr/> overriding the application's selected 3289<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 3290<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> Note that when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 3291is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 3292also set AWB mode to OFF or lock AWB by using <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> before 3293setting AE mode to OFF.<wbr/></p> 3294<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 3295routine is disabled.<wbr/> The application manually controls the white 3296balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> 3297and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 3298<p>When set to any other modes,<wbr/> the camera device's auto-white 3299balance routine is disabled.<wbr/> The camera device uses each 3300particular illumination target for white balance 3301adjustment.<wbr/> The application's values for 3302<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 3303<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 3304<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 3305 </td> 3306 </tr> 3307 3308 3309 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3310 <!-- end of entry --> 3311 3312 3313 <tr class="entry" id="controls_android.control.awbRegions"> 3314 <td class="entry_name 3315 " rowspan="5"> 3316 android.<wbr/>control.<wbr/>awb<wbr/>Regions 3317 </td> 3318 <td class="entry_type"> 3319 <span class="entry_type_name">int32</span> 3320 <span class="entry_type_container">x</span> 3321 3322 <span class="entry_type_array"> 3323 5 x area_count 3324 </span> 3325 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 3326 3327 3328 3329 3330 3331 3332 </td> <!-- entry_type --> 3333 3334 <td class="entry_description"> 3335 <p>List of metering areas to use for auto-white-balance illuminant 3336estimation.<wbr/></p> 3337 </td> 3338 3339 <td class="entry_units"> 3340 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 3341 </td> 3342 3343 <td class="entry_range"> 3344 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 3345<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 3346 </td> 3347 3348 <td class="entry_tags"> 3349 <ul class="entry_tags"> 3350 <li><a href="#tag_BC">BC</a></li> 3351 </ul> 3352 </td> 3353 3354 </tr> 3355 <tr class="entries_header"> 3356 <th class="th_details" colspan="5">Details</th> 3357 </tr> 3358 <tr class="entry_cont"> 3359 <td class="entry_details" colspan="5"> 3360 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 3361Otherwise will always be present.<wbr/></p> 3362<p>The maximum number of regions supported by the device is determined by the value 3363of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 3364<p>The coordinate system is based on the active pixel array,<wbr/> 3365with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 3366(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3367<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 3368bottom-right pixel in the active pixel array.<wbr/></p> 3369<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 3370for every pixel in the area.<wbr/> This means that a large metering area 3371with the same weight as a smaller area will have more effect in 3372the metering result.<wbr/> Metering areas can partially overlap and the 3373camera device will add the weights in the overlap region.<wbr/></p> 3374<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 3375only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 33760 weight is ignored.<wbr/></p> 3377<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 3378camera device.<wbr/></p> 3379<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in 3380capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 3381region and output only the intersection rectangle as the metering region in the result 3382metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 3383not reported in the result metadata.<wbr/></p> 3384 </td> 3385 </tr> 3386 3387 <tr class="entries_header"> 3388 <th class="th_details" colspan="5">HAL Implementation Details</th> 3389 </tr> 3390 <tr class="entry_cont"> 3391 <td class="entry_details" colspan="5"> 3392 <p>The HAL level representation of MeteringRectangle[] is a 3393int[5 * area_<wbr/>count].<wbr/> 3394Every five elements represent a metering region of 3395(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 3396The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 3397exclusive on xmax and ymax.<wbr/></p> 3398 </td> 3399 </tr> 3400 3401 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3402 <!-- end of entry --> 3403 3404 3405 <tr class="entry" id="controls_android.control.captureIntent"> 3406 <td class="entry_name 3407 " rowspan="3"> 3408 android.<wbr/>control.<wbr/>capture<wbr/>Intent 3409 </td> 3410 <td class="entry_type"> 3411 <span class="entry_type_name entry_type_name_enum">byte</span> 3412 3413 <span class="entry_type_visibility"> [public]</span> 3414 3415 3416 <span class="entry_type_hwlevel">[legacy] </span> 3417 3418 3419 3420 <ul class="entry_type_enum"> 3421 <li> 3422 <span class="entry_type_enum_name">CUSTOM</span> 3423 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 3424categories.<wbr/> The camera device will default to preview-like 3425behavior.<wbr/></p></span> 3426 </li> 3427 <li> 3428 <span class="entry_type_enum_name">PREVIEW</span> 3429 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 3430<p>The precapture trigger may be used to start off a metering 3431w/<wbr/>flash sequence.<wbr/></p></span> 3432 </li> 3433 <li> 3434 <span class="entry_type_enum_name">STILL_CAPTURE</span> 3435 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 3436use case.<wbr/></p> 3437<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 3438 </li> 3439 <li> 3440 <span class="entry_type_enum_name">VIDEO_RECORD</span> 3441 <span class="entry_type_enum_notes"><p>This request is for a video recording 3442use case.<wbr/></p></span> 3443 </li> 3444 <li> 3445 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 3446 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 3447image while recording video) use case.<wbr/></p> 3448<p>The camera device should take the highest-quality image 3449possible (given the other settings) without disrupting the 3450frame rate of video recording.<wbr/> </p></span> 3451 </li> 3452 <li> 3453 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 3454 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 3455application will stream full-resolution images and 3456reprocess one or several later for a final 3457capture.<wbr/></p></span> 3458 </li> 3459 <li> 3460 <span class="entry_type_enum_name">MANUAL</span> 3461 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 3462the applications want to directly control the capture parameters.<wbr/></p> 3463<p>For example,<wbr/> the application may wish to manually control 3464<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> etc.<wbr/></p></span> 3465 </li> 3466 </ul> 3467 3468 </td> <!-- entry_type --> 3469 3470 <td class="entry_description"> 3471 <p>Information to the camera device 3A (auto-exposure,<wbr/> 3472auto-focus,<wbr/> auto-white balance) routines about the purpose 3473of this capture,<wbr/> to help the camera device to decide optimal 3A 3474strategy.<wbr/></p> 3475 </td> 3476 3477 <td class="entry_units"> 3478 </td> 3479 3480 <td class="entry_range"> 3481 </td> 3482 3483 <td class="entry_tags"> 3484 <ul class="entry_tags"> 3485 <li><a href="#tag_BC">BC</a></li> 3486 </ul> 3487 </td> 3488 3489 </tr> 3490 <tr class="entries_header"> 3491 <th class="th_details" colspan="5">Details</th> 3492 </tr> 3493 <tr class="entry_cont"> 3494 <td class="entry_details" colspan="5"> 3495 <p>This control (except for MANUAL) is only effective if 3496<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 3497<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 3498contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if 3499<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are 3500always supported.<wbr/></p> 3501 </td> 3502 </tr> 3503 3504 3505 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3506 <!-- end of entry --> 3507 3508 3509 <tr class="entry" id="controls_android.control.effectMode"> 3510 <td class="entry_name 3511 " rowspan="3"> 3512 android.<wbr/>control.<wbr/>effect<wbr/>Mode 3513 </td> 3514 <td class="entry_type"> 3515 <span class="entry_type_name entry_type_name_enum">byte</span> 3516 3517 <span class="entry_type_visibility"> [public]</span> 3518 3519 3520 <span class="entry_type_hwlevel">[legacy] </span> 3521 3522 3523 3524 <ul class="entry_type_enum"> 3525 <li> 3526 <span class="entry_type_enum_name">OFF</span> 3527 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 3528 </li> 3529 <li> 3530 <span class="entry_type_enum_name">MONO</span> 3531 <span class="entry_type_enum_optional">[optional]</span> 3532 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 3533a single color.<wbr/></p> 3534<p>This will typically be grayscale.<wbr/></p></span> 3535 </li> 3536 <li> 3537 <span class="entry_type_enum_name">NEGATIVE</span> 3538 <span class="entry_type_enum_optional">[optional]</span> 3539 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 3540are inverted.<wbr/></p></span> 3541 </li> 3542 <li> 3543 <span class="entry_type_enum_name">SOLARIZE</span> 3544 <span class="entry_type_enum_optional">[optional]</span> 3545 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 3546image is wholly or partially reversed in 3547tone.<wbr/></p></span> 3548 </li> 3549 <li> 3550 <span class="entry_type_enum_name">SEPIA</span> 3551 <span class="entry_type_enum_optional">[optional]</span> 3552 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 3553gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 3554 </li> 3555 <li> 3556 <span class="entry_type_enum_name">POSTERIZE</span> 3557 <span class="entry_type_enum_optional">[optional]</span> 3558 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 3559discrete regions of tone rather than a continuous 3560gradient of tones.<wbr/></p></span> 3561 </li> 3562 <li> 3563 <span class="entry_type_enum_name">WHITEBOARD</span> 3564 <span class="entry_type_enum_optional">[optional]</span> 3565 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 3566as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 3567 </li> 3568 <li> 3569 <span class="entry_type_enum_name">BLACKBOARD</span> 3570 <span class="entry_type_enum_optional">[optional]</span> 3571 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 3572as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 3573 </li> 3574 <li> 3575 <span class="entry_type_enum_name">AQUA</span> 3576 <span class="entry_type_enum_optional">[optional]</span> 3577 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 3578 </li> 3579 </ul> 3580 3581 </td> <!-- entry_type --> 3582 3583 <td class="entry_description"> 3584 <p>A special color effect to apply.<wbr/></p> 3585 </td> 3586 3587 <td class="entry_units"> 3588 </td> 3589 3590 <td class="entry_range"> 3591 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 3592 </td> 3593 3594 <td class="entry_tags"> 3595 <ul class="entry_tags"> 3596 <li><a href="#tag_BC">BC</a></li> 3597 </ul> 3598 </td> 3599 3600 </tr> 3601 <tr class="entries_header"> 3602 <th class="th_details" colspan="5">Details</th> 3603 </tr> 3604 <tr class="entry_cont"> 3605 <td class="entry_details" colspan="5"> 3606 <p>When this mode is set,<wbr/> a color effect will be applied 3607to images produced by the camera device.<wbr/> The interpretation 3608and implementation of these color effects is left to the 3609implementor of the camera device,<wbr/> and should not be 3610depended on to be consistent (or present) across all 3611devices.<wbr/></p> 3612 </td> 3613 </tr> 3614 3615 3616 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3617 <!-- end of entry --> 3618 3619 3620 <tr class="entry" id="controls_android.control.mode"> 3621 <td class="entry_name 3622 " rowspan="3"> 3623 android.<wbr/>control.<wbr/>mode 3624 </td> 3625 <td class="entry_type"> 3626 <span class="entry_type_name entry_type_name_enum">byte</span> 3627 3628 <span class="entry_type_visibility"> [public]</span> 3629 3630 3631 <span class="entry_type_hwlevel">[legacy] </span> 3632 3633 3634 3635 <ul class="entry_type_enum"> 3636 <li> 3637 <span class="entry_type_enum_name">OFF</span> 3638 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 3639<p>All control by the device's metering and focusing (3A) 3640routines is disabled,<wbr/> and no other settings in 3641android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 3642<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 3643device to select post-processing values for processing 3644blocks that do not allow for manual control,<wbr/> or are not 3645exposed by the camera API.<wbr/></p> 3646<p>However,<wbr/> the camera device's 3A routines may continue to 3647collect statistics and update their internal state so that 3648when control is switched to AUTO mode,<wbr/> good control values 3649can be immediately applied.<wbr/></p></span> 3650 </li> 3651 <li> 3652 <span class="entry_type_enum_name">AUTO</span> 3653 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 3654<p>Manual control of capture parameters is disabled.<wbr/> All 3655controls in android.<wbr/>control.<wbr/>* besides sceneMode take 3656effect.<wbr/></p></span> 3657 </li> 3658 <li> 3659 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 3660 <span class="entry_type_enum_optional">[optional]</span> 3661 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 3662<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 3663control.<wbr/>afMode controls; the camera device will ignore 3664those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 3665FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 3666This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 3667<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 3668contain some modes other than DISABLED).<wbr/></p></span> 3669 </li> 3670 <li> 3671 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 3672 <span class="entry_type_enum_optional">[optional]</span> 3673 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 3674used by camera device background auto-exposure,<wbr/> auto-white balance and 3675auto-focus algorithms (3A) to update their statistics.<wbr/></p> 3676<p>Specifically,<wbr/> the 3A routines are locked to the last 3677values set from a request with AUTO,<wbr/> OFF,<wbr/> or 3678USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 3679collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 3680discarded by the camera device.<wbr/></p></span> 3681 </li> 3682 </ul> 3683 3684 </td> <!-- entry_type --> 3685 3686 <td class="entry_description"> 3687 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 3688routines.<wbr/></p> 3689 </td> 3690 3691 <td class="entry_units"> 3692 </td> 3693 3694 <td class="entry_range"> 3695 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 3696 </td> 3697 3698 <td class="entry_tags"> 3699 <ul class="entry_tags"> 3700 <li><a href="#tag_BC">BC</a></li> 3701 </ul> 3702 </td> 3703 3704 </tr> 3705 <tr class="entries_header"> 3706 <th class="th_details" colspan="5">Details</th> 3707 </tr> 3708 <tr class="entry_cont"> 3709 <td class="entry_details" colspan="5"> 3710 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 3711by the camera device is disabled.<wbr/> The application must set the fields for 3712capture parameters itself.<wbr/></p> 3713<p>When set to AUTO,<wbr/> the individual algorithm controls in 3714android.<wbr/>control.<wbr/>* are in effect,<wbr/> such as <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p> 3715<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 3716android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 3717one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 3718as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 3719<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 3720<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 3721is that this frame will not be used by camera device background 3A statistics 3722update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 3723where the application doesn't want a 3A manual control capture to affect 3724the subsequent auto 3A capture results.<wbr/></p> 3725 </td> 3726 </tr> 3727 3728 3729 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3730 <!-- end of entry --> 3731 3732 3733 <tr class="entry" id="controls_android.control.sceneMode"> 3734 <td class="entry_name 3735 " rowspan="5"> 3736 android.<wbr/>control.<wbr/>scene<wbr/>Mode 3737 </td> 3738 <td class="entry_type"> 3739 <span class="entry_type_name entry_type_name_enum">byte</span> 3740 3741 <span class="entry_type_visibility"> [public]</span> 3742 3743 3744 <span class="entry_type_hwlevel">[legacy] </span> 3745 3746 3747 3748 <ul class="entry_type_enum"> 3749 <li> 3750 <span class="entry_type_enum_name">DISABLED</span> 3751 <span class="entry_type_enum_value">0</span> 3752 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 3753 </li> 3754 <li> 3755 <span class="entry_type_enum_name">FACE_PRIORITY</span> 3756 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 3757detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 3758auto-exposure routines.<wbr/></p> 3759<p>If face detection statistics are disabled 3760(i.<wbr/>e.<wbr/> <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> is set to OFF),<wbr/> 3761this should still operate correctly (but will not return 3762face detection statistics to the framework).<wbr/></p> 3763<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3764<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> 3765remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 3766 </li> 3767 <li> 3768 <span class="entry_type_enum_name">ACTION</span> 3769 <span class="entry_type_enum_optional">[optional]</span> 3770 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 3771<p>Similar to SPORTS.<wbr/></p></span> 3772 </li> 3773 <li> 3774 <span class="entry_type_enum_name">PORTRAIT</span> 3775 <span class="entry_type_enum_optional">[optional]</span> 3776 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 3777 </li> 3778 <li> 3779 <span class="entry_type_enum_name">LANDSCAPE</span> 3780 <span class="entry_type_enum_optional">[optional]</span> 3781 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 3782 </li> 3783 <li> 3784 <span class="entry_type_enum_name">NIGHT</span> 3785 <span class="entry_type_enum_optional">[optional]</span> 3786 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 3787 </li> 3788 <li> 3789 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 3790 <span class="entry_type_enum_optional">[optional]</span> 3791 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 3792settings.<wbr/></p></span> 3793 </li> 3794 <li> 3795 <span class="entry_type_enum_name">THEATRE</span> 3796 <span class="entry_type_enum_optional">[optional]</span> 3797 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 3798remain off.<wbr/></p></span> 3799 </li> 3800 <li> 3801 <span class="entry_type_enum_name">BEACH</span> 3802 <span class="entry_type_enum_optional">[optional]</span> 3803 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 3804 </li> 3805 <li> 3806 <span class="entry_type_enum_name">SNOW</span> 3807 <span class="entry_type_enum_optional">[optional]</span> 3808 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 3809 </li> 3810 <li> 3811 <span class="entry_type_enum_name">SUNSET</span> 3812 <span class="entry_type_enum_optional">[optional]</span> 3813 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 3814 </li> 3815 <li> 3816 <span class="entry_type_enum_name">STEADYPHOTO</span> 3817 <span class="entry_type_enum_optional">[optional]</span> 3818 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 3819device motion (for example: due to hand shake).<wbr/></p></span> 3820 </li> 3821 <li> 3822 <span class="entry_type_enum_name">FIREWORKS</span> 3823 <span class="entry_type_enum_optional">[optional]</span> 3824 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 3825 </li> 3826 <li> 3827 <span class="entry_type_enum_name">SPORTS</span> 3828 <span class="entry_type_enum_optional">[optional]</span> 3829 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 3830<p>Similar to ACTION.<wbr/></p></span> 3831 </li> 3832 <li> 3833 <span class="entry_type_enum_name">PARTY</span> 3834 <span class="entry_type_enum_optional">[optional]</span> 3835 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 3836people.<wbr/></p></span> 3837 </li> 3838 <li> 3839 <span class="entry_type_enum_name">CANDLELIGHT</span> 3840 <span class="entry_type_enum_optional">[optional]</span> 3841 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 3842is a flame.<wbr/></p></span> 3843 </li> 3844 <li> 3845 <span class="entry_type_enum_name">BARCODE</span> 3846 <span class="entry_type_enum_optional">[optional]</span> 3847 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 3848for use by camera applications that wish to read the 3849barcode value.<wbr/></p></span> 3850 </li> 3851 <li> 3852 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span> 3853 <span class="entry_type_enum_deprecated">[deprecated]</span> 3854 <span class="entry_type_enum_optional">[optional]</span> 3855 <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a> 3856and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 3857for high speed video recording.<wbr/></p> 3858<p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 3859<p>The supported high speed video sizes and fps ranges are specified in 3860<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 3861output frame rates,<wbr/> the application is only allowed to select video size 3862and fps range combinations listed in this static metadata.<wbr/> The fps range 3863can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 3864<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 3865ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 3866controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 3867and post-processing parameters is possible.<wbr/> All other controls operate the 3868same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 3869android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 3870<ul> 3871<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 3872<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 3873<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 3874<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 3875<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 3876<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 3877<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 3878<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 3879<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 3880<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 3881</ul> 3882<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 3883<ul> 3884<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (automatic flash for still capture will not work since aeMode is ON)</li> 3885<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 3886<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 3887<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 3888</ul> 3889<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 3890be lower than what camera can output,<wbr/> depending on the destination Surfaces for 3891the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 3892the application need check if the video encoder is capable of supporting the 3893high frame rate for a given video size,<wbr/> or it will end up with lower recording 3894frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 3895rate will be bounded by the screen refresh rate.<wbr/></p> 3896<p>The camera device will only support up to 2 output high speed streams 3897(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 3898in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 3899<ul> 3900<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 3901format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 3902min(2,<wbr/> <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>[Processed (but not-stalling)]).<wbr/></li> 3903<li>The stream sizes are selected from the sizes reported by 3904<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 3905<li>No processed non-stalling or raw streams are configured.<wbr/></li> 3906</ul> 3907<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 3908<a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> will be ignored by the camera device,<wbr/> 3909the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 3910and the returned capture result metadata will give the fps range choosen 3911by the camera device.<wbr/></p> 3912<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 3913reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 3914the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 3915 </li> 3916 <li> 3917 <span class="entry_type_enum_name">HDR</span> 3918 <span class="entry_type_enum_optional">[optional]</span> 3919 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 3920<p>In this scene mode,<wbr/> the camera device captures images 3921that keep a larger range of scene illumination levels 3922visible in the final image.<wbr/> For example,<wbr/> when taking a 3923picture of a object in front of a bright window,<wbr/> both 3924the object and the scene through the window may be 3925visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 3926one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 3927HDR mode generally takes much longer to capture a single 3928image,<wbr/> has no user control,<wbr/> and may have other artifacts 3929depending on the HDR method used.<wbr/></p> 3930<p>Therefore,<wbr/> HDR captures operate at a much slower rate 3931than regular captures.<wbr/></p> 3932<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 3933is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 3934STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 3935using a high dynamic range capture technique.<wbr/> On LEGACY 3936devices,<wbr/> captures that target a JPEG-format output will 3937be captured with HDR,<wbr/> and the capture intent is not 3938relevant.<wbr/></p> 3939<p>The HDR capture may involve the device capturing a burst 3940of images internally and combining them into one,<wbr/> or it 3941may involve the device using specialized high dynamic 3942range capture hardware.<wbr/> In all cases,<wbr/> a single image is 3943produced in response to a capture request submitted 3944while in HDR mode.<wbr/></p> 3945<p>Since substantial post-processing is generally needed to 3946produce an HDR image,<wbr/> only YUV and JPEG outputs are 3947supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only 3948JPEG outputs are supported for LEGACY HDR 3949captures.<wbr/> Using a RAW output for HDR capture is not 3950supported.<wbr/></p></span> 3951 </li> 3952 <li> 3953 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span> 3954 <span class="entry_type_enum_optional">[optional]</span> 3955 <span class="entry_type_enum_hidden">[hidden]</span> 3956 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 3957device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 3958under low light conditions.<wbr/></p> 3959<p>The camera device may be tuned to expose the images in a reduced 3960sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 3961if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/> 3962the camera device auto-exposure routine tuning process may limit the actual 3963exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 3964exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 3965low light may be under-exposed when the sensor max exposure time (bounded by the 3966<a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the 3967ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 3968camera device auto-exposure routine to increase the sensitivity up to the max 3969sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 3970dark and the max exposure time is reached.<wbr/> The captured images may be noisier 3971compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 3972recommended that the application only use this scene mode when it is capable of 3973reducing the noise level of the captured images.<wbr/></p> 3974<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3975<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> 3976remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 3977 </li> 3978 </ul> 3979 3980 </td> <!-- entry_type --> 3981 3982 <td class="entry_description"> 3983 <p>Control for which scene mode is currently active.<wbr/></p> 3984 </td> 3985 3986 <td class="entry_units"> 3987 </td> 3988 3989 <td class="entry_range"> 3990 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 3991 </td> 3992 3993 <td class="entry_tags"> 3994 <ul class="entry_tags"> 3995 <li><a href="#tag_BC">BC</a></li> 3996 </ul> 3997 </td> 3998 3999 </tr> 4000 <tr class="entries_header"> 4001 <th class="th_details" colspan="5">Details</th> 4002 </tr> 4003 <tr class="entry_cont"> 4004 <td class="entry_details" colspan="5"> 4005 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 4006capture settings.<wbr/></p> 4007<p>This is the mode that that is active when 4008<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will 4009disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> 4010while in use.<wbr/></p> 4011<p>The interpretation and implementation of these scene modes is left 4012to the implementor of the camera device.<wbr/> Their behavior will not be 4013consistent across all devices,<wbr/> and any given device may only implement 4014a subset of these modes.<wbr/></p> 4015 </td> 4016 </tr> 4017 4018 <tr class="entries_header"> 4019 <th class="th_details" colspan="5">HAL Implementation Details</th> 4020 </tr> 4021 <tr class="entry_cont"> 4022 <td class="entry_details" colspan="5"> 4023 <p>HAL implementations that include scene modes are expected to provide 4024the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4025<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> in 4026<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 4027<p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/> 4028the HAL must list supported video size and fps range in 4029<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/> 40301280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming 4031mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture 4032requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/> 4033This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 4034<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO 4035capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 4036 </td> 4037 </tr> 4038 4039 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4040 <!-- end of entry --> 4041 4042 4043 <tr class="entry" id="controls_android.control.videoStabilizationMode"> 4044 <td class="entry_name 4045 " rowspan="3"> 4046 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 4047 </td> 4048 <td class="entry_type"> 4049 <span class="entry_type_name entry_type_name_enum">byte</span> 4050 4051 <span class="entry_type_visibility"> [public]</span> 4052 4053 4054 <span class="entry_type_hwlevel">[legacy] </span> 4055 4056 4057 4058 <ul class="entry_type_enum"> 4059 <li> 4060 <span class="entry_type_enum_name">OFF</span> 4061 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 4062 </li> 4063 <li> 4064 <span class="entry_type_enum_name">ON</span> 4065 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 4066 </li> 4067 </ul> 4068 4069 </td> <!-- entry_type --> 4070 4071 <td class="entry_description"> 4072 <p>Whether video stabilization is 4073active.<wbr/></p> 4074 </td> 4075 4076 <td class="entry_units"> 4077 </td> 4078 4079 <td class="entry_range"> 4080 </td> 4081 4082 <td class="entry_tags"> 4083 <ul class="entry_tags"> 4084 <li><a href="#tag_BC">BC</a></li> 4085 </ul> 4086 </td> 4087 4088 </tr> 4089 <tr class="entries_header"> 4090 <th class="th_details" colspan="5">Details</th> 4091 </tr> 4092 <tr class="entry_cont"> 4093 <td class="entry_details" colspan="5"> 4094 <p>Video stabilization automatically warps images from 4095the camera in order to stabilize motion between consecutive frames.<wbr/></p> 4096<p>If enabled,<wbr/> video stabilization can modify the 4097<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 4098<p>Switching between different video stabilization modes may take several 4099frames to initialize,<wbr/> the camera device will report the current mode 4100in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 4101the video stabilization modes in the first several capture results may 4102still be "OFF",<wbr/> and it will become "ON" when the initialization is 4103done.<wbr/></p> 4104<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 4105stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 4106that an output targeting a MediaRecorder or MediaCodec will be stabilized if 4107the recording resolution is less than or equal to 1920 x 1080 (width less than 4108or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 4109frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult 4110<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return 4111OFF if the recording output is not stabilized,<wbr/> or if there are no output 4112Surface types that can be stabilized.<wbr/></p> 4113<p>If a camera device supports both this mode and OIS 4114(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 4115produce undesirable interaction,<wbr/> so it is recommended not to enable 4116both at the same time.<wbr/></p> 4117 </td> 4118 </tr> 4119 4120 4121 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4122 <!-- end of entry --> 4123 4124 4125 4126 <!-- end of kind --> 4127 </tbody> 4128 <tr><td colspan="6" class="kind">static</td></tr> 4129 4130 <thead class="entries_header"> 4131 <tr> 4132 <th class="th_name">Property Name</th> 4133 <th class="th_type">Type</th> 4134 <th class="th_description">Description</th> 4135 <th class="th_units">Units</th> 4136 <th class="th_range">Range</th> 4137 <th class="th_tags">Tags</th> 4138 </tr> 4139 </thead> 4140 4141 <tbody> 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes"> 4153 <td class="entry_name 4154 " rowspan="3"> 4155 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes 4156 </td> 4157 <td class="entry_type"> 4158 <span class="entry_type_name">byte</span> 4159 <span class="entry_type_container">x</span> 4160 4161 <span class="entry_type_array"> 4162 n 4163 </span> 4164 <span class="entry_type_visibility"> [public as enumList]</span> 4165 4166 4167 <span class="entry_type_hwlevel">[legacy] </span> 4168 4169 4170 <div class="entry_type_notes">list of enums</div> 4171 4172 4173 </td> <!-- entry_type --> 4174 4175 <td class="entry_description"> 4176 <p>List of auto-exposure antibanding modes for <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> that are 4177supported by this camera device.<wbr/></p> 4178 </td> 4179 4180 <td class="entry_units"> 4181 </td> 4182 4183 <td class="entry_range"> 4184 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p> 4185 </td> 4186 4187 <td class="entry_tags"> 4188 <ul class="entry_tags"> 4189 <li><a href="#tag_BC">BC</a></li> 4190 </ul> 4191 </td> 4192 4193 </tr> 4194 <tr class="entries_header"> 4195 <th class="th_details" colspan="5">Details</th> 4196 </tr> 4197 <tr class="entry_cont"> 4198 <td class="entry_details" colspan="5"> 4199 <p>Not all of the auto-exposure anti-banding modes may be 4200supported by a given camera device.<wbr/> This field lists the 4201valid anti-banding modes that the application may request 4202for this camera device with the 4203<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p> 4204 </td> 4205 </tr> 4206 4207 4208 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4209 <!-- end of entry --> 4210 4211 4212 <tr class="entry" id="static_android.control.aeAvailableModes"> 4213 <td class="entry_name 4214 " rowspan="3"> 4215 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes 4216 </td> 4217 <td class="entry_type"> 4218 <span class="entry_type_name">byte</span> 4219 <span class="entry_type_container">x</span> 4220 4221 <span class="entry_type_array"> 4222 n 4223 </span> 4224 <span class="entry_type_visibility"> [public as enumList]</span> 4225 4226 4227 <span class="entry_type_hwlevel">[legacy] </span> 4228 4229 4230 <div class="entry_type_notes">list of enums</div> 4231 4232 4233 </td> <!-- entry_type --> 4234 4235 <td class="entry_description"> 4236 <p>List of auto-exposure modes for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> that are supported by this camera 4237device.<wbr/></p> 4238 </td> 4239 4240 <td class="entry_units"> 4241 </td> 4242 4243 <td class="entry_range"> 4244 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p> 4245 </td> 4246 4247 <td class="entry_tags"> 4248 <ul class="entry_tags"> 4249 <li><a href="#tag_BC">BC</a></li> 4250 </ul> 4251 </td> 4252 4253 </tr> 4254 <tr class="entries_header"> 4255 <th class="th_details" colspan="5">Details</th> 4256 </tr> 4257 <tr class="entry_cont"> 4258 <td class="entry_details" colspan="5"> 4259 <p>Not all the auto-exposure modes may be supported by a 4260given camera device,<wbr/> especially if no flash unit is 4261available.<wbr/> This entry lists the valid modes for 4262<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p> 4263<p>All camera devices support ON,<wbr/> and all camera devices with flash 4264units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p> 4265<p>FULL mode camera devices always support OFF mode,<wbr/> 4266which enables application control of camera exposure time,<wbr/> 4267sensitivity,<wbr/> and frame duration.<wbr/></p> 4268<p>LEGACY mode camera devices never support OFF mode.<wbr/> 4269LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR 4270capability.<wbr/></p> 4271 </td> 4272 </tr> 4273 4274 4275 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4276 <!-- end of entry --> 4277 4278 4279 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges"> 4280 <td class="entry_name 4281 " rowspan="3"> 4282 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges 4283 </td> 4284 <td class="entry_type"> 4285 <span class="entry_type_name">int32</span> 4286 <span class="entry_type_container">x</span> 4287 4288 <span class="entry_type_array"> 4289 2 x n 4290 </span> 4291 <span class="entry_type_visibility"> [public as rangeInt]</span> 4292 4293 4294 <span class="entry_type_hwlevel">[legacy] </span> 4295 4296 4297 <div class="entry_type_notes">list of pairs of frame rates</div> 4298 4299 4300 </td> <!-- entry_type --> 4301 4302 <td class="entry_description"> 4303 <p>List of frame rate ranges for <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> supported by 4304this camera device.<wbr/></p> 4305 </td> 4306 4307 <td class="entry_units"> 4308 Frames per second (FPS) 4309 </td> 4310 4311 <td class="entry_range"> 4312 </td> 4313 4314 <td class="entry_tags"> 4315 <ul class="entry_tags"> 4316 <li><a href="#tag_BC">BC</a></li> 4317 </ul> 4318 </td> 4319 4320 </tr> 4321 <tr class="entries_header"> 4322 <th class="th_details" colspan="5">Details</th> 4323 </tr> 4324 <tr class="entry_cont"> 4325 <td class="entry_details" colspan="5"> 4326 <p>For devices at the LEGACY level or above:</p> 4327<ul> 4328<li> 4329<p>For constant-framerate recording,<wbr/> for each normal 4330<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a 4331<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has 4332<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in 4333the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/> 4334<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is 4335supported by the device and has 4336<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will 4337always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p> 4338</li> 4339<li> 4340<p>Also,<wbr/> a camera device must either not support any 4341<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> 4342or support at least one 4343normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has 4344<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> >= 24.<wbr/></p> 4345</li> 4346</ul> 4347<p>For devices at the LIMITED level or above:</p> 4348<ul> 4349<li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) 4350and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the 4351maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li> 4352</ul> 4353 </td> 4354 </tr> 4355 4356 4357 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4358 <!-- end of entry --> 4359 4360 4361 <tr class="entry" id="static_android.control.aeCompensationRange"> 4362 <td class="entry_name 4363 " rowspan="1"> 4364 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range 4365 </td> 4366 <td class="entry_type"> 4367 <span class="entry_type_name">int32</span> 4368 <span class="entry_type_container">x</span> 4369 4370 <span class="entry_type_array"> 4371 2 4372 </span> 4373 <span class="entry_type_visibility"> [public as rangeInt]</span> 4374 4375 4376 <span class="entry_type_hwlevel">[legacy] </span> 4377 4378 4379 4380 4381 </td> <!-- entry_type --> 4382 4383 <td class="entry_description"> 4384 <p>Maximum and minimum exposure compensation values for 4385<a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a>,<wbr/> in counts of <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a>,<wbr/> 4386that are supported by this camera device.<wbr/></p> 4387 </td> 4388 4389 <td class="entry_units"> 4390 </td> 4391 4392 <td class="entry_range"> 4393 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p> 4394<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure 4395compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p> 4396<p><code>Min.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> <= -2 EV</code></p> 4397<p><code>Max.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> >= 2 EV</code></p> 4398<p>LEGACY devices may support a smaller range than this.<wbr/></p> 4399 </td> 4400 4401 <td class="entry_tags"> 4402 <ul class="entry_tags"> 4403 <li><a href="#tag_BC">BC</a></li> 4404 </ul> 4405 </td> 4406 4407 </tr> 4408 4409 4410 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4411 <!-- end of entry --> 4412 4413 4414 <tr class="entry" id="static_android.control.aeCompensationStep"> 4415 <td class="entry_name 4416 " rowspan="5"> 4417 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step 4418 </td> 4419 <td class="entry_type"> 4420 <span class="entry_type_name">rational</span> 4421 4422 <span class="entry_type_visibility"> [public]</span> 4423 4424 4425 <span class="entry_type_hwlevel">[legacy] </span> 4426 4427 4428 4429 4430 </td> <!-- entry_type --> 4431 4432 <td class="entry_description"> 4433 <p>Smallest step by which the exposure compensation 4434can be changed.<wbr/></p> 4435 </td> 4436 4437 <td class="entry_units"> 4438 Exposure Value (EV) 4439 </td> 4440 4441 <td class="entry_range"> 4442 </td> 4443 4444 <td class="entry_tags"> 4445 <ul class="entry_tags"> 4446 <li><a href="#tag_BC">BC</a></li> 4447 </ul> 4448 </td> 4449 4450 </tr> 4451 <tr class="entries_header"> 4452 <th class="th_details" colspan="5">Details</th> 4453 </tr> 4454 <tr class="entry_cont"> 4455 <td class="entry_details" colspan="5"> 4456 <p>This is the unit for <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a>.<wbr/> For example,<wbr/> if this key has 4457a value of <code>1/<wbr/>2</code>,<wbr/> then a setting of <code>-2</code> for <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> means 4458that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p> 4459<p>One unit of EV compensation changes the brightness of the captured image by a factor 4460of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p> 4461 </td> 4462 </tr> 4463 4464 <tr class="entries_header"> 4465 <th class="th_details" colspan="5">HAL Implementation Details</th> 4466 </tr> 4467 <tr class="entry_cont"> 4468 <td class="entry_details" colspan="5"> 4469 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p> 4470 </td> 4471 </tr> 4472 4473 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4474 <!-- end of entry --> 4475 4476 4477 <tr class="entry" id="static_android.control.afAvailableModes"> 4478 <td class="entry_name 4479 " rowspan="3"> 4480 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes 4481 </td> 4482 <td class="entry_type"> 4483 <span class="entry_type_name">byte</span> 4484 <span class="entry_type_container">x</span> 4485 4486 <span class="entry_type_array"> 4487 n 4488 </span> 4489 <span class="entry_type_visibility"> [public as enumList]</span> 4490 4491 4492 <span class="entry_type_hwlevel">[legacy] </span> 4493 4494 4495 <div class="entry_type_notes">List of enums</div> 4496 4497 4498 </td> <!-- entry_type --> 4499 4500 <td class="entry_description"> 4501 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are 4502supported by this camera device.<wbr/></p> 4503 </td> 4504 4505 <td class="entry_units"> 4506 </td> 4507 4508 <td class="entry_range"> 4509 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p> 4510 </td> 4511 4512 <td class="entry_tags"> 4513 <ul class="entry_tags"> 4514 <li><a href="#tag_BC">BC</a></li> 4515 </ul> 4516 </td> 4517 4518 </tr> 4519 <tr class="entries_header"> 4520 <th class="th_details" colspan="5">Details</th> 4521 </tr> 4522 <tr class="entry_cont"> 4523 <td class="entry_details" colspan="5"> 4524 <p>Not all the auto-focus modes may be supported by a 4525given camera device.<wbr/> This entry lists the valid modes for 4526<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p> 4527<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all 4528camera devices with adjustable focuser units 4529(<code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>) will support AUTO mode.<wbr/></p> 4530<p>LEGACY devices will support OFF mode only if they support 4531focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to 4532<code>0.<wbr/>0f</code>).<wbr/></p> 4533 </td> 4534 </tr> 4535 4536 4537 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4538 <!-- end of entry --> 4539 4540 4541 <tr class="entry" id="static_android.control.availableEffects"> 4542 <td class="entry_name 4543 " rowspan="3"> 4544 android.<wbr/>control.<wbr/>available<wbr/>Effects 4545 </td> 4546 <td class="entry_type"> 4547 <span class="entry_type_name">byte</span> 4548 <span class="entry_type_container">x</span> 4549 4550 <span class="entry_type_array"> 4551 n 4552 </span> 4553 <span class="entry_type_visibility"> [public as enumList]</span> 4554 4555 4556 <span class="entry_type_hwlevel">[legacy] </span> 4557 4558 4559 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div> 4560 4561 4562 </td> <!-- entry_type --> 4563 4564 <td class="entry_description"> 4565 <p>List of color effects for <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a> that are supported by this camera 4566device.<wbr/></p> 4567 </td> 4568 4569 <td class="entry_units"> 4570 </td> 4571 4572 <td class="entry_range"> 4573 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p> 4574 </td> 4575 4576 <td class="entry_tags"> 4577 <ul class="entry_tags"> 4578 <li><a href="#tag_BC">BC</a></li> 4579 </ul> 4580 </td> 4581 4582 </tr> 4583 <tr class="entries_header"> 4584 <th class="th_details" colspan="5">Details</th> 4585 </tr> 4586 <tr class="entry_cont"> 4587 <td class="entry_details" colspan="5"> 4588 <p>This list contains the color effect modes that can be applied to 4589images produced by the camera device.<wbr/> 4590Implementations are not expected to be consistent across all devices.<wbr/> 4591If no color effect modes are available for a device,<wbr/> this will only list 4592OFF.<wbr/></p> 4593<p>A color effect will only be applied if 4594<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p> 4595<p>This control has no effect on the operation of other control routines such 4596as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p> 4597 </td> 4598 </tr> 4599 4600 4601 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4602 <!-- end of entry --> 4603 4604 4605 <tr class="entry" id="static_android.control.availableSceneModes"> 4606 <td class="entry_name 4607 " rowspan="3"> 4608 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes 4609 </td> 4610 <td class="entry_type"> 4611 <span class="entry_type_name">byte</span> 4612 <span class="entry_type_container">x</span> 4613 4614 <span class="entry_type_array"> 4615 n 4616 </span> 4617 <span class="entry_type_visibility"> [public as enumList]</span> 4618 4619 4620 <span class="entry_type_hwlevel">[legacy] </span> 4621 4622 4623 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div> 4624 4625 4626 </td> <!-- entry_type --> 4627 4628 <td class="entry_description"> 4629 <p>List of scene modes for <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> that are supported by this camera 4630device.<wbr/></p> 4631 </td> 4632 4633 <td class="entry_units"> 4634 </td> 4635 4636 <td class="entry_range"> 4637 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p> 4638 </td> 4639 4640 <td class="entry_tags"> 4641 <ul class="entry_tags"> 4642 <li><a href="#tag_BC">BC</a></li> 4643 </ul> 4644 </td> 4645 4646 </tr> 4647 <tr class="entries_header"> 4648 <th class="th_details" colspan="5">Details</th> 4649 </tr> 4650 <tr class="entry_cont"> 4651 <td class="entry_details" colspan="5"> 4652 <p>This list contains scene modes that can be set for the camera device.<wbr/> 4653Only scene modes that have been fully implemented for the 4654camera device may be included here.<wbr/> Implementations are not expected 4655to be consistent across all devices.<wbr/></p> 4656<p>If no scene modes are supported by the camera device,<wbr/> this 4657will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p> 4658<p>FACE_<wbr/>PRIORITY is always listed if face detection is 4659supported (i.<wbr/>e.<wbr/><code><a href="#static_android.statistics.info.maxFaceCount">android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count</a> > 46600</code>).<wbr/></p> 4661 </td> 4662 </tr> 4663 4664 4665 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4666 <!-- end of entry --> 4667 4668 4669 <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> 4670 <td class="entry_name 4671 " rowspan="3"> 4672 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes 4673 </td> 4674 <td class="entry_type"> 4675 <span class="entry_type_name">byte</span> 4676 <span class="entry_type_container">x</span> 4677 4678 <span class="entry_type_array"> 4679 n 4680 </span> 4681 <span class="entry_type_visibility"> [public as enumList]</span> 4682 4683 4684 <span class="entry_type_hwlevel">[legacy] </span> 4685 4686 4687 <div class="entry_type_notes">List of enums.<wbr/></div> 4688 4689 4690 </td> <!-- entry_type --> 4691 4692 <td class="entry_description"> 4693 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> 4694that are supported by this camera device.<wbr/></p> 4695 </td> 4696 4697 <td class="entry_units"> 4698 </td> 4699 4700 <td class="entry_range"> 4701 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p> 4702 </td> 4703 4704 <td class="entry_tags"> 4705 <ul class="entry_tags"> 4706 <li><a href="#tag_BC">BC</a></li> 4707 </ul> 4708 </td> 4709 4710 </tr> 4711 <tr class="entries_header"> 4712 <th class="th_details" colspan="5">Details</th> 4713 </tr> 4714 <tr class="entry_cont"> 4715 <td class="entry_details" colspan="5"> 4716 <p>OFF will always be listed.<wbr/></p> 4717 </td> 4718 </tr> 4719 4720 4721 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4722 <!-- end of entry --> 4723 4724 4725 <tr class="entry" id="static_android.control.awbAvailableModes"> 4726 <td class="entry_name 4727 " rowspan="3"> 4728 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes 4729 </td> 4730 <td class="entry_type"> 4731 <span class="entry_type_name">byte</span> 4732 <span class="entry_type_container">x</span> 4733 4734 <span class="entry_type_array"> 4735 n 4736 </span> 4737 <span class="entry_type_visibility"> [public as enumList]</span> 4738 4739 4740 <span class="entry_type_hwlevel">[legacy] </span> 4741 4742 4743 <div class="entry_type_notes">List of enums</div> 4744 4745 4746 </td> <!-- entry_type --> 4747 4748 <td class="entry_description"> 4749 <p>List of auto-white-balance modes for <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> that are supported by this 4750camera device.<wbr/></p> 4751 </td> 4752 4753 <td class="entry_units"> 4754 </td> 4755 4756 <td class="entry_range"> 4757 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p> 4758 </td> 4759 4760 <td class="entry_tags"> 4761 <ul class="entry_tags"> 4762 <li><a href="#tag_BC">BC</a></li> 4763 </ul> 4764 </td> 4765 4766 </tr> 4767 <tr class="entries_header"> 4768 <th class="th_details" colspan="5">Details</th> 4769 </tr> 4770 <tr class="entry_cont"> 4771 <td class="entry_details" colspan="5"> 4772 <p>Not all the auto-white-balance modes may be supported by a 4773given camera device.<wbr/> This entry lists the valid modes for 4774<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p> 4775<p>All camera devices will support ON mode.<wbr/></p> 4776<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF 4777mode,<wbr/> which enables application control of white balance,<wbr/> by using 4778<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>(<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> must be set to TRANSFORM_<wbr/>MATRIX).<wbr/> This includes all FULL 4779mode camera devices.<wbr/></p> 4780 </td> 4781 </tr> 4782 4783 4784 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4785 <!-- end of entry --> 4786 4787 4788 <tr class="entry" id="static_android.control.maxRegions"> 4789 <td class="entry_name 4790 " rowspan="1"> 4791 android.<wbr/>control.<wbr/>max<wbr/>Regions 4792 </td> 4793 <td class="entry_type"> 4794 <span class="entry_type_name">int32</span> 4795 <span class="entry_type_container">x</span> 4796 4797 <span class="entry_type_array"> 4798 3 4799 </span> 4800 <span class="entry_type_visibility"> [hidden]</span> 4801 4802 4803 <span class="entry_type_hwlevel">[legacy] </span> 4804 4805 4806 4807 4808 </td> <!-- entry_type --> 4809 4810 <td class="entry_description"> 4811 <p>List of the maximum number of regions that can be used for metering in 4812auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); 4813this corresponds to the the maximum number of elements in 4814<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>,<wbr/> <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>,<wbr/> 4815and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 4816 </td> 4817 4818 <td class="entry_units"> 4819 </td> 4820 4821 <td class="entry_range"> 4822 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices 4823this value must be >= 1 for AE and AF.<wbr/> The order of the elements is: 4824<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p> 4825 </td> 4826 4827 <td class="entry_tags"> 4828 <ul class="entry_tags"> 4829 <li><a href="#tag_BC">BC</a></li> 4830 </ul> 4831 </td> 4832 4833 </tr> 4834 4835 4836 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4837 <!-- end of entry --> 4838 4839 4840 <tr class="entry" id="static_android.control.maxRegionsAe"> 4841 <td class="entry_name 4842 " rowspan="5"> 4843 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae 4844 </td> 4845 <td class="entry_type"> 4846 <span class="entry_type_name">int32</span> 4847 4848 <span class="entry_type_visibility"> [public]</span> 4849 4850 <span class="entry_type_synthetic">[synthetic] </span> 4851 4852 <span class="entry_type_hwlevel">[legacy] </span> 4853 4854 4855 4856 4857 </td> <!-- entry_type --> 4858 4859 <td class="entry_description"> 4860 <p>The maximum number of metering regions that can be used by the auto-exposure (AE) 4861routine.<wbr/></p> 4862 </td> 4863 4864 <td class="entry_units"> 4865 </td> 4866 4867 <td class="entry_range"> 4868 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 4869value will be >= 1.<wbr/></p> 4870 </td> 4871 4872 <td class="entry_tags"> 4873 </td> 4874 4875 </tr> 4876 <tr class="entries_header"> 4877 <th class="th_details" colspan="5">Details</th> 4878 </tr> 4879 <tr class="entry_cont"> 4880 <td class="entry_details" colspan="5"> 4881 <p>This corresponds to the the maximum allowed number of elements in 4882<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p> 4883 </td> 4884 </tr> 4885 4886 <tr class="entries_header"> 4887 <th class="th_details" colspan="5">HAL Implementation Details</th> 4888 </tr> 4889 <tr class="entry_cont"> 4890 <td class="entry_details" colspan="5"> 4891 <p>This entry is private to the framework.<wbr/> Fill in 4892maxRegions to have this entry be automatically populated.<wbr/></p> 4893 </td> 4894 </tr> 4895 4896 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4897 <!-- end of entry --> 4898 4899 4900 <tr class="entry" id="static_android.control.maxRegionsAwb"> 4901 <td class="entry_name 4902 " rowspan="5"> 4903 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb 4904 </td> 4905 <td class="entry_type"> 4906 <span class="entry_type_name">int32</span> 4907 4908 <span class="entry_type_visibility"> [public]</span> 4909 4910 <span class="entry_type_synthetic">[synthetic] </span> 4911 4912 <span class="entry_type_hwlevel">[legacy] </span> 4913 4914 4915 4916 4917 </td> <!-- entry_type --> 4918 4919 <td class="entry_description"> 4920 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB) 4921routine.<wbr/></p> 4922 </td> 4923 4924 <td class="entry_units"> 4925 </td> 4926 4927 <td class="entry_range"> 4928 <p>Value will be >= 0.<wbr/></p> 4929 </td> 4930 4931 <td class="entry_tags"> 4932 </td> 4933 4934 </tr> 4935 <tr class="entries_header"> 4936 <th class="th_details" colspan="5">Details</th> 4937 </tr> 4938 <tr class="entry_cont"> 4939 <td class="entry_details" colspan="5"> 4940 <p>This corresponds to the the maximum allowed number of elements in 4941<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p> 4942 </td> 4943 </tr> 4944 4945 <tr class="entries_header"> 4946 <th class="th_details" colspan="5">HAL Implementation Details</th> 4947 </tr> 4948 <tr class="entry_cont"> 4949 <td class="entry_details" colspan="5"> 4950 <p>This entry is private to the framework.<wbr/> Fill in 4951maxRegions to have this entry be automatically populated.<wbr/></p> 4952 </td> 4953 </tr> 4954 4955 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4956 <!-- end of entry --> 4957 4958 4959 <tr class="entry" id="static_android.control.maxRegionsAf"> 4960 <td class="entry_name 4961 " rowspan="5"> 4962 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af 4963 </td> 4964 <td class="entry_type"> 4965 <span class="entry_type_name">int32</span> 4966 4967 <span class="entry_type_visibility"> [public]</span> 4968 4969 <span class="entry_type_synthetic">[synthetic] </span> 4970 4971 <span class="entry_type_hwlevel">[legacy] </span> 4972 4973 4974 4975 4976 </td> <!-- entry_type --> 4977 4978 <td class="entry_description"> 4979 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p> 4980 </td> 4981 4982 <td class="entry_units"> 4983 </td> 4984 4985 <td class="entry_range"> 4986 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 4987value will be >= 1.<wbr/></p> 4988 </td> 4989 4990 <td class="entry_tags"> 4991 </td> 4992 4993 </tr> 4994 <tr class="entries_header"> 4995 <th class="th_details" colspan="5">Details</th> 4996 </tr> 4997 <tr class="entry_cont"> 4998 <td class="entry_details" colspan="5"> 4999 <p>This corresponds to the the maximum allowed number of elements in 5000<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 5001 </td> 5002 </tr> 5003 5004 <tr class="entries_header"> 5005 <th class="th_details" colspan="5">HAL Implementation Details</th> 5006 </tr> 5007 <tr class="entry_cont"> 5008 <td class="entry_details" colspan="5"> 5009 <p>This entry is private to the framework.<wbr/> Fill in 5010maxRegions to have this entry be automatically populated.<wbr/></p> 5011 </td> 5012 </tr> 5013 5014 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5015 <!-- end of entry --> 5016 5017 5018 <tr class="entry" id="static_android.control.sceneModeOverrides"> 5019 <td class="entry_name 5020 " rowspan="5"> 5021 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides 5022 </td> 5023 <td class="entry_type"> 5024 <span class="entry_type_name">byte</span> 5025 <span class="entry_type_container">x</span> 5026 5027 <span class="entry_type_array"> 5028 3 x length(availableSceneModes) 5029 </span> 5030 <span class="entry_type_visibility"> [system]</span> 5031 5032 5033 <span class="entry_type_hwlevel">[limited] </span> 5034 5035 5036 5037 5038 </td> <!-- entry_type --> 5039 5040 <td class="entry_description"> 5041 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus 5042settings to use with each available scene mode.<wbr/></p> 5043 </td> 5044 5045 <td class="entry_units"> 5046 </td> 5047 5048 <td class="entry_range"> 5049 <p>For each available scene mode,<wbr/> the list must contain three 5050entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5051<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> values used 5052by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> 5053where aeMode has the lowest index position.<wbr/></p> 5054 </td> 5055 5056 <td class="entry_tags"> 5057 <ul class="entry_tags"> 5058 <li><a href="#tag_BC">BC</a></li> 5059 </ul> 5060 </td> 5061 5062 </tr> 5063 <tr class="entries_header"> 5064 <th class="th_details" colspan="5">Details</th> 5065 </tr> 5066 <tr class="entry_cont"> 5067 <td class="entry_details" colspan="5"> 5068 <p>When a scene mode is enabled,<wbr/> the camera device is expected 5069to override <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> 5070and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for 5071that scene mode.<wbr/></p> 5072<p>The order of this list matches that of availableSceneModes,<wbr/> 5073with 3 entries for each mode.<wbr/> The overrides listed 5074for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/> 5075since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5076<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> values are 5077used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> 5078is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and 5079FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p> 5080<p>For example,<wbr/> if availableSceneModes contains 5081<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework 5082expects sceneModeOverrides to have 9 entries formatted like: 5083<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> 5084ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p> 5085 </td> 5086 </tr> 5087 5088 <tr class="entries_header"> 5089 <th class="th_details" colspan="5">HAL Implementation Details</th> 5090 </tr> 5091 <tr class="entry_cont"> 5092 <td class="entry_details" colspan="5"> 5093 <p>To maintain backward compatibility,<wbr/> this list will be made available 5094in the static metadata of the camera service.<wbr/> The camera service will 5095use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5096<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> when using a scene 5097mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p> 5098 </td> 5099 </tr> 5100 5101 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5102 <!-- end of entry --> 5103 5104 5105 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations"> 5106 <td class="entry_name 5107 " rowspan="5"> 5108 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations 5109 </td> 5110 <td class="entry_type"> 5111 <span class="entry_type_name">int32</span> 5112 <span class="entry_type_container">x</span> 5113 5114 <span class="entry_type_array"> 5115 5 x n 5116 </span> 5117 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span> 5118 5119 5120 <span class="entry_type_hwlevel">[limited] </span> 5121 5122 5123 5124 5125 </td> <!-- entry_type --> 5126 5127 <td class="entry_description"> 5128 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations 5129supported by the camera device,<wbr/> in the format of (width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max,<wbr/> batch_<wbr/>size_<wbr/>max).<wbr/></p> 5130 </td> 5131 5132 <td class="entry_units"> 5133 </td> 5134 5135 <td class="entry_range"> 5136 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p> 5137 </td> 5138 5139 <td class="entry_tags"> 5140 <ul class="entry_tags"> 5141 <li><a href="#tag_V1">V1</a></li> 5142 </ul> 5143 </td> 5144 5145 </tr> 5146 <tr class="entries_header"> 5147 <th class="th_details" colspan="5">Details</th> 5148 </tr> 5149 <tr class="entry_cont"> 5150 <td class="entry_details" colspan="5"> 5151 <p>When CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO is supported in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>,<wbr/> 5152this metadata will list the supported high speed video size,<wbr/> fps range and max batch size 5153configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes 5154reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> 5155for processed non-stalling formats.<wbr/></p> 5156<p>For the high speed video use case,<wbr/> the application must 5157select the video size and fps range from this metadata to configure the recording and 5158preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends 5159to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to 5160configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata 5161by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the 5162recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application 5163must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams 5164must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p> 5165<p>The min and max fps will be multiple times of 30fps.<wbr/></p> 5166<p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/> 5167to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate 5168multiple frames together and send to camera device for processing where the request 5169controls are same for all the frames in this batch.<wbr/> Max batch size indicates 5170the max possible number of frames the camera device will group together for this high 5171speed stream configuration.<wbr/> This max batch size will be used to generate a high speed 5172recording request list by 5173<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/> 5174The max batch size for each configuration will satisfy below conditions:</p> 5175<ul> 5176<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/> 5177if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li> 5178<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but 5179the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch 5180size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li> 5181<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li> 5182</ul> 5183<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/> 5184in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p> 5185<p>This fps ranges in this configuration list can only be used to create requests 5186that are submitted to a high speed camera capture session created by 5187<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> 5188The fps ranges reported in this metadata must not be used to setup capture requests for 5189normal capture session,<wbr/> or it will cause request error.<wbr/></p> 5190 </td> 5191 </tr> 5192 5193 <tr class="entries_header"> 5194 <th class="th_details" colspan="5">HAL Implementation Details</th> 5195 </tr> 5196 <tr class="entry_cont"> 5197 <td class="entry_details" colspan="5"> 5198 <p>All the sizes listed in this configuration will be a subset of the sizes reported by 5199<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/> 5200Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum 5201of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p> 5202<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps 5203sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application 5204usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused 5205stutter when starting recording as much as possible,<wbr/> the application may want to ensure 5206the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise 5207the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/> 5208For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise 5209[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to 5210do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start 5211recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps 5212values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps 5213values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must 5214switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p> 5215 </td> 5216 </tr> 5217 5218 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5219 <!-- end of entry --> 5220 5221 5222 <tr class="entry" id="static_android.control.aeLockAvailable"> 5223 <td class="entry_name 5224 " rowspan="3"> 5225 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available 5226 </td> 5227 <td class="entry_type"> 5228 <span class="entry_type_name entry_type_name_enum">byte</span> 5229 5230 <span class="entry_type_visibility"> [public as boolean]</span> 5231 5232 5233 <span class="entry_type_hwlevel">[legacy] </span> 5234 5235 5236 5237 <ul class="entry_type_enum"> 5238 <li> 5239 <span class="entry_type_enum_name">FALSE</span> 5240 </li> 5241 <li> 5242 <span class="entry_type_enum_name">TRUE</span> 5243 </li> 5244 </ul> 5245 5246 </td> <!-- entry_type --> 5247 5248 <td class="entry_description"> 5249 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p> 5250 </td> 5251 5252 <td class="entry_units"> 5253 </td> 5254 5255 <td class="entry_range"> 5256 </td> 5257 5258 <td class="entry_tags"> 5259 <ul class="entry_tags"> 5260 <li><a href="#tag_BC">BC</a></li> 5261 </ul> 5262 </td> 5263 5264 </tr> 5265 <tr class="entries_header"> 5266 <th class="th_details" colspan="5">Details</th> 5267 </tr> 5268 <tr class="entry_cont"> 5269 <td class="entry_details" colspan="5"> 5270 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always 5271list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 5272 </td> 5273 </tr> 5274 5275 5276 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5277 <!-- end of entry --> 5278 5279 5280 <tr class="entry" id="static_android.control.awbLockAvailable"> 5281 <td class="entry_name 5282 " rowspan="3"> 5283 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available 5284 </td> 5285 <td class="entry_type"> 5286 <span class="entry_type_name entry_type_name_enum">byte</span> 5287 5288 <span class="entry_type_visibility"> [public as boolean]</span> 5289 5290 5291 <span class="entry_type_hwlevel">[legacy] </span> 5292 5293 5294 5295 <ul class="entry_type_enum"> 5296 <li> 5297 <span class="entry_type_enum_name">FALSE</span> 5298 </li> 5299 <li> 5300 <span class="entry_type_enum_name">TRUE</span> 5301 </li> 5302 </ul> 5303 5304 </td> <!-- entry_type --> 5305 5306 <td class="entry_description"> 5307 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p> 5308 </td> 5309 5310 <td class="entry_units"> 5311 </td> 5312 5313 <td class="entry_range"> 5314 </td> 5315 5316 <td class="entry_tags"> 5317 <ul class="entry_tags"> 5318 <li><a href="#tag_BC">BC</a></li> 5319 </ul> 5320 </td> 5321 5322 </tr> 5323 <tr class="entries_header"> 5324 <th class="th_details" colspan="5">Details</th> 5325 </tr> 5326 <tr class="entry_cont"> 5327 <td class="entry_details" colspan="5"> 5328 <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will 5329always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 5330 </td> 5331 </tr> 5332 5333 5334 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5335 <!-- end of entry --> 5336 5337 5338 <tr class="entry" id="static_android.control.availableModes"> 5339 <td class="entry_name 5340 " rowspan="3"> 5341 android.<wbr/>control.<wbr/>available<wbr/>Modes 5342 </td> 5343 <td class="entry_type"> 5344 <span class="entry_type_name">byte</span> 5345 <span class="entry_type_container">x</span> 5346 5347 <span class="entry_type_array"> 5348 n 5349 </span> 5350 <span class="entry_type_visibility"> [public as enumList]</span> 5351 5352 5353 <span class="entry_type_hwlevel">[legacy] </span> 5354 5355 5356 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div> 5357 5358 5359 </td> <!-- entry_type --> 5360 5361 <td class="entry_description"> 5362 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera 5363device.<wbr/></p> 5364 </td> 5365 5366 <td class="entry_units"> 5367 </td> 5368 5369 <td class="entry_range"> 5370 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p> 5371 </td> 5372 5373 <td class="entry_tags"> 5374 </td> 5375 5376 </tr> 5377 <tr class="entries_header"> 5378 <th class="th_details" colspan="5">Details</th> 5379 </tr> 5380 <tr class="entry_cont"> 5381 <td class="entry_details" colspan="5"> 5382 <p>This list contains control modes that can be set for the camera device.<wbr/> 5383LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL 5384devices will always support OFF,<wbr/> AUTO modes.<wbr/></p> 5385 </td> 5386 </tr> 5387 5388 5389 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5390 <!-- end of entry --> 5391 5392 5393 5394 <!-- end of kind --> 5395 </tbody> 5396 <tr><td colspan="6" class="kind">dynamic</td></tr> 5397 5398 <thead class="entries_header"> 5399 <tr> 5400 <th class="th_name">Property Name</th> 5401 <th class="th_type">Type</th> 5402 <th class="th_description">Description</th> 5403 <th class="th_units">Units</th> 5404 <th class="th_range">Range</th> 5405 <th class="th_tags">Tags</th> 5406 </tr> 5407 </thead> 5408 5409 <tbody> 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 <tr class="entry" id="dynamic_android.control.aePrecaptureId"> 5421 <td class="entry_name 5422 entry_name_deprecated 5423 " rowspan="3"> 5424 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id 5425 </td> 5426 <td class="entry_type"> 5427 <span class="entry_type_name">int32</span> 5428 5429 <span class="entry_type_visibility"> [system]</span> 5430 5431 5432 5433 <span class="entry_type_deprecated">[deprecated] </span> 5434 5435 5436 5437 </td> <!-- entry_type --> 5438 5439 <td class="entry_description"> 5440 <p>The ID sent with the latest 5441CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p> 5442 </td> 5443 5444 <td class="entry_units"> 5445 </td> 5446 5447 <td class="entry_range"> 5448 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 5449 </td> 5450 5451 <td class="entry_tags"> 5452 </td> 5453 5454 </tr> 5455 <tr class="entries_header"> 5456 <th class="th_details" colspan="5">Details</th> 5457 </tr> 5458 <tr class="entry_cont"> 5459 <td class="entry_details" colspan="5"> 5460 <p>Must be 0 if no 5461CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet 5462by HAL.<wbr/> Always updated even if AE algorithm ignores the 5463trigger</p> 5464 </td> 5465 </tr> 5466 5467 5468 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5469 <!-- end of entry --> 5470 5471 5472 <tr class="entry" id="dynamic_android.control.aeAntibandingMode"> 5473 <td class="entry_name 5474 " rowspan="5"> 5475 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 5476 </td> 5477 <td class="entry_type"> 5478 <span class="entry_type_name entry_type_name_enum">byte</span> 5479 5480 <span class="entry_type_visibility"> [public]</span> 5481 5482 5483 <span class="entry_type_hwlevel">[legacy] </span> 5484 5485 5486 5487 <ul class="entry_type_enum"> 5488 <li> 5489 <span class="entry_type_enum_name">OFF</span> 5490 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 5491avoid banding problems.<wbr/></p></span> 5492 </li> 5493 <li> 5494 <span class="entry_type_enum_name">50HZ</span> 5495 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 5496avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 5497 </li> 5498 <li> 5499 <span class="entry_type_enum_name">60HZ</span> 5500 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 5501avoid banding problems with 60Hz illumination 5502sources.<wbr/></p></span> 5503 </li> 5504 <li> 5505 <span class="entry_type_enum_name">AUTO</span> 5506 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 5507antibanding routine to the current illumination 5508condition.<wbr/> This is the default mode if AUTO is 5509available on given camera device.<wbr/></p></span> 5510 </li> 5511 </ul> 5512 5513 </td> <!-- entry_type --> 5514 5515 <td class="entry_description"> 5516 <p>The desired setting for the camera device's auto-exposure 5517algorithm's antibanding compensation.<wbr/></p> 5518 </td> 5519 5520 <td class="entry_units"> 5521 </td> 5522 5523 <td class="entry_range"> 5524 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 5525 </td> 5526 5527 <td class="entry_tags"> 5528 <ul class="entry_tags"> 5529 <li><a href="#tag_BC">BC</a></li> 5530 </ul> 5531 </td> 5532 5533 </tr> 5534 <tr class="entries_header"> 5535 <th class="th_details" colspan="5">Details</th> 5536 </tr> 5537 <tr class="entry_cont"> 5538 <td class="entry_details" colspan="5"> 5539 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 5540lights,<wbr/> flicker at the rate of the power supply frequency 5541(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 5542typically not noticeable to a person,<wbr/> it can be visible to 5543a camera device.<wbr/> If a camera sets its exposure time to the 5544wrong value,<wbr/> the flicker may become visible in the 5545viewfinder as flicker or in a final captured image,<wbr/> as a 5546set of variable-brightness bands across the image.<wbr/></p> 5547<p>Therefore,<wbr/> the auto-exposure routines of camera devices 5548include antibanding routines that ensure that the chosen 5549exposure value will not cause such banding.<wbr/> The choice of 5550exposure time depends on the rate of flicker,<wbr/> which the 5551camera device can detect automatically,<wbr/> or the expected 5552rate can be selected by the application using this 5553control.<wbr/></p> 5554<p>A given camera device may not support all of the possible 5555options for the antibanding mode.<wbr/> The 5556<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 5557the available modes for a given camera device.<wbr/></p> 5558<p>AUTO mode is the default if it is available on given 5559camera device.<wbr/> When AUTO mode is not available,<wbr/> the 5560default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 5561and 60HZ will be available.<wbr/></p> 5562<p>If manual exposure control is enabled (by setting 5563<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/> 5564then this setting has no effect,<wbr/> and the application must 5565ensure it selects exposure times that do not cause banding 5566issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 5567the application in this.<wbr/></p> 5568 </td> 5569 </tr> 5570 5571 <tr class="entries_header"> 5572 <th class="th_details" colspan="5">HAL Implementation Details</th> 5573 </tr> 5574 <tr class="entry_cont"> 5575 <td class="entry_details" colspan="5"> 5576 <p>For all capture request templates,<wbr/> this field must be set 5577to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 5578the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 557960HZ must be available.<wbr/></p> 5580<p>If manual exposure control is enabled (by setting 5581<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/> 5582then the exposure values provided by the application must not be 5583adjusted for antibanding.<wbr/></p> 5584 </td> 5585 </tr> 5586 5587 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5588 <!-- end of entry --> 5589 5590 5591 <tr class="entry" id="dynamic_android.control.aeExposureCompensation"> 5592 <td class="entry_name 5593 " rowspan="3"> 5594 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 5595 </td> 5596 <td class="entry_type"> 5597 <span class="entry_type_name">int32</span> 5598 5599 <span class="entry_type_visibility"> [public]</span> 5600 5601 5602 <span class="entry_type_hwlevel">[legacy] </span> 5603 5604 5605 5606 5607 </td> <!-- entry_type --> 5608 5609 <td class="entry_description"> 5610 <p>Adjustment to auto-exposure (AE) target image 5611brightness.<wbr/></p> 5612 </td> 5613 5614 <td class="entry_units"> 5615 Compensation steps 5616 </td> 5617 5618 <td class="entry_range"> 5619 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 5620 </td> 5621 5622 <td class="entry_tags"> 5623 <ul class="entry_tags"> 5624 <li><a href="#tag_BC">BC</a></li> 5625 </ul> 5626 </td> 5627 5628 </tr> 5629 <tr class="entries_header"> 5630 <th class="th_details" colspan="5">Details</th> 5631 </tr> 5632 <tr class="entry_cont"> 5633 <td class="entry_details" colspan="5"> 5634 <p>The adjustment is measured as a count of steps,<wbr/> with the 5635step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 5636allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 5637<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 5638will mean an exposure compensation of +2 EV; -3 will mean an 5639exposure compensation of -1 EV.<wbr/> One EV represents a doubling 5640of image brightness.<wbr/> Note that this control will only be 5641effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 5642will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 5643<p>In the event of exposure compensation value being changed,<wbr/> camera device 5644may take several frames to reach the newly requested exposure target.<wbr/> 5645During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 5646state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 5647change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 5648FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 5649 </td> 5650 </tr> 5651 5652 5653 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5654 <!-- end of entry --> 5655 5656 5657 <tr class="entry" id="dynamic_android.control.aeLock"> 5658 <td class="entry_name 5659 " rowspan="3"> 5660 android.<wbr/>control.<wbr/>ae<wbr/>Lock 5661 </td> 5662 <td class="entry_type"> 5663 <span class="entry_type_name entry_type_name_enum">byte</span> 5664 5665 <span class="entry_type_visibility"> [public as boolean]</span> 5666 5667 5668 <span class="entry_type_hwlevel">[legacy] </span> 5669 5670 5671 5672 <ul class="entry_type_enum"> 5673 <li> 5674 <span class="entry_type_enum_name">OFF</span> 5675 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 5676is free to update its parameters.<wbr/></p></span> 5677 </li> 5678 <li> 5679 <span class="entry_type_enum_name">ON</span> 5680 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 5681must not update the exposure and sensitivity parameters 5682while the lock is active.<wbr/></p> 5683<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 5684will still take effect while auto-exposure is locked.<wbr/></p> 5685<p>Some rare LEGACY devices may not support 5686this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 5687 </li> 5688 </ul> 5689 5690 </td> <!-- entry_type --> 5691 5692 <td class="entry_description"> 5693 <p>Whether auto-exposure (AE) is currently locked to its latest 5694calculated values.<wbr/></p> 5695 </td> 5696 5697 <td class="entry_units"> 5698 </td> 5699 5700 <td class="entry_range"> 5701 </td> 5702 5703 <td class="entry_tags"> 5704 <ul class="entry_tags"> 5705 <li><a href="#tag_BC">BC</a></li> 5706 </ul> 5707 </td> 5708 5709 </tr> 5710 <tr class="entries_header"> 5711 <th class="th_details" colspan="5">Details</th> 5712 </tr> 5713 <tr class="entry_cont"> 5714 <td class="entry_details" colspan="5"> 5715 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 5716and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 5717<p>Note that even when AE is locked,<wbr/> the flash may be fired if 5718the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 5719ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 5720<p>When <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> is changed,<wbr/> even if the AE lock 5721is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 5722<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 5723when AE is already locked,<wbr/> the camera device will not change the exposure time 5724(<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) and sensitivity (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 5725parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 5726is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 5727<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> the scene may become overexposed.<wbr/> 5728Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 5729<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 5730the AE if AE is locked by the camera device internally during precapture metering 5731sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 5732ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 5733will never succeed in a sequence of preview requests where AE lock is always set 5734to <code>false</code>.<wbr/></p> 5735<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 5736get locked do not necessarily correspond to the settings that were present in the 5737latest capture result received from the camera device,<wbr/> since additional captures 5738and AE updates may have occurred even before the result was sent out.<wbr/> If an 5739application is switching between automatic and manual control and wishes to eliminate 5740any flicker during the switch,<wbr/> the following procedure is recommended:</p> 5741<ol> 5742<li>Starting in auto-AE mode:</li> 5743<li>Lock AE</li> 5744<li>Wait for the first result to be output that has the AE locked</li> 5745<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 5746<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 5747</ol> 5748<p>See <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE lock related state transition details.<wbr/></p> 5749 </td> 5750 </tr> 5751 5752 5753 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5754 <!-- end of entry --> 5755 5756 5757 <tr class="entry" id="dynamic_android.control.aeMode"> 5758 <td class="entry_name 5759 " rowspan="3"> 5760 android.<wbr/>control.<wbr/>ae<wbr/>Mode 5761 </td> 5762 <td class="entry_type"> 5763 <span class="entry_type_name entry_type_name_enum">byte</span> 5764 5765 <span class="entry_type_visibility"> [public]</span> 5766 5767 5768 <span class="entry_type_hwlevel">[legacy] </span> 5769 5770 5771 5772 <ul class="entry_type_enum"> 5773 <li> 5774 <span class="entry_type_enum_name">OFF</span> 5775 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 5776<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5777<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 5778<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 5779device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 5780a flash unit for this camera device.<wbr/></p> 5781<p>Note that auto-white balance (AWB) and auto-focus (AF) 5782behavior is device dependent when AE is in OFF mode.<wbr/> 5783To have consistent behavior across different devices,<wbr/> 5784it is recommended to either set AWB and AF to OFF mode 5785or lock AWB and AF before setting AE to OFF.<wbr/> 5786See <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/> 5787<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>,<wbr/> and <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 5788for more details.<wbr/></p> 5789<p>LEGACY devices do not support the OFF mode and will 5790override attempts to use this value to ON.<wbr/></p></span> 5791 </li> 5792 <li> 5793 <span class="entry_type_enum_name">ON</span> 5794 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 5795with no flash control.<wbr/></p> 5796<p>The application's values for 5797<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5798<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 5799<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 5800application has control over the various 5801android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 5802 </li> 5803 <li> 5804 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 5805 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 5806the camera's flash unit,<wbr/> firing it in low-light 5807conditions.<wbr/></p> 5808<p>The flash may be fired during a precapture sequence 5809(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 5810may be fired for captures for which the 5811<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 5812STILL_<wbr/>CAPTURE</p></span> 5813 </li> 5814 <li> 5815 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 5816 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 5817the camera's flash unit,<wbr/> always firing it for still 5818captures.<wbr/></p> 5819<p>The flash may be fired during a precapture sequence 5820(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 5821will always be fired for captures for which the 5822<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 5823STILL_<wbr/>CAPTURE</p></span> 5824 </li> 5825 <li> 5826 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 5827 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 5828reduction.<wbr/></p> 5829<p>If deemed necessary by the camera device,<wbr/> a red eye 5830reduction flash will fire during the precapture 5831sequence.<wbr/></p></span> 5832 </li> 5833 </ul> 5834 5835 </td> <!-- entry_type --> 5836 5837 <td class="entry_description"> 5838 <p>The desired mode for the camera device's 5839auto-exposure routine.<wbr/></p> 5840 </td> 5841 5842 <td class="entry_units"> 5843 </td> 5844 5845 <td class="entry_range"> 5846 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 5847 </td> 5848 5849 <td class="entry_tags"> 5850 <ul class="entry_tags"> 5851 <li><a href="#tag_BC">BC</a></li> 5852 </ul> 5853 </td> 5854 5855 </tr> 5856 <tr class="entries_header"> 5857 <th class="th_details" colspan="5">Details</th> 5858 </tr> 5859 <tr class="entry_cont"> 5860 <td class="entry_details" colspan="5"> 5861 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 5862AUTO.<wbr/></p> 5863<p>When set to any of the ON modes,<wbr/> the camera device's 5864auto-exposure routine is enabled,<wbr/> overriding the 5865application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 5866and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5867<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 5868<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 5869is selected,<wbr/> the camera device's flash unit controls are 5870also overridden.<wbr/></p> 5871<p>The FLASH modes are only available if the camera device 5872has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 5873<p>If flash TORCH mode is desired,<wbr/> this field must be set to 5874ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 5875<p>When set to any of the ON modes,<wbr/> the values chosen by the 5876camera device auto-exposure routine for the overridden 5877fields for a given capture will be available in its 5878CaptureResult.<wbr/></p> 5879 </td> 5880 </tr> 5881 5882 5883 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5884 <!-- end of entry --> 5885 5886 5887 <tr class="entry" id="dynamic_android.control.aeRegions"> 5888 <td class="entry_name 5889 " rowspan="5"> 5890 android.<wbr/>control.<wbr/>ae<wbr/>Regions 5891 </td> 5892 <td class="entry_type"> 5893 <span class="entry_type_name">int32</span> 5894 <span class="entry_type_container">x</span> 5895 5896 <span class="entry_type_array"> 5897 5 x area_count 5898 </span> 5899 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 5900 5901 5902 5903 5904 5905 5906 </td> <!-- entry_type --> 5907 5908 <td class="entry_description"> 5909 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 5910 </td> 5911 5912 <td class="entry_units"> 5913 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 5914 </td> 5915 5916 <td class="entry_range"> 5917 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 5918<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 5919 </td> 5920 5921 <td class="entry_tags"> 5922 <ul class="entry_tags"> 5923 <li><a href="#tag_BC">BC</a></li> 5924 </ul> 5925 </td> 5926 5927 </tr> 5928 <tr class="entries_header"> 5929 <th class="th_details" colspan="5">Details</th> 5930 </tr> 5931 <tr class="entry_cont"> 5932 <td class="entry_details" colspan="5"> 5933 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 5934Otherwise will always be present.<wbr/></p> 5935<p>The maximum number of regions supported by the device is determined by the value 5936of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 5937<p>The coordinate system is based on the active pixel array,<wbr/> 5938with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 5939(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 5940<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 5941bottom-right pixel in the active pixel array.<wbr/></p> 5942<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 5943for every pixel in the area.<wbr/> This means that a large metering area 5944with the same weight as a smaller area will have more effect in 5945the metering result.<wbr/> Metering areas can partially overlap and the 5946camera device will add the weights in the overlap region.<wbr/></p> 5947<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 5948region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 5949weight is ignored.<wbr/></p> 5950<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 5951camera device.<wbr/></p> 5952<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in 5953capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 5954region and output only the intersection rectangle as the metering region in the result 5955metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 5956not reported in the result metadata.<wbr/></p> 5957 </td> 5958 </tr> 5959 5960 <tr class="entries_header"> 5961 <th class="th_details" colspan="5">HAL Implementation Details</th> 5962 </tr> 5963 <tr class="entry_cont"> 5964 <td class="entry_details" colspan="5"> 5965 <p>The HAL level representation of MeteringRectangle[] is a 5966int[5 * area_<wbr/>count].<wbr/> 5967Every five elements represent a metering region of 5968(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 5969The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 5970exclusive on xmax and ymax.<wbr/></p> 5971 </td> 5972 </tr> 5973 5974 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5975 <!-- end of entry --> 5976 5977 5978 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange"> 5979 <td class="entry_name 5980 " rowspan="3"> 5981 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 5982 </td> 5983 <td class="entry_type"> 5984 <span class="entry_type_name">int32</span> 5985 <span class="entry_type_container">x</span> 5986 5987 <span class="entry_type_array"> 5988 2 5989 </span> 5990 <span class="entry_type_visibility"> [public as rangeInt]</span> 5991 5992 5993 <span class="entry_type_hwlevel">[legacy] </span> 5994 5995 5996 5997 5998 </td> <!-- entry_type --> 5999 6000 <td class="entry_description"> 6001 <p>Range over which the auto-exposure routine can 6002adjust the capture frame rate to maintain good 6003exposure.<wbr/></p> 6004 </td> 6005 6006 <td class="entry_units"> 6007 Frames per second (FPS) 6008 </td> 6009 6010 <td class="entry_range"> 6011 <p>Any of the entries in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p> 6012 </td> 6013 6014 <td class="entry_tags"> 6015 <ul class="entry_tags"> 6016 <li><a href="#tag_BC">BC</a></li> 6017 </ul> 6018 </td> 6019 6020 </tr> 6021 <tr class="entries_header"> 6022 <th class="th_details" colspan="5">Details</th> 6023 </tr> 6024 <tr class="entry_cont"> 6025 <td class="entry_details" colspan="5"> 6026 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 6027manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 6028<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 6029 </td> 6030 </tr> 6031 6032 6033 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6034 <!-- end of entry --> 6035 6036 6037 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger"> 6038 <td class="entry_name 6039 " rowspan="5"> 6040 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 6041 </td> 6042 <td class="entry_type"> 6043 <span class="entry_type_name entry_type_name_enum">byte</span> 6044 6045 <span class="entry_type_visibility"> [public]</span> 6046 6047 6048 <span class="entry_type_hwlevel">[limited] </span> 6049 6050 6051 6052 <ul class="entry_type_enum"> 6053 <li> 6054 <span class="entry_type_enum_name">IDLE</span> 6055 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 6056 </li> 6057 <li> 6058 <span class="entry_type_enum_name">START</span> 6059 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 6060by the camera device.<wbr/></p> 6061<p>The exact effect of the precapture trigger depends on 6062the current AE mode and state.<wbr/></p></span> 6063 </li> 6064 <li> 6065 <span class="entry_type_enum_name">CANCEL</span> 6066 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 6067precapture metering sequence,<wbr/> the auto-exposure routine will return to its 6068initial state.<wbr/></p></span> 6069 </li> 6070 </ul> 6071 6072 </td> <!-- entry_type --> 6073 6074 <td class="entry_description"> 6075 <p>Whether the camera device will trigger a precapture 6076metering sequence when it processes this request.<wbr/></p> 6077 </td> 6078 6079 <td class="entry_units"> 6080 </td> 6081 6082 <td class="entry_range"> 6083 </td> 6084 6085 <td class="entry_tags"> 6086 <ul class="entry_tags"> 6087 <li><a href="#tag_BC">BC</a></li> 6088 </ul> 6089 </td> 6090 6091 </tr> 6092 <tr class="entries_header"> 6093 <th class="th_details" colspan="5">Details</th> 6094 </tr> 6095 <tr class="entry_cont"> 6096 <td class="entry_details" colspan="5"> 6097 <p>This entry is normally set to IDLE,<wbr/> or is not 6098included at all in the request settings.<wbr/> When included and 6099set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 6100precapture metering sequence.<wbr/></p> 6101<p>When set to CANCEL,<wbr/> the camera device will cancel any active 6102precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 6103If a precapture metering sequence is already completed,<wbr/> and the camera 6104device has implicitly locked the AE for subsequent still capture,<wbr/> the 6105CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 6106<p>The precapture sequence should be triggered before starting a 6107high-quality still capture for final metering decisions to 6108be made,<wbr/> and for firing pre-capture flash pulses to estimate 6109scene brightness and required final capture flash power,<wbr/> when 6110the flash is enabled.<wbr/></p> 6111<p>Normally,<wbr/> this entry should be set to START for only a 6112single request,<wbr/> and the application should wait until the 6113sequence completes before starting a new one.<wbr/></p> 6114<p>When a precapture metering sequence is finished,<wbr/> the camera device 6115may lock the auto-exposure routine internally to be able to accurately expose the 6116subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 6117For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 6118submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 6119submit a request with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == true</code>,<wbr/> followed by a request 6120with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == false</code>,<wbr/> if the application decides not to submit a 6121still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 6122API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 6123internally locked AE if the application doesn't submit a still capture request after 6124the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 6125be used in devices that have earlier API levels.<wbr/></p> 6126<p>The exact effect of auto-exposure (AE) precapture trigger 6127depends on the current AE mode and state; see 6128<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 6129details.<wbr/></p> 6130<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 6131capturing a high-resolution JPEG image will automatically trigger a 6132precapture sequence before the high-resolution capture,<wbr/> including 6133potentially firing a pre-capture flash.<wbr/></p> 6134<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 6135simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 6136the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 6137focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 6138trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 6139changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 6140example.<wbr/></p> 6141<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 6142the camera device will complete them in the optimal order for that device.<wbr/></p> 6143 </td> 6144 </tr> 6145 6146 <tr class="entries_header"> 6147 <th class="th_details" colspan="5">HAL Implementation Details</th> 6148 </tr> 6149 <tr class="entry_cont"> 6150 <td class="entry_details" colspan="5"> 6151 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 6152(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 6153treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 6154AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 6155to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 6156 </td> 6157 </tr> 6158 6159 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6160 <!-- end of entry --> 6161 6162 6163 <tr class="entry" id="dynamic_android.control.aeState"> 6164 <td class="entry_name 6165 " rowspan="3"> 6166 android.<wbr/>control.<wbr/>ae<wbr/>State 6167 </td> 6168 <td class="entry_type"> 6169 <span class="entry_type_name entry_type_name_enum">byte</span> 6170 6171 <span class="entry_type_visibility"> [public]</span> 6172 6173 6174 <span class="entry_type_hwlevel">[limited] </span> 6175 6176 6177 6178 <ul class="entry_type_enum"> 6179 <li> 6180 <span class="entry_type_enum_name">INACTIVE</span> 6181 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p> 6182<p>When a camera device is opened,<wbr/> it starts in 6183this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting 6184this state in capture result.<wbr/></p></span> 6185 </li> 6186 <li> 6187 <span class="entry_type_enum_name">SEARCHING</span> 6188 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values 6189for the current scene.<wbr/></p> 6190<p>This is a transient state,<wbr/> the camera device may skip 6191reporting this state in capture result.<wbr/></p></span> 6192 </li> 6193 <li> 6194 <span class="entry_type_enum_name">CONVERGED</span> 6195 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the 6196current scene.<wbr/></p></span> 6197 </li> 6198 <li> 6199 <span class="entry_type_enum_name">LOCKED</span> 6200 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span> 6201 </li> 6202 <li> 6203 <span class="entry_type_enum_name">FLASH_REQUIRED</span> 6204 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash 6205needs to be fired for good quality still 6206capture.<wbr/></p></span> 6207 </li> 6208 <li> 6209 <span class="entry_type_enum_name">PRECAPTURE</span> 6210 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence 6211and is currently executing it.<wbr/></p> 6212<p>Precapture can be triggered through setting 6213<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently 6214active and completed (if it causes camera device internal AE lock) precapture 6215metering sequence can be canceled through setting 6216<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p> 6217<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED 6218or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient 6219state,<wbr/> the camera device may skip reporting this state in 6220capture result.<wbr/></p></span> 6221 </li> 6222 </ul> 6223 6224 </td> <!-- entry_type --> 6225 6226 <td class="entry_description"> 6227 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p> 6228 </td> 6229 6230 <td class="entry_units"> 6231 </td> 6232 6233 <td class="entry_range"> 6234 </td> 6235 6236 <td class="entry_tags"> 6237 </td> 6238 6239 </tr> 6240 <tr class="entries_header"> 6241 <th class="th_details" colspan="5">Details</th> 6242 </tr> 6243 <tr class="entry_cont"> 6244 <td class="entry_details" colspan="5"> 6245 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always 6246resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 6247or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all 6248the algorithm states to INACTIVE.<wbr/></p> 6249<p>The camera device can do several state transitions between two results,<wbr/> if it is 6250allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 6251seen in a result.<wbr/></p> 6252<p>The state in the result is the state for this image (in sync with this image): if 6253AE state becomes CONVERGED,<wbr/> then the image data associated with this result should 6254be good to use.<wbr/></p> 6255<p>Below are state transition tables for different AE modes.<wbr/></p> 6256<table> 6257<thead> 6258<tr> 6259<th align="center">State</th> 6260<th align="center">Transition Cause</th> 6261<th align="center">New State</th> 6262<th align="center">Notes</th> 6263</tr> 6264</thead> 6265<tbody> 6266<tr> 6267<td align="center">INACTIVE</td> 6268<td align="center"></td> 6269<td align="center">INACTIVE</td> 6270<td align="center">Camera device auto exposure algorithm is disabled</td> 6271</tr> 6272</tbody> 6273</table> 6274<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p> 6275<table> 6276<thead> 6277<tr> 6278<th align="center">State</th> 6279<th align="center">Transition Cause</th> 6280<th align="center">New State</th> 6281<th align="center">Notes</th> 6282</tr> 6283</thead> 6284<tbody> 6285<tr> 6286<td align="center">INACTIVE</td> 6287<td align="center">Camera device initiates AE scan</td> 6288<td align="center">SEARCHING</td> 6289<td align="center">Values changing</td> 6290</tr> 6291<tr> 6292<td align="center">INACTIVE</td> 6293<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6294<td align="center">LOCKED</td> 6295<td align="center">Values locked</td> 6296</tr> 6297<tr> 6298<td align="center">SEARCHING</td> 6299<td align="center">Camera device finishes AE scan</td> 6300<td align="center">CONVERGED</td> 6301<td align="center">Good values,<wbr/> not changing</td> 6302</tr> 6303<tr> 6304<td align="center">SEARCHING</td> 6305<td align="center">Camera device finishes AE scan</td> 6306<td align="center">FLASH_<wbr/>REQUIRED</td> 6307<td align="center">Converged but too dark w/<wbr/>o flash</td> 6308</tr> 6309<tr> 6310<td align="center">SEARCHING</td> 6311<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6312<td align="center">LOCKED</td> 6313<td align="center">Values locked</td> 6314</tr> 6315<tr> 6316<td align="center">CONVERGED</td> 6317<td align="center">Camera device initiates AE scan</td> 6318<td align="center">SEARCHING</td> 6319<td align="center">Values changing</td> 6320</tr> 6321<tr> 6322<td align="center">CONVERGED</td> 6323<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6324<td align="center">LOCKED</td> 6325<td align="center">Values locked</td> 6326</tr> 6327<tr> 6328<td align="center">FLASH_<wbr/>REQUIRED</td> 6329<td align="center">Camera device initiates AE scan</td> 6330<td align="center">SEARCHING</td> 6331<td align="center">Values changing</td> 6332</tr> 6333<tr> 6334<td align="center">FLASH_<wbr/>REQUIRED</td> 6335<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6336<td align="center">LOCKED</td> 6337<td align="center">Values locked</td> 6338</tr> 6339<tr> 6340<td align="center">LOCKED</td> 6341<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6342<td align="center">SEARCHING</td> 6343<td align="center">Values not good after unlock</td> 6344</tr> 6345<tr> 6346<td align="center">LOCKED</td> 6347<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6348<td align="center">CONVERGED</td> 6349<td align="center">Values good after unlock</td> 6350</tr> 6351<tr> 6352<td align="center">LOCKED</td> 6353<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6354<td align="center">FLASH_<wbr/>REQUIRED</td> 6355<td align="center">Exposure good,<wbr/> but too dark</td> 6356</tr> 6357<tr> 6358<td align="center">PRECAPTURE</td> 6359<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6360<td align="center">CONVERGED</td> 6361<td align="center">Ready for high-quality capture</td> 6362</tr> 6363<tr> 6364<td align="center">PRECAPTURE</td> 6365<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6366<td align="center">LOCKED</td> 6367<td align="center">Ready for high-quality capture</td> 6368</tr> 6369<tr> 6370<td align="center">LOCKED</td> 6371<td align="center">aeLock is ON and aePrecaptureTrigger is START</td> 6372<td align="center">LOCKED</td> 6373<td align="center">Precapture trigger is ignored when AE is already locked</td> 6374</tr> 6375<tr> 6376<td align="center">LOCKED</td> 6377<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td> 6378<td align="center">LOCKED</td> 6379<td align="center">Precapture trigger is ignored when AE is already locked</td> 6380</tr> 6381<tr> 6382<td align="center">Any state (excluding LOCKED)</td> 6383<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> 6384<td align="center">PRECAPTURE</td> 6385<td align="center">Start AE precapture metering sequence</td> 6386</tr> 6387<tr> 6388<td align="center">Any state (excluding LOCKED)</td> 6389<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td> 6390<td align="center">INACTIVE</td> 6391<td align="center">Currently active precapture metering sequence is canceled</td> 6392</tr> 6393</tbody> 6394</table> 6395<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 6396without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 6397can be skipped in that manner is called a transient state.<wbr/></p> 6398<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions 6399listed in above table,<wbr/> it is also legal for the camera device to skip one or more 6400transient states between two results.<wbr/> See below table for examples:</p> 6401<table> 6402<thead> 6403<tr> 6404<th align="center">State</th> 6405<th align="center">Transition Cause</th> 6406<th align="center">New State</th> 6407<th align="center">Notes</th> 6408</tr> 6409</thead> 6410<tbody> 6411<tr> 6412<td align="center">INACTIVE</td> 6413<td align="center">Camera device finished AE scan</td> 6414<td align="center">CONVERGED</td> 6415<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 6416</tr> 6417<tr> 6418<td align="center">Any state (excluding LOCKED)</td> 6419<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td> 6420<td align="center">FLASH_<wbr/>REQUIRED</td> 6421<td align="center">Converged but too dark w/<wbr/>o flash after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> 6422</tr> 6423<tr> 6424<td align="center">Any state (excluding LOCKED)</td> 6425<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td> 6426<td align="center">CONVERGED</td> 6427<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> 6428</tr> 6429<tr> 6430<td align="center">Any state (excluding LOCKED)</td> 6431<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 6432<td align="center">FLASH_<wbr/>REQUIRED</td> 6433<td align="center">Converged but too dark w/<wbr/>o flash after a precapture sequence is canceled,<wbr/> transient states are skipped by camera device.<wbr/></td> 6434</tr> 6435<tr> 6436<td align="center">Any state (excluding LOCKED)</td> 6437<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 6438<td align="center">CONVERGED</td> 6439<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td> 6440</tr> 6441<tr> 6442<td align="center">CONVERGED</td> 6443<td align="center">Camera device finished AE scan</td> 6444<td align="center">FLASH_<wbr/>REQUIRED</td> 6445<td align="center">Converged but too dark w/<wbr/>o flash after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> 6446</tr> 6447<tr> 6448<td align="center">FLASH_<wbr/>REQUIRED</td> 6449<td align="center">Camera device finished AE scan</td> 6450<td align="center">CONVERGED</td> 6451<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> 6452</tr> 6453</tbody> 6454</table> 6455 </td> 6456 </tr> 6457 6458 6459 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6460 <!-- end of entry --> 6461 6462 6463 <tr class="entry" id="dynamic_android.control.afMode"> 6464 <td class="entry_name 6465 " rowspan="5"> 6466 android.<wbr/>control.<wbr/>af<wbr/>Mode 6467 </td> 6468 <td class="entry_type"> 6469 <span class="entry_type_name entry_type_name_enum">byte</span> 6470 6471 <span class="entry_type_visibility"> [public]</span> 6472 6473 6474 <span class="entry_type_hwlevel">[legacy] </span> 6475 6476 6477 6478 <ul class="entry_type_enum"> 6479 <li> 6480 <span class="entry_type_enum_name">OFF</span> 6481 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 6482<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 6483application.<wbr/></p></span> 6484 </li> 6485 <li> 6486 <span class="entry_type_enum_name">AUTO</span> 6487 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 6488<p>In this mode,<wbr/> the lens does not move unless 6489the autofocus trigger action is called.<wbr/> When that trigger 6490is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 6491the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 6492<p>Always supported if lens is not fixed focus.<wbr/></p> 6493<p>Use <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> to determine if lens 6494is fixed-focus.<wbr/></p> 6495<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 6496and sets the AF state to INACTIVE.<wbr/></p></span> 6497 </li> 6498 <li> 6499 <span class="entry_type_enum_name">MACRO</span> 6500 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 6501<p>In this mode,<wbr/> the lens does not move unless the 6502autofocus trigger action is called.<wbr/> When that trigger is 6503activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 6504the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 6505mode is optimized for focusing on objects very close to 6506the camera.<wbr/></p> 6507<p>When that trigger is activated,<wbr/> AF will transition to 6508ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 6509NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 6510position to default,<wbr/> and sets the AF state to 6511INACTIVE.<wbr/></p></span> 6512 </li> 6513 <li> 6514 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 6515 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 6516position continually to attempt to provide a 6517constantly-in-focus image stream.<wbr/></p> 6518<p>The focusing behavior should be suitable for good quality 6519video recording; typically this means slower focus 6520movement and no overshoots.<wbr/> When the AF trigger is not 6521involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 6522and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 6523states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 6524the algorithm should immediately transition into 6525AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 6526lens position until a cancel AF trigger is received.<wbr/></p> 6527<p>Once cancel is received,<wbr/> the algorithm should transition 6528back to INACTIVE and resume passive scan.<wbr/> Note that this 6529behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 6530ongoing PASSIVE_<wbr/>SCAN must immediately be 6531canceled.<wbr/></p></span> 6532 </li> 6533 <li> 6534 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 6535 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 6536position continually to attempt to provide a 6537constantly-in-focus image stream.<wbr/></p> 6538<p>The focusing behavior should be suitable for still image 6539capture; typically this means focusing as fast as 6540possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 6541algorithm should start in INACTIVE state,<wbr/> and then 6542transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 6543appropriate as it attempts to maintain focus.<wbr/> When the AF 6544trigger is activated,<wbr/> the algorithm should finish its 6545PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 6546AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 6547lens position until a cancel AF trigger is received.<wbr/></p> 6548<p>When the AF cancel trigger is activated,<wbr/> the algorithm 6549should transition back to INACTIVE and then act as if it 6550has just been started.<wbr/></p></span> 6551 </li> 6552 <li> 6553 <span class="entry_type_enum_name">EDOF</span> 6554 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 6555<p>The camera device will produce images with an extended 6556depth of field automatically; no special focusing 6557operations need to be done before taking a picture.<wbr/></p> 6558<p>AF triggers are ignored,<wbr/> and the AF state will always be 6559INACTIVE.<wbr/></p></span> 6560 </li> 6561 </ul> 6562 6563 </td> <!-- entry_type --> 6564 6565 <td class="entry_description"> 6566 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 6567mode it is set to.<wbr/></p> 6568 </td> 6569 6570 <td class="entry_units"> 6571 </td> 6572 6573 <td class="entry_range"> 6574 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 6575 </td> 6576 6577 <td class="entry_tags"> 6578 <ul class="entry_tags"> 6579 <li><a href="#tag_BC">BC</a></li> 6580 </ul> 6581 </td> 6582 6583 </tr> 6584 <tr class="entries_header"> 6585 <th class="th_details" colspan="5">Details</th> 6586 </tr> 6587 <tr class="entry_cont"> 6588 <td class="entry_details" colspan="5"> 6589 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 6590(i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>).<wbr/> Also note that 6591when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 6592dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 6593setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p> 6594<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 6595the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 6596in result metadata.<wbr/></p> 6597 </td> 6598 </tr> 6599 6600 <tr class="entries_header"> 6601 <th class="th_details" colspan="5">HAL Implementation Details</th> 6602 </tr> 6603 <tr class="entry_cont"> 6604 <td class="entry_details" colspan="5"> 6605 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 6606request (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> <code>==</code> START).<wbr/> After an AF trigger,<wbr/> the afState will end 6607up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 6608<a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> which indicates that the lens is 6609locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 6610after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 6611the same focal plane remains in focus.<wbr/></p> 6612<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 6613scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 6614(see <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> the HAL should maintain the 6615same lock behavior as above.<wbr/></p> 6616<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 6617focus distance control depends on the <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a>.<wbr/> 6618However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 6619manual control.<wbr/></p> 6620<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 6621camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 6622remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 6623by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 6624that will arise on camera modules with open-loop VCMs.<wbr/></p> 6625 </td> 6626 </tr> 6627 6628 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6629 <!-- end of entry --> 6630 6631 6632 <tr class="entry" id="dynamic_android.control.afRegions"> 6633 <td class="entry_name 6634 " rowspan="5"> 6635 android.<wbr/>control.<wbr/>af<wbr/>Regions 6636 </td> 6637 <td class="entry_type"> 6638 <span class="entry_type_name">int32</span> 6639 <span class="entry_type_container">x</span> 6640 6641 <span class="entry_type_array"> 6642 5 x area_count 6643 </span> 6644 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 6645 6646 6647 6648 6649 6650 6651 </td> <!-- entry_type --> 6652 6653 <td class="entry_description"> 6654 <p>List of metering areas to use for auto-focus.<wbr/></p> 6655 </td> 6656 6657 <td class="entry_units"> 6658 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 6659 </td> 6660 6661 <td class="entry_range"> 6662 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 6663<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 6664 </td> 6665 6666 <td class="entry_tags"> 6667 <ul class="entry_tags"> 6668 <li><a href="#tag_BC">BC</a></li> 6669 </ul> 6670 </td> 6671 6672 </tr> 6673 <tr class="entries_header"> 6674 <th class="th_details" colspan="5">Details</th> 6675 </tr> 6676 <tr class="entry_cont"> 6677 <td class="entry_details" colspan="5"> 6678 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 6679Otherwise will always be present.<wbr/></p> 6680<p>The maximum number of focus areas supported by the device is determined by the value 6681of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 6682<p>The coordinate system is based on the active pixel array,<wbr/> 6683with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 6684(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 6685<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 6686bottom-right pixel in the active pixel array.<wbr/></p> 6687<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 6688for every pixel in the area.<wbr/> This means that a large metering area 6689with the same weight as a smaller area will have more effect in 6690the metering result.<wbr/> Metering areas can partially overlap and the 6691camera device will add the weights in the overlap region.<wbr/></p> 6692<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 6693is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 6694ignored.<wbr/></p> 6695<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 6696camera device.<wbr/></p> 6697<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in 6698capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 6699region and output only the intersection rectangle as the metering region in the result 6700metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 6701not reported in the result metadata.<wbr/></p> 6702 </td> 6703 </tr> 6704 6705 <tr class="entries_header"> 6706 <th class="th_details" colspan="5">HAL Implementation Details</th> 6707 </tr> 6708 <tr class="entry_cont"> 6709 <td class="entry_details" colspan="5"> 6710 <p>The HAL level representation of MeteringRectangle[] is a 6711int[5 * area_<wbr/>count].<wbr/> 6712Every five elements represent a metering region of 6713(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 6714The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 6715exclusive on xmax and ymax.<wbr/></p> 6716 </td> 6717 </tr> 6718 6719 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6720 <!-- end of entry --> 6721 6722 6723 <tr class="entry" id="dynamic_android.control.afTrigger"> 6724 <td class="entry_name 6725 " rowspan="5"> 6726 android.<wbr/>control.<wbr/>af<wbr/>Trigger 6727 </td> 6728 <td class="entry_type"> 6729 <span class="entry_type_name entry_type_name_enum">byte</span> 6730 6731 <span class="entry_type_visibility"> [public]</span> 6732 6733 6734 <span class="entry_type_hwlevel">[legacy] </span> 6735 6736 6737 6738 <ul class="entry_type_enum"> 6739 <li> 6740 <span class="entry_type_enum_name">IDLE</span> 6741 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 6742 </li> 6743 <li> 6744 <span class="entry_type_enum_name">START</span> 6745 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 6746 </li> 6747 <li> 6748 <span class="entry_type_enum_name">CANCEL</span> 6749 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 6750state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 6751 </li> 6752 </ul> 6753 6754 </td> <!-- entry_type --> 6755 6756 <td class="entry_description"> 6757 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 6758 </td> 6759 6760 <td class="entry_units"> 6761 </td> 6762 6763 <td class="entry_range"> 6764 </td> 6765 6766 <td class="entry_tags"> 6767 <ul class="entry_tags"> 6768 <li><a href="#tag_BC">BC</a></li> 6769 </ul> 6770 </td> 6771 6772 </tr> 6773 <tr class="entries_header"> 6774 <th class="th_details" colspan="5">Details</th> 6775 </tr> 6776 <tr class="entry_cont"> 6777 <td class="entry_details" colspan="5"> 6778 <p>This entry is normally set to IDLE,<wbr/> or is not 6779included at all in the request settings.<wbr/></p> 6780<p>When included and set to START,<wbr/> the camera device will trigger the 6781autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 6782<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 6783and return to its initial AF state.<wbr/></p> 6784<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 6785single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 6786START for multiple captures in a row means restarting the AF operation over 6787and over again.<wbr/></p> 6788<p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what the trigger means for each AF mode.<wbr/></p> 6789<p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> 6790simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 6791the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 6792focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 6793trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 6794changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 6795 </td> 6796 </tr> 6797 6798 <tr class="entries_header"> 6799 <th class="th_details" colspan="5">HAL Implementation Details</th> 6800 </tr> 6801 <tr class="entry_cont"> 6802 <td class="entry_details" colspan="5"> 6803 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 6804(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 6805treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 6806AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 6807to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 6808 </td> 6809 </tr> 6810 6811 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6812 <!-- end of entry --> 6813 6814 6815 <tr class="entry" id="dynamic_android.control.afState"> 6816 <td class="entry_name 6817 " rowspan="3"> 6818 android.<wbr/>control.<wbr/>af<wbr/>State 6819 </td> 6820 <td class="entry_type"> 6821 <span class="entry_type_name entry_type_name_enum">byte</span> 6822 6823 <span class="entry_type_visibility"> [public]</span> 6824 6825 6826 <span class="entry_type_hwlevel">[legacy] </span> 6827 6828 6829 6830 <ul class="entry_type_enum"> 6831 <li> 6832 <span class="entry_type_enum_name">INACTIVE</span> 6833 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked 6834to scan.<wbr/></p> 6835<p>When a camera device is opened,<wbr/> it starts in this 6836state.<wbr/> This is a transient state,<wbr/> the camera device may 6837skip reporting this state in capture 6838result.<wbr/></p></span> 6839 </li> 6840 <li> 6841 <span class="entry_type_enum_name">PASSIVE_SCAN</span> 6842 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the 6843camera device in a continuous autofocus mode.<wbr/></p> 6844<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 6845state,<wbr/> the camera device may skip reporting this state in 6846capture result.<wbr/></p></span> 6847 </li> 6848 <li> 6849 <span class="entry_type_enum_name">PASSIVE_FOCUSED</span> 6850 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may 6851restart scanning at any time.<wbr/></p> 6852<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 6853state,<wbr/> the camera device may skip reporting this state in 6854capture result.<wbr/></p></span> 6855 </li> 6856 <li> 6857 <span class="entry_type_enum_name">ACTIVE_SCAN</span> 6858 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was 6859triggered by AF trigger.<wbr/></p> 6860<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient 6861state,<wbr/> the camera device may skip reporting this state in 6862capture result.<wbr/></p></span> 6863 </li> 6864 <li> 6865 <span class="entry_type_enum_name">FOCUSED_LOCKED</span> 6866 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked 6867focus.<wbr/></p> 6868<p>This state is reached only after an explicit START AF trigger has been 6869sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p> 6870<p>The lens will remain stationary until the AF mode (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) is changed or 6871a new AF trigger is sent to the camera device (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>).<wbr/></p></span> 6872 </li> 6873 <li> 6874 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span> 6875 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked 6876focus.<wbr/></p> 6877<p>This state is reached only after an explicit START AF trigger has been 6878sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p> 6879<p>The lens will remain stationary until the AF mode (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) is changed or 6880a new AF trigger is sent to the camera device (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>).<wbr/></p></span> 6881 </li> 6882 <li> 6883 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span> 6884 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/> 6885and may restart scanning at any time.<wbr/></p> 6886<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera 6887device may skip reporting this state in capture result.<wbr/></p> 6888<p>LEGACY camera devices do not support this state.<wbr/> When a passive 6889scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span> 6890 </li> 6891 </ul> 6892 6893 </td> <!-- entry_type --> 6894 6895 <td class="entry_description"> 6896 <p>Current state of auto-focus (AF) algorithm.<wbr/></p> 6897 </td> 6898 6899 <td class="entry_units"> 6900 </td> 6901 6902 <td class="entry_range"> 6903 </td> 6904 6905 <td class="entry_tags"> 6906 </td> 6907 6908 </tr> 6909 <tr class="entries_header"> 6910 <th class="th_details" colspan="5">Details</th> 6911 </tr> 6912 <tr class="entry_cont"> 6913 <td class="entry_details" colspan="5"> 6914 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always 6915resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 6916or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all 6917the algorithm states to INACTIVE.<wbr/></p> 6918<p>The camera device can do several state transitions between two results,<wbr/> if it is 6919allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 6920seen in a result.<wbr/></p> 6921<p>The state in the result is the state for this image (in sync with this image): if 6922AF state becomes FOCUSED,<wbr/> then the image data associated with this result should 6923be sharp.<wbr/></p> 6924<p>Below are state transition tables for different AF modes.<wbr/></p> 6925<p>When <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> is AF_<wbr/>MODE_<wbr/>OFF or AF_<wbr/>MODE_<wbr/>EDOF:</p> 6926<table> 6927<thead> 6928<tr> 6929<th align="center">State</th> 6930<th align="center">Transition Cause</th> 6931<th align="center">New State</th> 6932<th align="center">Notes</th> 6933</tr> 6934</thead> 6935<tbody> 6936<tr> 6937<td align="center">INACTIVE</td> 6938<td align="center"></td> 6939<td align="center">INACTIVE</td> 6940<td align="center">Never changes</td> 6941</tr> 6942</tbody> 6943</table> 6944<p>When <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> is AF_<wbr/>MODE_<wbr/>AUTO or AF_<wbr/>MODE_<wbr/>MACRO:</p> 6945<table> 6946<thead> 6947<tr> 6948<th align="center">State</th> 6949<th align="center">Transition Cause</th> 6950<th align="center">New State</th> 6951<th align="center">Notes</th> 6952</tr> 6953</thead> 6954<tbody> 6955<tr> 6956<td align="center">INACTIVE</td> 6957<td align="center">AF_<wbr/>TRIGGER</td> 6958<td align="center">ACTIVE_<wbr/>SCAN</td> 6959<td align="center">Start AF sweep,<wbr/> Lens now moving</td> 6960</tr> 6961<tr> 6962<td align="center">ACTIVE_<wbr/>SCAN</td> 6963<td align="center">AF sweep done</td> 6964<td align="center">FOCUSED_<wbr/>LOCKED</td> 6965<td align="center">Focused,<wbr/> Lens now locked</td> 6966</tr> 6967<tr> 6968<td align="center">ACTIVE_<wbr/>SCAN</td> 6969<td align="center">AF sweep done</td> 6970<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6971<td align="center">Not focused,<wbr/> Lens now locked</td> 6972</tr> 6973<tr> 6974<td align="center">ACTIVE_<wbr/>SCAN</td> 6975<td align="center">AF_<wbr/>CANCEL</td> 6976<td align="center">INACTIVE</td> 6977<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> 6978</tr> 6979<tr> 6980<td align="center">FOCUSED_<wbr/>LOCKED</td> 6981<td align="center">AF_<wbr/>CANCEL</td> 6982<td align="center">INACTIVE</td> 6983<td align="center">Cancel/<wbr/>reset AF</td> 6984</tr> 6985<tr> 6986<td align="center">FOCUSED_<wbr/>LOCKED</td> 6987<td align="center">AF_<wbr/>TRIGGER</td> 6988<td align="center">ACTIVE_<wbr/>SCAN</td> 6989<td align="center">Start new sweep,<wbr/> Lens now moving</td> 6990</tr> 6991<tr> 6992<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6993<td align="center">AF_<wbr/>CANCEL</td> 6994<td align="center">INACTIVE</td> 6995<td align="center">Cancel/<wbr/>reset AF</td> 6996</tr> 6997<tr> 6998<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6999<td align="center">AF_<wbr/>TRIGGER</td> 7000<td align="center">ACTIVE_<wbr/>SCAN</td> 7001<td align="center">Start new sweep,<wbr/> Lens now moving</td> 7002</tr> 7003<tr> 7004<td align="center">Any state</td> 7005<td align="center">Mode change</td> 7006<td align="center">INACTIVE</td> 7007<td align="center"></td> 7008</tr> 7009</tbody> 7010</table> 7011<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 7012without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 7013can be skipped in that manner is called a transient state.<wbr/></p> 7014<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the 7015state transitions listed in above table,<wbr/> it is also legal for the camera device to skip 7016one or more transient states between two results.<wbr/> See below table for examples:</p> 7017<table> 7018<thead> 7019<tr> 7020<th align="center">State</th> 7021<th align="center">Transition Cause</th> 7022<th align="center">New State</th> 7023<th align="center">Notes</th> 7024</tr> 7025</thead> 7026<tbody> 7027<tr> 7028<td align="center">INACTIVE</td> 7029<td align="center">AF_<wbr/>TRIGGER</td> 7030<td align="center">FOCUSED_<wbr/>LOCKED</td> 7031<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 7032</tr> 7033<tr> 7034<td align="center">INACTIVE</td> 7035<td align="center">AF_<wbr/>TRIGGER</td> 7036<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7037<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td> 7038</tr> 7039<tr> 7040<td align="center">FOCUSED_<wbr/>LOCKED</td> 7041<td align="center">AF_<wbr/>TRIGGER</td> 7042<td align="center">FOCUSED_<wbr/>LOCKED</td> 7043<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 7044</tr> 7045<tr> 7046<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7047<td align="center">AF_<wbr/>TRIGGER</td> 7048<td align="center">FOCUSED_<wbr/>LOCKED</td> 7049<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td> 7050</tr> 7051</tbody> 7052</table> 7053<p>When <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> is AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>VIDEO:</p> 7054<table> 7055<thead> 7056<tr> 7057<th align="center">State</th> 7058<th align="center">Transition Cause</th> 7059<th align="center">New State</th> 7060<th align="center">Notes</th> 7061</tr> 7062</thead> 7063<tbody> 7064<tr> 7065<td align="center">INACTIVE</td> 7066<td align="center">Camera device initiates new scan</td> 7067<td align="center">PASSIVE_<wbr/>SCAN</td> 7068<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7069</tr> 7070<tr> 7071<td align="center">INACTIVE</td> 7072<td align="center">AF_<wbr/>TRIGGER</td> 7073<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7074<td align="center">AF state query,<wbr/> Lens now locked</td> 7075</tr> 7076<tr> 7077<td align="center">PASSIVE_<wbr/>SCAN</td> 7078<td align="center">Camera device completes current scan</td> 7079<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7080<td align="center">End AF scan,<wbr/> Lens now locked</td> 7081</tr> 7082<tr> 7083<td align="center">PASSIVE_<wbr/>SCAN</td> 7084<td align="center">Camera device fails current scan</td> 7085<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7086<td align="center">End AF scan,<wbr/> Lens now locked</td> 7087</tr> 7088<tr> 7089<td align="center">PASSIVE_<wbr/>SCAN</td> 7090<td align="center">AF_<wbr/>TRIGGER</td> 7091<td align="center">FOCUSED_<wbr/>LOCKED</td> 7092<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td> 7093</tr> 7094<tr> 7095<td align="center">PASSIVE_<wbr/>SCAN</td> 7096<td align="center">AF_<wbr/>TRIGGER</td> 7097<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7098<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td> 7099</tr> 7100<tr> 7101<td align="center">PASSIVE_<wbr/>SCAN</td> 7102<td align="center">AF_<wbr/>CANCEL</td> 7103<td align="center">INACTIVE</td> 7104<td align="center">Reset lens position,<wbr/> Lens now locked</td> 7105</tr> 7106<tr> 7107<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7108<td align="center">Camera device initiates new scan</td> 7109<td align="center">PASSIVE_<wbr/>SCAN</td> 7110<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7111</tr> 7112<tr> 7113<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7114<td align="center">Camera device initiates new scan</td> 7115<td align="center">PASSIVE_<wbr/>SCAN</td> 7116<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7117</tr> 7118<tr> 7119<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7120<td align="center">AF_<wbr/>TRIGGER</td> 7121<td align="center">FOCUSED_<wbr/>LOCKED</td> 7122<td align="center">Immediate transition,<wbr/> lens now locked</td> 7123</tr> 7124<tr> 7125<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7126<td align="center">AF_<wbr/>TRIGGER</td> 7127<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7128<td align="center">Immediate transition,<wbr/> lens now locked</td> 7129</tr> 7130<tr> 7131<td align="center">FOCUSED_<wbr/>LOCKED</td> 7132<td align="center">AF_<wbr/>TRIGGER</td> 7133<td align="center">FOCUSED_<wbr/>LOCKED</td> 7134<td align="center">No effect</td> 7135</tr> 7136<tr> 7137<td align="center">FOCUSED_<wbr/>LOCKED</td> 7138<td align="center">AF_<wbr/>CANCEL</td> 7139<td align="center">INACTIVE</td> 7140<td align="center">Restart AF scan</td> 7141</tr> 7142<tr> 7143<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7144<td align="center">AF_<wbr/>TRIGGER</td> 7145<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7146<td align="center">No effect</td> 7147</tr> 7148<tr> 7149<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7150<td align="center">AF_<wbr/>CANCEL</td> 7151<td align="center">INACTIVE</td> 7152<td align="center">Restart AF scan</td> 7153</tr> 7154</tbody> 7155</table> 7156<p>When <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> is AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>PICTURE:</p> 7157<table> 7158<thead> 7159<tr> 7160<th align="center">State</th> 7161<th align="center">Transition Cause</th> 7162<th align="center">New State</th> 7163<th align="center">Notes</th> 7164</tr> 7165</thead> 7166<tbody> 7167<tr> 7168<td align="center">INACTIVE</td> 7169<td align="center">Camera device initiates new scan</td> 7170<td align="center">PASSIVE_<wbr/>SCAN</td> 7171<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7172</tr> 7173<tr> 7174<td align="center">INACTIVE</td> 7175<td align="center">AF_<wbr/>TRIGGER</td> 7176<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7177<td align="center">AF state query,<wbr/> Lens now locked</td> 7178</tr> 7179<tr> 7180<td align="center">PASSIVE_<wbr/>SCAN</td> 7181<td align="center">Camera device completes current scan</td> 7182<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7183<td align="center">End AF scan,<wbr/> Lens now locked</td> 7184</tr> 7185<tr> 7186<td align="center">PASSIVE_<wbr/>SCAN</td> 7187<td align="center">Camera device fails current scan</td> 7188<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7189<td align="center">End AF scan,<wbr/> Lens now locked</td> 7190</tr> 7191<tr> 7192<td align="center">PASSIVE_<wbr/>SCAN</td> 7193<td align="center">AF_<wbr/>TRIGGER</td> 7194<td align="center">FOCUSED_<wbr/>LOCKED</td> 7195<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td> 7196</tr> 7197<tr> 7198<td align="center">PASSIVE_<wbr/>SCAN</td> 7199<td align="center">AF_<wbr/>TRIGGER</td> 7200<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7201<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td> 7202</tr> 7203<tr> 7204<td align="center">PASSIVE_<wbr/>SCAN</td> 7205<td align="center">AF_<wbr/>CANCEL</td> 7206<td align="center">INACTIVE</td> 7207<td align="center">Reset lens position,<wbr/> Lens now locked</td> 7208</tr> 7209<tr> 7210<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7211<td align="center">Camera device initiates new scan</td> 7212<td align="center">PASSIVE_<wbr/>SCAN</td> 7213<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7214</tr> 7215<tr> 7216<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7217<td align="center">Camera device initiates new scan</td> 7218<td align="center">PASSIVE_<wbr/>SCAN</td> 7219<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7220</tr> 7221<tr> 7222<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7223<td align="center">AF_<wbr/>TRIGGER</td> 7224<td align="center">FOCUSED_<wbr/>LOCKED</td> 7225<td align="center">Immediate trans.<wbr/> Lens now locked</td> 7226</tr> 7227<tr> 7228<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7229<td align="center">AF_<wbr/>TRIGGER</td> 7230<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7231<td align="center">Immediate trans.<wbr/> Lens now locked</td> 7232</tr> 7233<tr> 7234<td align="center">FOCUSED_<wbr/>LOCKED</td> 7235<td align="center">AF_<wbr/>TRIGGER</td> 7236<td align="center">FOCUSED_<wbr/>LOCKED</td> 7237<td align="center">No effect</td> 7238</tr> 7239<tr> 7240<td align="center">FOCUSED_<wbr/>LOCKED</td> 7241<td align="center">AF_<wbr/>CANCEL</td> 7242<td align="center">INACTIVE</td> 7243<td align="center">Restart AF scan</td> 7244</tr> 7245<tr> 7246<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7247<td align="center">AF_<wbr/>TRIGGER</td> 7248<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7249<td align="center">No effect</td> 7250</tr> 7251<tr> 7252<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7253<td align="center">AF_<wbr/>CANCEL</td> 7254<td align="center">INACTIVE</td> 7255<td align="center">Restart AF scan</td> 7256</tr> 7257</tbody> 7258</table> 7259<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO 7260(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the 7261camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger 7262will be evaluated in the context of the new mode in the request.<wbr/> 7263See below table for examples:</p> 7264<table> 7265<thead> 7266<tr> 7267<th align="center">State</th> 7268<th align="center">Transition Cause</th> 7269<th align="center">New State</th> 7270<th align="center">Notes</th> 7271</tr> 7272</thead> 7273<tbody> 7274<tr> 7275<td align="center">any state</td> 7276<td align="center">CAF-->AUTO mode switch</td> 7277<td align="center">INACTIVE</td> 7278<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td> 7279</tr> 7280<tr> 7281<td align="center">any state</td> 7282<td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td> 7283<td align="center">trigger-reachable states from INACTIVE</td> 7284<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td> 7285</tr> 7286<tr> 7287<td align="center">any state</td> 7288<td align="center">AUTO-->CAF mode switch</td> 7289<td align="center">passively reachable states from INACTIVE</td> 7290<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td> 7291</tr> 7292</tbody> 7293</table> 7294 </td> 7295 </tr> 7296 7297 7298 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7299 <!-- end of entry --> 7300 7301 7302 <tr class="entry" id="dynamic_android.control.afTriggerId"> 7303 <td class="entry_name 7304 entry_name_deprecated 7305 " rowspan="3"> 7306 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id 7307 </td> 7308 <td class="entry_type"> 7309 <span class="entry_type_name">int32</span> 7310 7311 <span class="entry_type_visibility"> [system]</span> 7312 7313 7314 7315 <span class="entry_type_deprecated">[deprecated] </span> 7316 7317 7318 7319 </td> <!-- entry_type --> 7320 7321 <td class="entry_description"> 7322 <p>The ID sent with the latest 7323CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p> 7324 </td> 7325 7326 <td class="entry_units"> 7327 </td> 7328 7329 <td class="entry_range"> 7330 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 7331 </td> 7332 7333 <td class="entry_tags"> 7334 </td> 7335 7336 </tr> 7337 <tr class="entries_header"> 7338 <th class="th_details" colspan="5">Details</th> 7339 </tr> 7340 <tr class="entry_cont"> 7341 <td class="entry_details" colspan="5"> 7342 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger 7343received yet by HAL.<wbr/> Always updated even if AF algorithm 7344ignores the trigger</p> 7345 </td> 7346 </tr> 7347 7348 7349 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7350 <!-- end of entry --> 7351 7352 7353 <tr class="entry" id="dynamic_android.control.awbLock"> 7354 <td class="entry_name 7355 " rowspan="3"> 7356 android.<wbr/>control.<wbr/>awb<wbr/>Lock 7357 </td> 7358 <td class="entry_type"> 7359 <span class="entry_type_name entry_type_name_enum">byte</span> 7360 7361 <span class="entry_type_visibility"> [public as boolean]</span> 7362 7363 7364 <span class="entry_type_hwlevel">[legacy] </span> 7365 7366 7367 7368 <ul class="entry_type_enum"> 7369 <li> 7370 <span class="entry_type_enum_name">OFF</span> 7371 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 7372algorithm is free to update its parameters if in AUTO 7373mode.<wbr/></p></span> 7374 </li> 7375 <li> 7376 <span class="entry_type_enum_name">ON</span> 7377 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 7378algorithm will not update its parameters while the lock 7379is active.<wbr/></p></span> 7380 </li> 7381 </ul> 7382 7383 </td> <!-- entry_type --> 7384 7385 <td class="entry_description"> 7386 <p>Whether auto-white balance (AWB) is currently locked to its 7387latest calculated values.<wbr/></p> 7388 </td> 7389 7390 <td class="entry_units"> 7391 </td> 7392 7393 <td class="entry_range"> 7394 </td> 7395 7396 <td class="entry_tags"> 7397 <ul class="entry_tags"> 7398 <li><a href="#tag_BC">BC</a></li> 7399 </ul> 7400 </td> 7401 7402 </tr> 7403 <tr class="entries_header"> 7404 <th class="th_details" colspan="5">Details</th> 7405 </tr> 7406 <tr class="entry_cont"> 7407 <td class="entry_details" colspan="5"> 7408 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 7409and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 7410<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 7411get locked do not necessarily correspond to the settings that were present in the 7412latest capture result received from the camera device,<wbr/> since additional captures 7413and AWB updates may have occurred even before the result was sent out.<wbr/> If an 7414application is switching between automatic and manual control and wishes to eliminate 7415any flicker during the switch,<wbr/> the following procedure is recommended:</p> 7416<ol> 7417<li>Starting in auto-AWB mode:</li> 7418<li>Lock AWB</li> 7419<li>Wait for the first result to be output that has the AWB locked</li> 7420<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 7421<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 7422</ol> 7423<p>Note that AWB lock is only meaningful when 7424<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 7425AWB is already fixed to a specific setting.<wbr/></p> 7426<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 7427 </td> 7428 </tr> 7429 7430 7431 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7432 <!-- end of entry --> 7433 7434 7435 <tr class="entry" id="dynamic_android.control.awbMode"> 7436 <td class="entry_name 7437 " rowspan="3"> 7438 android.<wbr/>control.<wbr/>awb<wbr/>Mode 7439 </td> 7440 <td class="entry_type"> 7441 <span class="entry_type_name entry_type_name_enum">byte</span> 7442 7443 <span class="entry_type_visibility"> [public]</span> 7444 7445 7446 <span class="entry_type_hwlevel">[legacy] </span> 7447 7448 7449 7450 <ul class="entry_type_enum"> 7451 <li> 7452 <span class="entry_type_enum_name">OFF</span> 7453 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 7454<p>The application-selected color transform matrix 7455(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 7456(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 7457device for manual white balance control.<wbr/></p></span> 7458 </li> 7459 <li> 7460 <span class="entry_type_enum_name">AUTO</span> 7461 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 7462<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7463and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7464For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7465values used by the camera device for the transform and gains 7466will be available in the capture result for this request.<wbr/></p></span> 7467 </li> 7468 <li> 7469 <span class="entry_type_enum_name">INCANDESCENT</span> 7470 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7471the camera device uses incandescent light as the assumed scene 7472illumination for white balance.<wbr/></p> 7473<p>While the exact white balance transforms are up to the 7474camera device,<wbr/> they will approximately match the CIE 7475standard illuminant A.<wbr/></p> 7476<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7477and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7478For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7479values used by the camera device for the transform and gains 7480will be available in the capture result for this request.<wbr/></p></span> 7481 </li> 7482 <li> 7483 <span class="entry_type_enum_name">FLUORESCENT</span> 7484 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7485the camera device uses fluorescent light as the assumed scene 7486illumination for white balance.<wbr/></p> 7487<p>While the exact white balance transforms are up to the 7488camera device,<wbr/> they will approximately match the CIE 7489standard illuminant F2.<wbr/></p> 7490<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7491and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7492For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7493values used by the camera device for the transform and gains 7494will be available in the capture result for this request.<wbr/></p></span> 7495 </li> 7496 <li> 7497 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 7498 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7499the camera device uses warm fluorescent light as the assumed scene 7500illumination for white balance.<wbr/></p> 7501<p>While the exact white balance transforms are up to the 7502camera device,<wbr/> they will approximately match the CIE 7503standard illuminant F4.<wbr/></p> 7504<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7505and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7506For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7507values used by the camera device for the transform and gains 7508will be available in the capture result for this request.<wbr/></p></span> 7509 </li> 7510 <li> 7511 <span class="entry_type_enum_name">DAYLIGHT</span> 7512 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7513the camera device uses daylight light as the assumed scene 7514illumination for white balance.<wbr/></p> 7515<p>While the exact white balance transforms are up to the 7516camera device,<wbr/> they will approximately match the CIE 7517standard illuminant D65.<wbr/></p> 7518<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7519and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7520For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7521values used by the camera device for the transform and gains 7522will be available in the capture result for this request.<wbr/></p></span> 7523 </li> 7524 <li> 7525 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 7526 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7527the camera device uses cloudy daylight light as the assumed scene 7528illumination for white balance.<wbr/></p> 7529<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7530and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7531For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7532values used by the camera device for the transform and gains 7533will be available in the capture result for this request.<wbr/></p></span> 7534 </li> 7535 <li> 7536 <span class="entry_type_enum_name">TWILIGHT</span> 7537 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7538the camera device uses twilight light as the assumed scene 7539illumination for white balance.<wbr/></p> 7540<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7541and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7542For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7543values used by the camera device for the transform and gains 7544will be available in the capture result for this request.<wbr/></p></span> 7545 </li> 7546 <li> 7547 <span class="entry_type_enum_name">SHADE</span> 7548 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7549the camera device uses shade light as the assumed scene 7550illumination for white balance.<wbr/></p> 7551<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7552and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7553For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7554values used by the camera device for the transform and gains 7555will be available in the capture result for this request.<wbr/></p></span> 7556 </li> 7557 </ul> 7558 7559 </td> <!-- entry_type --> 7560 7561 <td class="entry_description"> 7562 <p>Whether auto-white balance (AWB) is currently setting the color 7563transform fields,<wbr/> and what its illumination target 7564is.<wbr/></p> 7565 </td> 7566 7567 <td class="entry_units"> 7568 </td> 7569 7570 <td class="entry_range"> 7571 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 7572 </td> 7573 7574 <td class="entry_tags"> 7575 <ul class="entry_tags"> 7576 <li><a href="#tag_BC">BC</a></li> 7577 </ul> 7578 </td> 7579 7580 </tr> 7581 <tr class="entries_header"> 7582 <th class="th_details" colspan="5">Details</th> 7583 </tr> 7584 <tr class="entry_cont"> 7585 <td class="entry_details" colspan="5"> 7586 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 7587<p>When set to the ON mode,<wbr/> the camera device's auto-white balance 7588routine is enabled,<wbr/> overriding the application's selected 7589<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 7590<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> Note that when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 7591is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 7592also set AWB mode to OFF or lock AWB by using <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> before 7593setting AE mode to OFF.<wbr/></p> 7594<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 7595routine is disabled.<wbr/> The application manually controls the white 7596balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> 7597and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 7598<p>When set to any other modes,<wbr/> the camera device's auto-white 7599balance routine is disabled.<wbr/> The camera device uses each 7600particular illumination target for white balance 7601adjustment.<wbr/> The application's values for 7602<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 7603<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 7604<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 7605 </td> 7606 </tr> 7607 7608 7609 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7610 <!-- end of entry --> 7611 7612 7613 <tr class="entry" id="dynamic_android.control.awbRegions"> 7614 <td class="entry_name 7615 " rowspan="5"> 7616 android.<wbr/>control.<wbr/>awb<wbr/>Regions 7617 </td> 7618 <td class="entry_type"> 7619 <span class="entry_type_name">int32</span> 7620 <span class="entry_type_container">x</span> 7621 7622 <span class="entry_type_array"> 7623 5 x area_count 7624 </span> 7625 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 7626 7627 7628 7629 7630 7631 7632 </td> <!-- entry_type --> 7633 7634 <td class="entry_description"> 7635 <p>List of metering areas to use for auto-white-balance illuminant 7636estimation.<wbr/></p> 7637 </td> 7638 7639 <td class="entry_units"> 7640 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 7641 </td> 7642 7643 <td class="entry_range"> 7644 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 7645<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 7646 </td> 7647 7648 <td class="entry_tags"> 7649 <ul class="entry_tags"> 7650 <li><a href="#tag_BC">BC</a></li> 7651 </ul> 7652 </td> 7653 7654 </tr> 7655 <tr class="entries_header"> 7656 <th class="th_details" colspan="5">Details</th> 7657 </tr> 7658 <tr class="entry_cont"> 7659 <td class="entry_details" colspan="5"> 7660 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 7661Otherwise will always be present.<wbr/></p> 7662<p>The maximum number of regions supported by the device is determined by the value 7663of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 7664<p>The coordinate system is based on the active pixel array,<wbr/> 7665with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 7666(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 7667<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 7668bottom-right pixel in the active pixel array.<wbr/></p> 7669<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 7670for every pixel in the area.<wbr/> This means that a large metering area 7671with the same weight as a smaller area will have more effect in 7672the metering result.<wbr/> Metering areas can partially overlap and the 7673camera device will add the weights in the overlap region.<wbr/></p> 7674<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 7675only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 76760 weight is ignored.<wbr/></p> 7677<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 7678camera device.<wbr/></p> 7679<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in 7680capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 7681region and output only the intersection rectangle as the metering region in the result 7682metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 7683not reported in the result metadata.<wbr/></p> 7684 </td> 7685 </tr> 7686 7687 <tr class="entries_header"> 7688 <th class="th_details" colspan="5">HAL Implementation Details</th> 7689 </tr> 7690 <tr class="entry_cont"> 7691 <td class="entry_details" colspan="5"> 7692 <p>The HAL level representation of MeteringRectangle[] is a 7693int[5 * area_<wbr/>count].<wbr/> 7694Every five elements represent a metering region of 7695(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 7696The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 7697exclusive on xmax and ymax.<wbr/></p> 7698 </td> 7699 </tr> 7700 7701 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7702 <!-- end of entry --> 7703 7704 7705 <tr class="entry" id="dynamic_android.control.captureIntent"> 7706 <td class="entry_name 7707 " rowspan="3"> 7708 android.<wbr/>control.<wbr/>capture<wbr/>Intent 7709 </td> 7710 <td class="entry_type"> 7711 <span class="entry_type_name entry_type_name_enum">byte</span> 7712 7713 <span class="entry_type_visibility"> [public]</span> 7714 7715 7716 <span class="entry_type_hwlevel">[legacy] </span> 7717 7718 7719 7720 <ul class="entry_type_enum"> 7721 <li> 7722 <span class="entry_type_enum_name">CUSTOM</span> 7723 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 7724categories.<wbr/> The camera device will default to preview-like 7725behavior.<wbr/></p></span> 7726 </li> 7727 <li> 7728 <span class="entry_type_enum_name">PREVIEW</span> 7729 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 7730<p>The precapture trigger may be used to start off a metering 7731w/<wbr/>flash sequence.<wbr/></p></span> 7732 </li> 7733 <li> 7734 <span class="entry_type_enum_name">STILL_CAPTURE</span> 7735 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 7736use case.<wbr/></p> 7737<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 7738 </li> 7739 <li> 7740 <span class="entry_type_enum_name">VIDEO_RECORD</span> 7741 <span class="entry_type_enum_notes"><p>This request is for a video recording 7742use case.<wbr/></p></span> 7743 </li> 7744 <li> 7745 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 7746 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 7747image while recording video) use case.<wbr/></p> 7748<p>The camera device should take the highest-quality image 7749possible (given the other settings) without disrupting the 7750frame rate of video recording.<wbr/> </p></span> 7751 </li> 7752 <li> 7753 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 7754 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 7755application will stream full-resolution images and 7756reprocess one or several later for a final 7757capture.<wbr/></p></span> 7758 </li> 7759 <li> 7760 <span class="entry_type_enum_name">MANUAL</span> 7761 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 7762the applications want to directly control the capture parameters.<wbr/></p> 7763<p>For example,<wbr/> the application may wish to manually control 7764<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> etc.<wbr/></p></span> 7765 </li> 7766 </ul> 7767 7768 </td> <!-- entry_type --> 7769 7770 <td class="entry_description"> 7771 <p>Information to the camera device 3A (auto-exposure,<wbr/> 7772auto-focus,<wbr/> auto-white balance) routines about the purpose 7773of this capture,<wbr/> to help the camera device to decide optimal 3A 7774strategy.<wbr/></p> 7775 </td> 7776 7777 <td class="entry_units"> 7778 </td> 7779 7780 <td class="entry_range"> 7781 </td> 7782 7783 <td class="entry_tags"> 7784 <ul class="entry_tags"> 7785 <li><a href="#tag_BC">BC</a></li> 7786 </ul> 7787 </td> 7788 7789 </tr> 7790 <tr class="entries_header"> 7791 <th class="th_details" colspan="5">Details</th> 7792 </tr> 7793 <tr class="entry_cont"> 7794 <td class="entry_details" colspan="5"> 7795 <p>This control (except for MANUAL) is only effective if 7796<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 7797<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 7798contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if 7799<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are 7800always supported.<wbr/></p> 7801 </td> 7802 </tr> 7803 7804 7805 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7806 <!-- end of entry --> 7807 7808 7809 <tr class="entry" id="dynamic_android.control.awbState"> 7810 <td class="entry_name 7811 " rowspan="3"> 7812 android.<wbr/>control.<wbr/>awb<wbr/>State 7813 </td> 7814 <td class="entry_type"> 7815 <span class="entry_type_name entry_type_name_enum">byte</span> 7816 7817 <span class="entry_type_visibility"> [public]</span> 7818 7819 7820 <span class="entry_type_hwlevel">[limited] </span> 7821 7822 7823 7824 <ul class="entry_type_enum"> 7825 <li> 7826 <span class="entry_type_enum_name">INACTIVE</span> 7827 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p> 7828<p>When a camera device is opened,<wbr/> it starts in this 7829state.<wbr/> This is a transient state,<wbr/> the camera device may 7830skip reporting this state in capture 7831result.<wbr/></p></span> 7832 </li> 7833 <li> 7834 <span class="entry_type_enum_name">SEARCHING</span> 7835 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control 7836values for the current scene.<wbr/></p> 7837<p>This is a transient state,<wbr/> the camera device 7838may skip reporting this state in capture result.<wbr/></p></span> 7839 </li> 7840 <li> 7841 <span class="entry_type_enum_name">CONVERGED</span> 7842 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the 7843current scene.<wbr/></p></span> 7844 </li> 7845 <li> 7846 <span class="entry_type_enum_name">LOCKED</span> 7847 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span> 7848 </li> 7849 </ul> 7850 7851 </td> <!-- entry_type --> 7852 7853 <td class="entry_description"> 7854 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p> 7855 </td> 7856 7857 <td class="entry_units"> 7858 </td> 7859 7860 <td class="entry_range"> 7861 </td> 7862 7863 <td class="entry_tags"> 7864 </td> 7865 7866 </tr> 7867 <tr class="entries_header"> 7868 <th class="th_details" colspan="5">Details</th> 7869 </tr> 7870 <tr class="entry_cont"> 7871 <td class="entry_details" colspan="5"> 7872 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always 7873resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 7874or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all 7875the algorithm states to INACTIVE.<wbr/></p> 7876<p>The camera device can do several state transitions between two results,<wbr/> if it is 7877allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in 7878a result.<wbr/></p> 7879<p>The state in the result is the state for this image (in sync with this image): if 7880AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should 7881be good to use.<wbr/></p> 7882<p>Below are state transition tables for different AWB modes.<wbr/></p> 7883<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p> 7884<table> 7885<thead> 7886<tr> 7887<th align="center">State</th> 7888<th align="center">Transition Cause</th> 7889<th align="center">New State</th> 7890<th align="center">Notes</th> 7891</tr> 7892</thead> 7893<tbody> 7894<tr> 7895<td align="center">INACTIVE</td> 7896<td align="center"></td> 7897<td align="center">INACTIVE</td> 7898<td align="center">Camera device auto white balance algorithm is disabled</td> 7899</tr> 7900</tbody> 7901</table> 7902<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p> 7903<table> 7904<thead> 7905<tr> 7906<th align="center">State</th> 7907<th align="center">Transition Cause</th> 7908<th align="center">New State</th> 7909<th align="center">Notes</th> 7910</tr> 7911</thead> 7912<tbody> 7913<tr> 7914<td align="center">INACTIVE</td> 7915<td align="center">Camera device initiates AWB scan</td> 7916<td align="center">SEARCHING</td> 7917<td align="center">Values changing</td> 7918</tr> 7919<tr> 7920<td align="center">INACTIVE</td> 7921<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7922<td align="center">LOCKED</td> 7923<td align="center">Values locked</td> 7924</tr> 7925<tr> 7926<td align="center">SEARCHING</td> 7927<td align="center">Camera device finishes AWB scan</td> 7928<td align="center">CONVERGED</td> 7929<td align="center">Good values,<wbr/> not changing</td> 7930</tr> 7931<tr> 7932<td align="center">SEARCHING</td> 7933<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7934<td align="center">LOCKED</td> 7935<td align="center">Values locked</td> 7936</tr> 7937<tr> 7938<td align="center">CONVERGED</td> 7939<td align="center">Camera device initiates AWB scan</td> 7940<td align="center">SEARCHING</td> 7941<td align="center">Values changing</td> 7942</tr> 7943<tr> 7944<td align="center">CONVERGED</td> 7945<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7946<td align="center">LOCKED</td> 7947<td align="center">Values locked</td> 7948</tr> 7949<tr> 7950<td align="center">LOCKED</td> 7951<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 7952<td align="center">SEARCHING</td> 7953<td align="center">Values not good after unlock</td> 7954</tr> 7955</tbody> 7956</table> 7957<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 7958without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 7959can be skipped in that manner is called a transient state.<wbr/></p> 7960<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions 7961listed in above table,<wbr/> it is also legal for the camera device to skip one or more 7962transient states between two results.<wbr/> See below table for examples:</p> 7963<table> 7964<thead> 7965<tr> 7966<th align="center">State</th> 7967<th align="center">Transition Cause</th> 7968<th align="center">New State</th> 7969<th align="center">Notes</th> 7970</tr> 7971</thead> 7972<tbody> 7973<tr> 7974<td align="center">INACTIVE</td> 7975<td align="center">Camera device finished AWB scan</td> 7976<td align="center">CONVERGED</td> 7977<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 7978</tr> 7979<tr> 7980<td align="center">LOCKED</td> 7981<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 7982<td align="center">CONVERGED</td> 7983<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td> 7984</tr> 7985</tbody> 7986</table> 7987 </td> 7988 </tr> 7989 7990 7991 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7992 <!-- end of entry --> 7993 7994 7995 <tr class="entry" id="dynamic_android.control.effectMode"> 7996 <td class="entry_name 7997 " rowspan="3"> 7998 android.<wbr/>control.<wbr/>effect<wbr/>Mode 7999 </td> 8000 <td class="entry_type"> 8001 <span class="entry_type_name entry_type_name_enum">byte</span> 8002 8003 <span class="entry_type_visibility"> [public]</span> 8004 8005 8006 <span class="entry_type_hwlevel">[legacy] </span> 8007 8008 8009 8010 <ul class="entry_type_enum"> 8011 <li> 8012 <span class="entry_type_enum_name">OFF</span> 8013 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 8014 </li> 8015 <li> 8016 <span class="entry_type_enum_name">MONO</span> 8017 <span class="entry_type_enum_optional">[optional]</span> 8018 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 8019a single color.<wbr/></p> 8020<p>This will typically be grayscale.<wbr/></p></span> 8021 </li> 8022 <li> 8023 <span class="entry_type_enum_name">NEGATIVE</span> 8024 <span class="entry_type_enum_optional">[optional]</span> 8025 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 8026are inverted.<wbr/></p></span> 8027 </li> 8028 <li> 8029 <span class="entry_type_enum_name">SOLARIZE</span> 8030 <span class="entry_type_enum_optional">[optional]</span> 8031 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 8032image is wholly or partially reversed in 8033tone.<wbr/></p></span> 8034 </li> 8035 <li> 8036 <span class="entry_type_enum_name">SEPIA</span> 8037 <span class="entry_type_enum_optional">[optional]</span> 8038 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 8039gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 8040 </li> 8041 <li> 8042 <span class="entry_type_enum_name">POSTERIZE</span> 8043 <span class="entry_type_enum_optional">[optional]</span> 8044 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 8045discrete regions of tone rather than a continuous 8046gradient of tones.<wbr/></p></span> 8047 </li> 8048 <li> 8049 <span class="entry_type_enum_name">WHITEBOARD</span> 8050 <span class="entry_type_enum_optional">[optional]</span> 8051 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 8052as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 8053 </li> 8054 <li> 8055 <span class="entry_type_enum_name">BLACKBOARD</span> 8056 <span class="entry_type_enum_optional">[optional]</span> 8057 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 8058as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 8059 </li> 8060 <li> 8061 <span class="entry_type_enum_name">AQUA</span> 8062 <span class="entry_type_enum_optional">[optional]</span> 8063 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 8064 </li> 8065 </ul> 8066 8067 </td> <!-- entry_type --> 8068 8069 <td class="entry_description"> 8070 <p>A special color effect to apply.<wbr/></p> 8071 </td> 8072 8073 <td class="entry_units"> 8074 </td> 8075 8076 <td class="entry_range"> 8077 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 8078 </td> 8079 8080 <td class="entry_tags"> 8081 <ul class="entry_tags"> 8082 <li><a href="#tag_BC">BC</a></li> 8083 </ul> 8084 </td> 8085 8086 </tr> 8087 <tr class="entries_header"> 8088 <th class="th_details" colspan="5">Details</th> 8089 </tr> 8090 <tr class="entry_cont"> 8091 <td class="entry_details" colspan="5"> 8092 <p>When this mode is set,<wbr/> a color effect will be applied 8093to images produced by the camera device.<wbr/> The interpretation 8094and implementation of these color effects is left to the 8095implementor of the camera device,<wbr/> and should not be 8096depended on to be consistent (or present) across all 8097devices.<wbr/></p> 8098 </td> 8099 </tr> 8100 8101 8102 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8103 <!-- end of entry --> 8104 8105 8106 <tr class="entry" id="dynamic_android.control.mode"> 8107 <td class="entry_name 8108 " rowspan="3"> 8109 android.<wbr/>control.<wbr/>mode 8110 </td> 8111 <td class="entry_type"> 8112 <span class="entry_type_name entry_type_name_enum">byte</span> 8113 8114 <span class="entry_type_visibility"> [public]</span> 8115 8116 8117 <span class="entry_type_hwlevel">[legacy] </span> 8118 8119 8120 8121 <ul class="entry_type_enum"> 8122 <li> 8123 <span class="entry_type_enum_name">OFF</span> 8124 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 8125<p>All control by the device's metering and focusing (3A) 8126routines is disabled,<wbr/> and no other settings in 8127android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 8128<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 8129device to select post-processing values for processing 8130blocks that do not allow for manual control,<wbr/> or are not 8131exposed by the camera API.<wbr/></p> 8132<p>However,<wbr/> the camera device's 3A routines may continue to 8133collect statistics and update their internal state so that 8134when control is switched to AUTO mode,<wbr/> good control values 8135can be immediately applied.<wbr/></p></span> 8136 </li> 8137 <li> 8138 <span class="entry_type_enum_name">AUTO</span> 8139 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 8140<p>Manual control of capture parameters is disabled.<wbr/> All 8141controls in android.<wbr/>control.<wbr/>* besides sceneMode take 8142effect.<wbr/></p></span> 8143 </li> 8144 <li> 8145 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 8146 <span class="entry_type_enum_optional">[optional]</span> 8147 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 8148<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 8149control.<wbr/>afMode controls; the camera device will ignore 8150those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 8151FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 8152This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 8153<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 8154contain some modes other than DISABLED).<wbr/></p></span> 8155 </li> 8156 <li> 8157 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 8158 <span class="entry_type_enum_optional">[optional]</span> 8159 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 8160used by camera device background auto-exposure,<wbr/> auto-white balance and 8161auto-focus algorithms (3A) to update their statistics.<wbr/></p> 8162<p>Specifically,<wbr/> the 3A routines are locked to the last 8163values set from a request with AUTO,<wbr/> OFF,<wbr/> or 8164USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 8165collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 8166discarded by the camera device.<wbr/></p></span> 8167 </li> 8168 </ul> 8169 8170 </td> <!-- entry_type --> 8171 8172 <td class="entry_description"> 8173 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 8174routines.<wbr/></p> 8175 </td> 8176 8177 <td class="entry_units"> 8178 </td> 8179 8180 <td class="entry_range"> 8181 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 8182 </td> 8183 8184 <td class="entry_tags"> 8185 <ul class="entry_tags"> 8186 <li><a href="#tag_BC">BC</a></li> 8187 </ul> 8188 </td> 8189 8190 </tr> 8191 <tr class="entries_header"> 8192 <th class="th_details" colspan="5">Details</th> 8193 </tr> 8194 <tr class="entry_cont"> 8195 <td class="entry_details" colspan="5"> 8196 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 8197by the camera device is disabled.<wbr/> The application must set the fields for 8198capture parameters itself.<wbr/></p> 8199<p>When set to AUTO,<wbr/> the individual algorithm controls in 8200android.<wbr/>control.<wbr/>* are in effect,<wbr/> such as <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p> 8201<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 8202android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 8203one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 8204as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 8205<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 8206<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 8207is that this frame will not be used by camera device background 3A statistics 8208update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 8209where the application doesn't want a 3A manual control capture to affect 8210the subsequent auto 3A capture results.<wbr/></p> 8211 </td> 8212 </tr> 8213 8214 8215 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8216 <!-- end of entry --> 8217 8218 8219 <tr class="entry" id="dynamic_android.control.sceneMode"> 8220 <td class="entry_name 8221 " rowspan="5"> 8222 android.<wbr/>control.<wbr/>scene<wbr/>Mode 8223 </td> 8224 <td class="entry_type"> 8225 <span class="entry_type_name entry_type_name_enum">byte</span> 8226 8227 <span class="entry_type_visibility"> [public]</span> 8228 8229 8230 <span class="entry_type_hwlevel">[legacy] </span> 8231 8232 8233 8234 <ul class="entry_type_enum"> 8235 <li> 8236 <span class="entry_type_enum_name">DISABLED</span> 8237 <span class="entry_type_enum_value">0</span> 8238 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 8239 </li> 8240 <li> 8241 <span class="entry_type_enum_name">FACE_PRIORITY</span> 8242 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 8243detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 8244auto-exposure routines.<wbr/></p> 8245<p>If face detection statistics are disabled 8246(i.<wbr/>e.<wbr/> <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> is set to OFF),<wbr/> 8247this should still operate correctly (but will not return 8248face detection statistics to the framework).<wbr/></p> 8249<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8250<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> 8251remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 8252 </li> 8253 <li> 8254 <span class="entry_type_enum_name">ACTION</span> 8255 <span class="entry_type_enum_optional">[optional]</span> 8256 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 8257<p>Similar to SPORTS.<wbr/></p></span> 8258 </li> 8259 <li> 8260 <span class="entry_type_enum_name">PORTRAIT</span> 8261 <span class="entry_type_enum_optional">[optional]</span> 8262 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 8263 </li> 8264 <li> 8265 <span class="entry_type_enum_name">LANDSCAPE</span> 8266 <span class="entry_type_enum_optional">[optional]</span> 8267 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 8268 </li> 8269 <li> 8270 <span class="entry_type_enum_name">NIGHT</span> 8271 <span class="entry_type_enum_optional">[optional]</span> 8272 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 8273 </li> 8274 <li> 8275 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 8276 <span class="entry_type_enum_optional">[optional]</span> 8277 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 8278settings.<wbr/></p></span> 8279 </li> 8280 <li> 8281 <span class="entry_type_enum_name">THEATRE</span> 8282 <span class="entry_type_enum_optional">[optional]</span> 8283 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 8284remain off.<wbr/></p></span> 8285 </li> 8286 <li> 8287 <span class="entry_type_enum_name">BEACH</span> 8288 <span class="entry_type_enum_optional">[optional]</span> 8289 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 8290 </li> 8291 <li> 8292 <span class="entry_type_enum_name">SNOW</span> 8293 <span class="entry_type_enum_optional">[optional]</span> 8294 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 8295 </li> 8296 <li> 8297 <span class="entry_type_enum_name">SUNSET</span> 8298 <span class="entry_type_enum_optional">[optional]</span> 8299 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 8300 </li> 8301 <li> 8302 <span class="entry_type_enum_name">STEADYPHOTO</span> 8303 <span class="entry_type_enum_optional">[optional]</span> 8304 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 8305device motion (for example: due to hand shake).<wbr/></p></span> 8306 </li> 8307 <li> 8308 <span class="entry_type_enum_name">FIREWORKS</span> 8309 <span class="entry_type_enum_optional">[optional]</span> 8310 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 8311 </li> 8312 <li> 8313 <span class="entry_type_enum_name">SPORTS</span> 8314 <span class="entry_type_enum_optional">[optional]</span> 8315 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 8316<p>Similar to ACTION.<wbr/></p></span> 8317 </li> 8318 <li> 8319 <span class="entry_type_enum_name">PARTY</span> 8320 <span class="entry_type_enum_optional">[optional]</span> 8321 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 8322people.<wbr/></p></span> 8323 </li> 8324 <li> 8325 <span class="entry_type_enum_name">CANDLELIGHT</span> 8326 <span class="entry_type_enum_optional">[optional]</span> 8327 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 8328is a flame.<wbr/></p></span> 8329 </li> 8330 <li> 8331 <span class="entry_type_enum_name">BARCODE</span> 8332 <span class="entry_type_enum_optional">[optional]</span> 8333 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 8334for use by camera applications that wish to read the 8335barcode value.<wbr/></p></span> 8336 </li> 8337 <li> 8338 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span> 8339 <span class="entry_type_enum_deprecated">[deprecated]</span> 8340 <span class="entry_type_enum_optional">[optional]</span> 8341 <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a> 8342and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 8343for high speed video recording.<wbr/></p> 8344<p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 8345<p>The supported high speed video sizes and fps ranges are specified in 8346<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 8347output frame rates,<wbr/> the application is only allowed to select video size 8348and fps range combinations listed in this static metadata.<wbr/> The fps range 8349can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 8350<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 8351ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 8352controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 8353and post-processing parameters is possible.<wbr/> All other controls operate the 8354same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 8355android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 8356<ul> 8357<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 8358<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 8359<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 8360<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 8361<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 8362<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 8363<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 8364<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 8365<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 8366<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 8367</ul> 8368<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 8369<ul> 8370<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (automatic flash for still capture will not work since aeMode is ON)</li> 8371<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 8372<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 8373<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 8374</ul> 8375<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 8376be lower than what camera can output,<wbr/> depending on the destination Surfaces for 8377the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 8378the application need check if the video encoder is capable of supporting the 8379high frame rate for a given video size,<wbr/> or it will end up with lower recording 8380frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 8381rate will be bounded by the screen refresh rate.<wbr/></p> 8382<p>The camera device will only support up to 2 output high speed streams 8383(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 8384in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 8385<ul> 8386<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 8387format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 8388min(2,<wbr/> <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>[Processed (but not-stalling)]).<wbr/></li> 8389<li>The stream sizes are selected from the sizes reported by 8390<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 8391<li>No processed non-stalling or raw streams are configured.<wbr/></li> 8392</ul> 8393<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 8394<a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> will be ignored by the camera device,<wbr/> 8395the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 8396and the returned capture result metadata will give the fps range choosen 8397by the camera device.<wbr/></p> 8398<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 8399reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 8400the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 8401 </li> 8402 <li> 8403 <span class="entry_type_enum_name">HDR</span> 8404 <span class="entry_type_enum_optional">[optional]</span> 8405 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 8406<p>In this scene mode,<wbr/> the camera device captures images 8407that keep a larger range of scene illumination levels 8408visible in the final image.<wbr/> For example,<wbr/> when taking a 8409picture of a object in front of a bright window,<wbr/> both 8410the object and the scene through the window may be 8411visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 8412one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 8413HDR mode generally takes much longer to capture a single 8414image,<wbr/> has no user control,<wbr/> and may have other artifacts 8415depending on the HDR method used.<wbr/></p> 8416<p>Therefore,<wbr/> HDR captures operate at a much slower rate 8417than regular captures.<wbr/></p> 8418<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 8419is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 8420STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 8421using a high dynamic range capture technique.<wbr/> On LEGACY 8422devices,<wbr/> captures that target a JPEG-format output will 8423be captured with HDR,<wbr/> and the capture intent is not 8424relevant.<wbr/></p> 8425<p>The HDR capture may involve the device capturing a burst 8426of images internally and combining them into one,<wbr/> or it 8427may involve the device using specialized high dynamic 8428range capture hardware.<wbr/> In all cases,<wbr/> a single image is 8429produced in response to a capture request submitted 8430while in HDR mode.<wbr/></p> 8431<p>Since substantial post-processing is generally needed to 8432produce an HDR image,<wbr/> only YUV and JPEG outputs are 8433supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only 8434JPEG outputs are supported for LEGACY HDR 8435captures.<wbr/> Using a RAW output for HDR capture is not 8436supported.<wbr/></p></span> 8437 </li> 8438 <li> 8439 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span> 8440 <span class="entry_type_enum_optional">[optional]</span> 8441 <span class="entry_type_enum_hidden">[hidden]</span> 8442 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 8443device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 8444under low light conditions.<wbr/></p> 8445<p>The camera device may be tuned to expose the images in a reduced 8446sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 8447if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/> 8448the camera device auto-exposure routine tuning process may limit the actual 8449exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 8450exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 8451low light may be under-exposed when the sensor max exposure time (bounded by the 8452<a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the 8453ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 8454camera device auto-exposure routine to increase the sensitivity up to the max 8455sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 8456dark and the max exposure time is reached.<wbr/> The captured images may be noisier 8457compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 8458recommended that the application only use this scene mode when it is capable of 8459reducing the noise level of the captured images.<wbr/></p> 8460<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8461<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> 8462remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 8463 </li> 8464 </ul> 8465 8466 </td> <!-- entry_type --> 8467 8468 <td class="entry_description"> 8469 <p>Control for which scene mode is currently active.<wbr/></p> 8470 </td> 8471 8472 <td class="entry_units"> 8473 </td> 8474 8475 <td class="entry_range"> 8476 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 8477 </td> 8478 8479 <td class="entry_tags"> 8480 <ul class="entry_tags"> 8481 <li><a href="#tag_BC">BC</a></li> 8482 </ul> 8483 </td> 8484 8485 </tr> 8486 <tr class="entries_header"> 8487 <th class="th_details" colspan="5">Details</th> 8488 </tr> 8489 <tr class="entry_cont"> 8490 <td class="entry_details" colspan="5"> 8491 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 8492capture settings.<wbr/></p> 8493<p>This is the mode that that is active when 8494<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will 8495disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> 8496while in use.<wbr/></p> 8497<p>The interpretation and implementation of these scene modes is left 8498to the implementor of the camera device.<wbr/> Their behavior will not be 8499consistent across all devices,<wbr/> and any given device may only implement 8500a subset of these modes.<wbr/></p> 8501 </td> 8502 </tr> 8503 8504 <tr class="entries_header"> 8505 <th class="th_details" colspan="5">HAL Implementation Details</th> 8506 </tr> 8507 <tr class="entry_cont"> 8508 <td class="entry_details" colspan="5"> 8509 <p>HAL implementations that include scene modes are expected to provide 8510the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8511<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> in 8512<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 8513<p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/> 8514the HAL must list supported video size and fps range in 8515<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/> 85161280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming 8517mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture 8518requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/> 8519This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 8520<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO 8521capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 8522 </td> 8523 </tr> 8524 8525 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8526 <!-- end of entry --> 8527 8528 8529 <tr class="entry" id="dynamic_android.control.videoStabilizationMode"> 8530 <td class="entry_name 8531 " rowspan="3"> 8532 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 8533 </td> 8534 <td class="entry_type"> 8535 <span class="entry_type_name entry_type_name_enum">byte</span> 8536 8537 <span class="entry_type_visibility"> [public]</span> 8538 8539 8540 <span class="entry_type_hwlevel">[legacy] </span> 8541 8542 8543 8544 <ul class="entry_type_enum"> 8545 <li> 8546 <span class="entry_type_enum_name">OFF</span> 8547 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 8548 </li> 8549 <li> 8550 <span class="entry_type_enum_name">ON</span> 8551 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 8552 </li> 8553 </ul> 8554 8555 </td> <!-- entry_type --> 8556 8557 <td class="entry_description"> 8558 <p>Whether video stabilization is 8559active.<wbr/></p> 8560 </td> 8561 8562 <td class="entry_units"> 8563 </td> 8564 8565 <td class="entry_range"> 8566 </td> 8567 8568 <td class="entry_tags"> 8569 <ul class="entry_tags"> 8570 <li><a href="#tag_BC">BC</a></li> 8571 </ul> 8572 </td> 8573 8574 </tr> 8575 <tr class="entries_header"> 8576 <th class="th_details" colspan="5">Details</th> 8577 </tr> 8578 <tr class="entry_cont"> 8579 <td class="entry_details" colspan="5"> 8580 <p>Video stabilization automatically warps images from 8581the camera in order to stabilize motion between consecutive frames.<wbr/></p> 8582<p>If enabled,<wbr/> video stabilization can modify the 8583<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 8584<p>Switching between different video stabilization modes may take several 8585frames to initialize,<wbr/> the camera device will report the current mode 8586in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 8587the video stabilization modes in the first several capture results may 8588still be "OFF",<wbr/> and it will become "ON" when the initialization is 8589done.<wbr/></p> 8590<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 8591stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 8592that an output targeting a MediaRecorder or MediaCodec will be stabilized if 8593the recording resolution is less than or equal to 1920 x 1080 (width less than 8594or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 8595frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult 8596<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return 8597OFF if the recording output is not stabilized,<wbr/> or if there are no output 8598Surface types that can be stabilized.<wbr/></p> 8599<p>If a camera device supports both this mode and OIS 8600(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 8601produce undesirable interaction,<wbr/> so it is recommended not to enable 8602both at the same time.<wbr/></p> 8603 </td> 8604 </tr> 8605 8606 8607 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8608 <!-- end of entry --> 8609 8610 8611 8612 <!-- end of kind --> 8613 </tbody> 8614 8615 <!-- end of section --> 8616 <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr> 8617 8618 8619 <tr><td colspan="6" class="kind">controls</td></tr> 8620 8621 <thead class="entries_header"> 8622 <tr> 8623 <th class="th_name">Property Name</th> 8624 <th class="th_type">Type</th> 8625 <th class="th_description">Description</th> 8626 <th class="th_units">Units</th> 8627 <th class="th_range">Range</th> 8628 <th class="th_tags">Tags</th> 8629 </tr> 8630 </thead> 8631 8632 <tbody> 8633 8634 8635 8636 8637 8638 8639 8640 8641 8642 8643 <tr class="entry" id="controls_android.demosaic.mode"> 8644 <td class="entry_name 8645 " rowspan="1"> 8646 android.<wbr/>demosaic.<wbr/>mode 8647 </td> 8648 <td class="entry_type"> 8649 <span class="entry_type_name entry_type_name_enum">byte</span> 8650 8651 <span class="entry_type_visibility"> [system]</span> 8652 8653 8654 8655 8656 8657 <ul class="entry_type_enum"> 8658 <li> 8659 <span class="entry_type_enum_name">FAST</span> 8660 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to 8661Bayer RAW output.<wbr/></p></span> 8662 </li> 8663 <li> 8664 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8665 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down 8666relative to raw output.<wbr/></p></span> 8667 </li> 8668 </ul> 8669 8670 </td> <!-- entry_type --> 8671 8672 <td class="entry_description"> 8673 <p>Controls the quality of the demosaicing 8674processing.<wbr/></p> 8675 </td> 8676 8677 <td class="entry_units"> 8678 </td> 8679 8680 <td class="entry_range"> 8681 </td> 8682 8683 <td class="entry_tags"> 8684 <ul class="entry_tags"> 8685 <li><a href="#tag_FUTURE">FUTURE</a></li> 8686 </ul> 8687 </td> 8688 8689 </tr> 8690 8691 8692 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8693 <!-- end of entry --> 8694 8695 8696 8697 <!-- end of kind --> 8698 </tbody> 8699 8700 <!-- end of section --> 8701 <tr><td colspan="6" id="section_edge" class="section">edge</td></tr> 8702 8703 8704 <tr><td colspan="6" class="kind">controls</td></tr> 8705 8706 <thead class="entries_header"> 8707 <tr> 8708 <th class="th_name">Property Name</th> 8709 <th class="th_type">Type</th> 8710 <th class="th_description">Description</th> 8711 <th class="th_units">Units</th> 8712 <th class="th_range">Range</th> 8713 <th class="th_tags">Tags</th> 8714 </tr> 8715 </thead> 8716 8717 <tbody> 8718 8719 8720 8721 8722 8723 8724 8725 8726 8727 8728 <tr class="entry" id="controls_android.edge.mode"> 8729 <td class="entry_name 8730 " rowspan="5"> 8731 android.<wbr/>edge.<wbr/>mode 8732 </td> 8733 <td class="entry_type"> 8734 <span class="entry_type_name entry_type_name_enum">byte</span> 8735 8736 <span class="entry_type_visibility"> [public]</span> 8737 8738 8739 <span class="entry_type_hwlevel">[full] </span> 8740 8741 8742 8743 <ul class="entry_type_enum"> 8744 <li> 8745 <span class="entry_type_enum_name">OFF</span> 8746 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 8747 </li> 8748 <li> 8749 <span class="entry_type_enum_name">FAST</span> 8750 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 8751relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 8752slow down frame rate relative to sensor.<wbr/></p></span> 8753 </li> 8754 <li> 8755 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8756 <span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of possibly reduced output frame rate.<wbr/></p></span> 8757 </li> 8758 <li> 8759 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 8760 <span class="entry_type_enum_optional">[optional]</span> 8761 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/> 8762based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have 8763edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement 8764applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that 8765frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it 8766is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 8767<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 8768with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 8769high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 8770produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 8771high-resolution buffers must not have edge enhancement applied to maximize efficiency of 8772preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 8773buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 8774reasonable preview quality.<wbr/></p> 8775<p>This mode is guaranteed to be supported by devices that support either the 8776YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 8777(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 8778be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 8779 </li> 8780 </ul> 8781 8782 </td> <!-- entry_type --> 8783 8784 <td class="entry_description"> 8785 <p>Operation mode for edge 8786enhancement.<wbr/></p> 8787 </td> 8788 8789 <td class="entry_units"> 8790 </td> 8791 8792 <td class="entry_range"> 8793 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 8794 </td> 8795 8796 <td class="entry_tags"> 8797 <ul class="entry_tags"> 8798 <li><a href="#tag_V1">V1</a></li> 8799 <li><a href="#tag_REPROC">REPROC</a></li> 8800 </ul> 8801 </td> 8802 8803 </tr> 8804 <tr class="entries_header"> 8805 <th class="th_details" colspan="5">Details</th> 8806 </tr> 8807 <tr class="entry_cont"> 8808 <td class="entry_details" colspan="5"> 8809 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 8810no enhancement will be applied by the camera device.<wbr/></p> 8811<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 8812will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 8813camera device will use the highest-quality enhancement algorithms,<wbr/> 8814even if it slows down capture rate.<wbr/> FAST means the camera device will 8815not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 8816edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 8817amount of enhancement applied.<wbr/></p> 8818<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 8819buffer of high-resolution images during preview and reprocess image(s) from that buffer 8820into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 8821edge enhancement to low-resolution streams (below maximum recording resolution) to 8822maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 8823since those will be reprocessed later if necessary.<wbr/></p> 8824<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 8825device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 8826The camera device may adjust its internal edge enhancement parameters for best 8827image quality based on the <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a>,<wbr/> if it is set.<wbr/></p> 8828 </td> 8829 </tr> 8830 8831 <tr class="entries_header"> 8832 <th class="th_details" colspan="5">HAL Implementation Details</th> 8833 </tr> 8834 <tr class="entry_cont"> 8835 <td class="entry_details" colspan="5"> 8836 <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to 8837adjust the internal edge enhancement reduction parameters appropriately to get the best 8838quality images.<wbr/></p> 8839 </td> 8840 </tr> 8841 8842 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8843 <!-- end of entry --> 8844 8845 8846 <tr class="entry" id="controls_android.edge.strength"> 8847 <td class="entry_name 8848 " rowspan="1"> 8849 android.<wbr/>edge.<wbr/>strength 8850 </td> 8851 <td class="entry_type"> 8852 <span class="entry_type_name">byte</span> 8853 8854 <span class="entry_type_visibility"> [system]</span> 8855 8856 8857 8858 8859 8860 8861 </td> <!-- entry_type --> 8862 8863 <td class="entry_description"> 8864 <p>Control the amount of edge enhancement 8865applied to the images</p> 8866 </td> 8867 8868 <td class="entry_units"> 8869 1-10; 10 is maximum sharpening 8870 </td> 8871 8872 <td class="entry_range"> 8873 </td> 8874 8875 <td class="entry_tags"> 8876 <ul class="entry_tags"> 8877 <li><a href="#tag_FUTURE">FUTURE</a></li> 8878 </ul> 8879 </td> 8880 8881 </tr> 8882 8883 8884 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8885 <!-- end of entry --> 8886 8887 8888 8889 <!-- end of kind --> 8890 </tbody> 8891 <tr><td colspan="6" class="kind">static</td></tr> 8892 8893 <thead class="entries_header"> 8894 <tr> 8895 <th class="th_name">Property Name</th> 8896 <th class="th_type">Type</th> 8897 <th class="th_description">Description</th> 8898 <th class="th_units">Units</th> 8899 <th class="th_range">Range</th> 8900 <th class="th_tags">Tags</th> 8901 </tr> 8902 </thead> 8903 8904 <tbody> 8905 8906 8907 8908 8909 8910 8911 8912 8913 8914 8915 <tr class="entry" id="static_android.edge.availableEdgeModes"> 8916 <td class="entry_name 8917 " rowspan="5"> 8918 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes 8919 </td> 8920 <td class="entry_type"> 8921 <span class="entry_type_name">byte</span> 8922 <span class="entry_type_container">x</span> 8923 8924 <span class="entry_type_array"> 8925 n 8926 </span> 8927 <span class="entry_type_visibility"> [public as enumList]</span> 8928 8929 8930 <span class="entry_type_hwlevel">[full] </span> 8931 8932 8933 <div class="entry_type_notes">list of enums</div> 8934 8935 8936 </td> <!-- entry_type --> 8937 8938 <td class="entry_description"> 8939 <p>List of edge enhancement modes for <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> that are supported by this camera 8940device.<wbr/></p> 8941 </td> 8942 8943 <td class="entry_units"> 8944 </td> 8945 8946 <td class="entry_range"> 8947 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p> 8948 </td> 8949 8950 <td class="entry_tags"> 8951 <ul class="entry_tags"> 8952 <li><a href="#tag_V1">V1</a></li> 8953 <li><a href="#tag_REPROC">REPROC</a></li> 8954 </ul> 8955 </td> 8956 8957 </tr> 8958 <tr class="entries_header"> 8959 <th class="th_details" colspan="5">Details</th> 8960 </tr> 8961 <tr class="entry_cont"> 8962 <td class="entry_details" colspan="5"> 8963 <p>Full-capability camera devices must always support OFF; camera devices that support 8964YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will 8965list FAST.<wbr/></p> 8966 </td> 8967 </tr> 8968 8969 <tr class="entries_header"> 8970 <th class="th_details" colspan="5">HAL Implementation Details</th> 8971 </tr> 8972 <tr class="entry_cont"> 8973 <td class="entry_details" colspan="5"> 8974 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available 8975on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 8976That is,<wbr/> if the highest quality implementation on the camera device does not slow down 8977capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 8978 </td> 8979 </tr> 8980 8981 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8982 <!-- end of entry --> 8983 8984 8985 8986 <!-- end of kind --> 8987 </tbody> 8988 <tr><td colspan="6" class="kind">dynamic</td></tr> 8989 8990 <thead class="entries_header"> 8991 <tr> 8992 <th class="th_name">Property Name</th> 8993 <th class="th_type">Type</th> 8994 <th class="th_description">Description</th> 8995 <th class="th_units">Units</th> 8996 <th class="th_range">Range</th> 8997 <th class="th_tags">Tags</th> 8998 </tr> 8999 </thead> 9000 9001 <tbody> 9002 9003 9004 9005 9006 9007 9008 9009 9010 9011 9012 <tr class="entry" id="dynamic_android.edge.mode"> 9013 <td class="entry_name 9014 " rowspan="5"> 9015 android.<wbr/>edge.<wbr/>mode 9016 </td> 9017 <td class="entry_type"> 9018 <span class="entry_type_name entry_type_name_enum">byte</span> 9019 9020 <span class="entry_type_visibility"> [public]</span> 9021 9022 9023 <span class="entry_type_hwlevel">[full] </span> 9024 9025 9026 9027 <ul class="entry_type_enum"> 9028 <li> 9029 <span class="entry_type_enum_name">OFF</span> 9030 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 9031 </li> 9032 <li> 9033 <span class="entry_type_enum_name">FAST</span> 9034 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 9035relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 9036slow down frame rate relative to sensor.<wbr/></p></span> 9037 </li> 9038 <li> 9039 <span class="entry_type_enum_name">HIGH_QUALITY</span> 9040 <span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of possibly reduced output frame rate.<wbr/></p></span> 9041 </li> 9042 <li> 9043 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 9044 <span class="entry_type_enum_optional">[optional]</span> 9045 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/> 9046based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have 9047edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement 9048applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that 9049frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it 9050is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 9051<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 9052with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 9053high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 9054produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 9055high-resolution buffers must not have edge enhancement applied to maximize efficiency of 9056preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 9057buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 9058reasonable preview quality.<wbr/></p> 9059<p>This mode is guaranteed to be supported by devices that support either the 9060YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 9061(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 9062be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 9063 </li> 9064 </ul> 9065 9066 </td> <!-- entry_type --> 9067 9068 <td class="entry_description"> 9069 <p>Operation mode for edge 9070enhancement.<wbr/></p> 9071 </td> 9072 9073 <td class="entry_units"> 9074 </td> 9075 9076 <td class="entry_range"> 9077 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 9078 </td> 9079 9080 <td class="entry_tags"> 9081 <ul class="entry_tags"> 9082 <li><a href="#tag_V1">V1</a></li> 9083 <li><a href="#tag_REPROC">REPROC</a></li> 9084 </ul> 9085 </td> 9086 9087 </tr> 9088 <tr class="entries_header"> 9089 <th class="th_details" colspan="5">Details</th> 9090 </tr> 9091 <tr class="entry_cont"> 9092 <td class="entry_details" colspan="5"> 9093 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 9094no enhancement will be applied by the camera device.<wbr/></p> 9095<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 9096will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 9097camera device will use the highest-quality enhancement algorithms,<wbr/> 9098even if it slows down capture rate.<wbr/> FAST means the camera device will 9099not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 9100edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 9101amount of enhancement applied.<wbr/></p> 9102<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 9103buffer of high-resolution images during preview and reprocess image(s) from that buffer 9104into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 9105edge enhancement to low-resolution streams (below maximum recording resolution) to 9106maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 9107since those will be reprocessed later if necessary.<wbr/></p> 9108<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 9109device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 9110The camera device may adjust its internal edge enhancement parameters for best 9111image quality based on the <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a>,<wbr/> if it is set.<wbr/></p> 9112 </td> 9113 </tr> 9114 9115 <tr class="entries_header"> 9116 <th class="th_details" colspan="5">HAL Implementation Details</th> 9117 </tr> 9118 <tr class="entry_cont"> 9119 <td class="entry_details" colspan="5"> 9120 <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to 9121adjust the internal edge enhancement reduction parameters appropriately to get the best 9122quality images.<wbr/></p> 9123 </td> 9124 </tr> 9125 9126 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9127 <!-- end of entry --> 9128 9129 9130 9131 <!-- end of kind --> 9132 </tbody> 9133 9134 <!-- end of section --> 9135 <tr><td colspan="6" id="section_flash" class="section">flash</td></tr> 9136 9137 9138 <tr><td colspan="6" class="kind">controls</td></tr> 9139 9140 <thead class="entries_header"> 9141 <tr> 9142 <th class="th_name">Property Name</th> 9143 <th class="th_type">Type</th> 9144 <th class="th_description">Description</th> 9145 <th class="th_units">Units</th> 9146 <th class="th_range">Range</th> 9147 <th class="th_tags">Tags</th> 9148 </tr> 9149 </thead> 9150 9151 <tbody> 9152 9153 9154 9155 9156 9157 9158 9159 9160 9161 9162 <tr class="entry" id="controls_android.flash.firingPower"> 9163 <td class="entry_name 9164 " rowspan="3"> 9165 android.<wbr/>flash.<wbr/>firing<wbr/>Power 9166 </td> 9167 <td class="entry_type"> 9168 <span class="entry_type_name">byte</span> 9169 9170 <span class="entry_type_visibility"> [system]</span> 9171 9172 9173 9174 9175 9176 9177 </td> <!-- entry_type --> 9178 9179 <td class="entry_description"> 9180 <p>Power for flash firing/<wbr/>torch</p> 9181 </td> 9182 9183 <td class="entry_units"> 9184 10 is max power; 0 is no flash.<wbr/> Linear 9185 </td> 9186 9187 <td class="entry_range"> 9188 <p>0 - 10</p> 9189 </td> 9190 9191 <td class="entry_tags"> 9192 <ul class="entry_tags"> 9193 <li><a href="#tag_FUTURE">FUTURE</a></li> 9194 </ul> 9195 </td> 9196 9197 </tr> 9198 <tr class="entries_header"> 9199 <th class="th_details" colspan="5">Details</th> 9200 </tr> 9201 <tr class="entry_cont"> 9202 <td class="entry_details" colspan="5"> 9203 <p>Power for snapshot may use a different scale than 9204for torch mode.<wbr/> Only one entry for torch mode will be 9205used</p> 9206 </td> 9207 </tr> 9208 9209 9210 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9211 <!-- end of entry --> 9212 9213 9214 <tr class="entry" id="controls_android.flash.firingTime"> 9215 <td class="entry_name 9216 " rowspan="3"> 9217 android.<wbr/>flash.<wbr/>firing<wbr/>Time 9218 </td> 9219 <td class="entry_type"> 9220 <span class="entry_type_name">int64</span> 9221 9222 <span class="entry_type_visibility"> [system]</span> 9223 9224 9225 9226 9227 9228 9229 </td> <!-- entry_type --> 9230 9231 <td class="entry_description"> 9232 <p>Firing time of flash relative to start of 9233exposure</p> 9234 </td> 9235 9236 <td class="entry_units"> 9237 nanoseconds 9238 </td> 9239 9240 <td class="entry_range"> 9241 <p>0-(exposure time-flash duration)</p> 9242 </td> 9243 9244 <td class="entry_tags"> 9245 <ul class="entry_tags"> 9246 <li><a href="#tag_FUTURE">FUTURE</a></li> 9247 </ul> 9248 </td> 9249 9250 </tr> 9251 <tr class="entries_header"> 9252 <th class="th_details" colspan="5">Details</th> 9253 </tr> 9254 <tr class="entry_cont"> 9255 <td class="entry_details" colspan="5"> 9256 <p>Clamped to (0,<wbr/> exposure time - flash 9257duration).<wbr/></p> 9258 </td> 9259 </tr> 9260 9261 9262 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9263 <!-- end of entry --> 9264 9265 9266 <tr class="entry" id="controls_android.flash.mode"> 9267 <td class="entry_name 9268 " rowspan="3"> 9269 android.<wbr/>flash.<wbr/>mode 9270 </td> 9271 <td class="entry_type"> 9272 <span class="entry_type_name entry_type_name_enum">byte</span> 9273 9274 <span class="entry_type_visibility"> [public]</span> 9275 9276 9277 <span class="entry_type_hwlevel">[legacy] </span> 9278 9279 9280 9281 <ul class="entry_type_enum"> 9282 <li> 9283 <span class="entry_type_enum_name">OFF</span> 9284 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 9285 </li> 9286 <li> 9287 <span class="entry_type_enum_name">SINGLE</span> 9288 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 9289for this capture.<wbr/></p></span> 9290 </li> 9291 <li> 9292 <span class="entry_type_enum_name">TORCH</span> 9293 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 9294 </li> 9295 </ul> 9296 9297 </td> <!-- entry_type --> 9298 9299 <td class="entry_description"> 9300 <p>The desired mode for for the camera device's flash control.<wbr/></p> 9301 </td> 9302 9303 <td class="entry_units"> 9304 </td> 9305 9306 <td class="entry_range"> 9307 </td> 9308 9309 <td class="entry_tags"> 9310 <ul class="entry_tags"> 9311 <li><a href="#tag_BC">BC</a></li> 9312 </ul> 9313 </td> 9314 9315 </tr> 9316 <tr class="entries_header"> 9317 <th class="th_details" colspan="5">Details</th> 9318 </tr> 9319 <tr class="entry_cont"> 9320 <td class="entry_details" colspan="5"> 9321 <p>This control is only effective when flash unit is available 9322(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 9323<p>When this control is used,<wbr/> the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> must be set to ON or OFF.<wbr/> 9324Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 9325ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 9326<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 9327<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 9328device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 9329control should be used along with auto-exposure (AE) precapture metering sequence 9330(<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>),<wbr/> otherwise,<wbr/> the image may be incorrectly exposed.<wbr/></p> 9331<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 9332for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 9333<p>The flash status will be reported by <a href="#dynamic_android.flash.state">android.<wbr/>flash.<wbr/>state</a> in the capture result metadata.<wbr/></p> 9334 </td> 9335 </tr> 9336 9337 9338 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9339 <!-- end of entry --> 9340 9341 9342 9343 <!-- end of kind --> 9344 </tbody> 9345 <tr><td colspan="6" class="kind">static</td></tr> 9346 9347 <thead class="entries_header"> 9348 <tr> 9349 <th class="th_name">Property Name</th> 9350 <th class="th_type">Type</th> 9351 <th class="th_description">Description</th> 9352 <th class="th_units">Units</th> 9353 <th class="th_range">Range</th> 9354 <th class="th_tags">Tags</th> 9355 </tr> 9356 </thead> 9357 9358 <tbody> 9359 9360 9361 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 <tr class="entry" id="static_android.flash.info.available"> 9372 <td class="entry_name 9373 " rowspan="3"> 9374 android.<wbr/>flash.<wbr/>info.<wbr/>available 9375 </td> 9376 <td class="entry_type"> 9377 <span class="entry_type_name entry_type_name_enum">byte</span> 9378 9379 <span class="entry_type_visibility"> [public as boolean]</span> 9380 9381 9382 <span class="entry_type_hwlevel">[legacy] </span> 9383 9384 9385 9386 <ul class="entry_type_enum"> 9387 <li> 9388 <span class="entry_type_enum_name">FALSE</span> 9389 </li> 9390 <li> 9391 <span class="entry_type_enum_name">TRUE</span> 9392 </li> 9393 </ul> 9394 9395 </td> <!-- entry_type --> 9396 9397 <td class="entry_description"> 9398 <p>Whether this camera device has a 9399flash unit.<wbr/></p> 9400 </td> 9401 9402 <td class="entry_units"> 9403 </td> 9404 9405 <td class="entry_range"> 9406 </td> 9407 9408 <td class="entry_tags"> 9409 <ul class="entry_tags"> 9410 <li><a href="#tag_BC">BC</a></li> 9411 </ul> 9412 </td> 9413 9414 </tr> 9415 <tr class="entries_header"> 9416 <th class="th_details" colspan="5">Details</th> 9417 </tr> 9418 <tr class="entry_cont"> 9419 <td class="entry_details" colspan="5"> 9420 <p>Will be <code>false</code> if no flash is available.<wbr/></p> 9421<p>If there is no flash unit,<wbr/> none of the flash controls do 9422anything.<wbr/></p> 9423 </td> 9424 </tr> 9425 9426 9427 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9428 <!-- end of entry --> 9429 9430 9431 <tr class="entry" id="static_android.flash.info.chargeDuration"> 9432 <td class="entry_name 9433 " rowspan="3"> 9434 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration 9435 </td> 9436 <td class="entry_type"> 9437 <span class="entry_type_name">int64</span> 9438 9439 <span class="entry_type_visibility"> [system]</span> 9440 9441 9442 9443 9444 9445 9446 </td> <!-- entry_type --> 9447 9448 <td class="entry_description"> 9449 <p>Time taken before flash can fire 9450again</p> 9451 </td> 9452 9453 <td class="entry_units"> 9454 nanoseconds 9455 </td> 9456 9457 <td class="entry_range"> 9458 <p>0-1e9</p> 9459 </td> 9460 9461 <td class="entry_tags"> 9462 <ul class="entry_tags"> 9463 <li><a href="#tag_FUTURE">FUTURE</a></li> 9464 </ul> 9465 </td> 9466 9467 </tr> 9468 <tr class="entries_header"> 9469 <th class="th_details" colspan="5">Details</th> 9470 </tr> 9471 <tr class="entry_cont"> 9472 <td class="entry_details" colspan="5"> 9473 <p>1 second too long/<wbr/>too short for recharge? Should 9474this be power-dependent?</p> 9475 </td> 9476 </tr> 9477 9478 9479 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9480 <!-- end of entry --> 9481 9482 9483 9484 9485 9486 <tr class="entry" id="static_android.flash.colorTemperature"> 9487 <td class="entry_name 9488 " rowspan="1"> 9489 android.<wbr/>flash.<wbr/>color<wbr/>Temperature 9490 </td> 9491 <td class="entry_type"> 9492 <span class="entry_type_name">byte</span> 9493 9494 <span class="entry_type_visibility"> [system]</span> 9495 9496 9497 9498 9499 9500 9501 </td> <!-- entry_type --> 9502 9503 <td class="entry_description"> 9504 <p>The x,<wbr/>y whitepoint of the 9505flash</p> 9506 </td> 9507 9508 <td class="entry_units"> 9509 pair of floats 9510 </td> 9511 9512 <td class="entry_range"> 9513 <p>0-1 for both</p> 9514 </td> 9515 9516 <td class="entry_tags"> 9517 <ul class="entry_tags"> 9518 <li><a href="#tag_FUTURE">FUTURE</a></li> 9519 </ul> 9520 </td> 9521 9522 </tr> 9523 9524 9525 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9526 <!-- end of entry --> 9527 9528 9529 <tr class="entry" id="static_android.flash.maxEnergy"> 9530 <td class="entry_name 9531 " rowspan="1"> 9532 android.<wbr/>flash.<wbr/>max<wbr/>Energy 9533 </td> 9534 <td class="entry_type"> 9535 <span class="entry_type_name">byte</span> 9536 9537 <span class="entry_type_visibility"> [system]</span> 9538 9539 9540 9541 9542 9543 9544 </td> <!-- entry_type --> 9545 9546 <td class="entry_description"> 9547 <p>Max energy output of the flash for a full 9548power single flash</p> 9549 </td> 9550 9551 <td class="entry_units"> 9552 lumen-seconds 9553 </td> 9554 9555 <td class="entry_range"> 9556 <p>>= 0</p> 9557 </td> 9558 9559 <td class="entry_tags"> 9560 <ul class="entry_tags"> 9561 <li><a href="#tag_FUTURE">FUTURE</a></li> 9562 </ul> 9563 </td> 9564 9565 </tr> 9566 9567 9568 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9569 <!-- end of entry --> 9570 9571 9572 9573 <!-- end of kind --> 9574 </tbody> 9575 <tr><td colspan="6" class="kind">dynamic</td></tr> 9576 9577 <thead class="entries_header"> 9578 <tr> 9579 <th class="th_name">Property Name</th> 9580 <th class="th_type">Type</th> 9581 <th class="th_description">Description</th> 9582 <th class="th_units">Units</th> 9583 <th class="th_range">Range</th> 9584 <th class="th_tags">Tags</th> 9585 </tr> 9586 </thead> 9587 9588 <tbody> 9589 9590 9591 9592 9593 9594 9595 9596 9597 9598 9599 <tr class="entry" id="dynamic_android.flash.firingPower"> 9600 <td class="entry_name 9601 " rowspan="3"> 9602 android.<wbr/>flash.<wbr/>firing<wbr/>Power 9603 </td> 9604 <td class="entry_type"> 9605 <span class="entry_type_name">byte</span> 9606 9607 <span class="entry_type_visibility"> [system]</span> 9608 9609 9610 9611 9612 9613 9614 </td> <!-- entry_type --> 9615 9616 <td class="entry_description"> 9617 <p>Power for flash firing/<wbr/>torch</p> 9618 </td> 9619 9620 <td class="entry_units"> 9621 10 is max power; 0 is no flash.<wbr/> Linear 9622 </td> 9623 9624 <td class="entry_range"> 9625 <p>0 - 10</p> 9626 </td> 9627 9628 <td class="entry_tags"> 9629 <ul class="entry_tags"> 9630 <li><a href="#tag_FUTURE">FUTURE</a></li> 9631 </ul> 9632 </td> 9633 9634 </tr> 9635 <tr class="entries_header"> 9636 <th class="th_details" colspan="5">Details</th> 9637 </tr> 9638 <tr class="entry_cont"> 9639 <td class="entry_details" colspan="5"> 9640 <p>Power for snapshot may use a different scale than 9641for torch mode.<wbr/> Only one entry for torch mode will be 9642used</p> 9643 </td> 9644 </tr> 9645 9646 9647 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9648 <!-- end of entry --> 9649 9650 9651 <tr class="entry" id="dynamic_android.flash.firingTime"> 9652 <td class="entry_name 9653 " rowspan="3"> 9654 android.<wbr/>flash.<wbr/>firing<wbr/>Time 9655 </td> 9656 <td class="entry_type"> 9657 <span class="entry_type_name">int64</span> 9658 9659 <span class="entry_type_visibility"> [system]</span> 9660 9661 9662 9663 9664 9665 9666 </td> <!-- entry_type --> 9667 9668 <td class="entry_description"> 9669 <p>Firing time of flash relative to start of 9670exposure</p> 9671 </td> 9672 9673 <td class="entry_units"> 9674 nanoseconds 9675 </td> 9676 9677 <td class="entry_range"> 9678 <p>0-(exposure time-flash duration)</p> 9679 </td> 9680 9681 <td class="entry_tags"> 9682 <ul class="entry_tags"> 9683 <li><a href="#tag_FUTURE">FUTURE</a></li> 9684 </ul> 9685 </td> 9686 9687 </tr> 9688 <tr class="entries_header"> 9689 <th class="th_details" colspan="5">Details</th> 9690 </tr> 9691 <tr class="entry_cont"> 9692 <td class="entry_details" colspan="5"> 9693 <p>Clamped to (0,<wbr/> exposure time - flash 9694duration).<wbr/></p> 9695 </td> 9696 </tr> 9697 9698 9699 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9700 <!-- end of entry --> 9701 9702 9703 <tr class="entry" id="dynamic_android.flash.mode"> 9704 <td class="entry_name 9705 " rowspan="3"> 9706 android.<wbr/>flash.<wbr/>mode 9707 </td> 9708 <td class="entry_type"> 9709 <span class="entry_type_name entry_type_name_enum">byte</span> 9710 9711 <span class="entry_type_visibility"> [public]</span> 9712 9713 9714 <span class="entry_type_hwlevel">[legacy] </span> 9715 9716 9717 9718 <ul class="entry_type_enum"> 9719 <li> 9720 <span class="entry_type_enum_name">OFF</span> 9721 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 9722 </li> 9723 <li> 9724 <span class="entry_type_enum_name">SINGLE</span> 9725 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 9726for this capture.<wbr/></p></span> 9727 </li> 9728 <li> 9729 <span class="entry_type_enum_name">TORCH</span> 9730 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 9731 </li> 9732 </ul> 9733 9734 </td> <!-- entry_type --> 9735 9736 <td class="entry_description"> 9737 <p>The desired mode for for the camera device's flash control.<wbr/></p> 9738 </td> 9739 9740 <td class="entry_units"> 9741 </td> 9742 9743 <td class="entry_range"> 9744 </td> 9745 9746 <td class="entry_tags"> 9747 <ul class="entry_tags"> 9748 <li><a href="#tag_BC">BC</a></li> 9749 </ul> 9750 </td> 9751 9752 </tr> 9753 <tr class="entries_header"> 9754 <th class="th_details" colspan="5">Details</th> 9755 </tr> 9756 <tr class="entry_cont"> 9757 <td class="entry_details" colspan="5"> 9758 <p>This control is only effective when flash unit is available 9759(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 9760<p>When this control is used,<wbr/> the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> must be set to ON or OFF.<wbr/> 9761Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 9762ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 9763<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 9764<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 9765device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 9766control should be used along with auto-exposure (AE) precapture metering sequence 9767(<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>),<wbr/> otherwise,<wbr/> the image may be incorrectly exposed.<wbr/></p> 9768<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 9769for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 9770<p>The flash status will be reported by <a href="#dynamic_android.flash.state">android.<wbr/>flash.<wbr/>state</a> in the capture result metadata.<wbr/></p> 9771 </td> 9772 </tr> 9773 9774 9775 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9776 <!-- end of entry --> 9777 9778 9779 <tr class="entry" id="dynamic_android.flash.state"> 9780 <td class="entry_name 9781 " rowspan="3"> 9782 android.<wbr/>flash.<wbr/>state 9783 </td> 9784 <td class="entry_type"> 9785 <span class="entry_type_name entry_type_name_enum">byte</span> 9786 9787 <span class="entry_type_visibility"> [public]</span> 9788 9789 9790 <span class="entry_type_hwlevel">[limited] </span> 9791 9792 9793 9794 <ul class="entry_type_enum"> 9795 <li> 9796 <span class="entry_type_enum_name">UNAVAILABLE</span> 9797 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span> 9798 </li> 9799 <li> 9800 <span class="entry_type_enum_name">CHARGING</span> 9801 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span> 9802 </li> 9803 <li> 9804 <span class="entry_type_enum_name">READY</span> 9805 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span> 9806 </li> 9807 <li> 9808 <span class="entry_type_enum_name">FIRED</span> 9809 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span> 9810 </li> 9811 <li> 9812 <span class="entry_type_enum_name">PARTIAL</span> 9813 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p> 9814<p>This is usually due to the next or previous frame having 9815the flash fire,<wbr/> and the flash spilling into this capture 9816due to hardware limitations.<wbr/></p></span> 9817 </li> 9818 </ul> 9819 9820 </td> <!-- entry_type --> 9821 9822 <td class="entry_description"> 9823 <p>Current state of the flash 9824unit.<wbr/></p> 9825 </td> 9826 9827 <td class="entry_units"> 9828 </td> 9829 9830 <td class="entry_range"> 9831 </td> 9832 9833 <td class="entry_tags"> 9834 </td> 9835 9836 </tr> 9837 <tr class="entries_header"> 9838 <th class="th_details" colspan="5">Details</th> 9839 </tr> 9840 <tr class="entry_cont"> 9841 <td class="entry_details" colspan="5"> 9842 <p>When the camera device doesn't have flash unit 9843(i.<wbr/>e.<wbr/> <code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == false</code>),<wbr/> this state will always be UNAVAILABLE.<wbr/> 9844Other states indicate the current flash status.<wbr/></p> 9845<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p> 9846<ul> 9847<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li> 9848<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH 9849 will always return FIRED.<wbr/></li> 9850<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH 9851 will always return FIRED.<wbr/></li> 9852</ul> 9853<p>In all other conditions the state will not be available on 9854LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p> 9855 </td> 9856 </tr> 9857 9858 9859 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9860 <!-- end of entry --> 9861 9862 9863 9864 <!-- end of kind --> 9865 </tbody> 9866 9867 <!-- end of section --> 9868 <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr> 9869 9870 9871 <tr><td colspan="6" class="kind">controls</td></tr> 9872 9873 <thead class="entries_header"> 9874 <tr> 9875 <th class="th_name">Property Name</th> 9876 <th class="th_type">Type</th> 9877 <th class="th_description">Description</th> 9878 <th class="th_units">Units</th> 9879 <th class="th_range">Range</th> 9880 <th class="th_tags">Tags</th> 9881 </tr> 9882 </thead> 9883 9884 <tbody> 9885 9886 9887 9888 9889 9890 9891 9892 9893 9894 9895 <tr class="entry" id="controls_android.hotPixel.mode"> 9896 <td class="entry_name 9897 " rowspan="3"> 9898 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 9899 </td> 9900 <td class="entry_type"> 9901 <span class="entry_type_name entry_type_name_enum">byte</span> 9902 9903 <span class="entry_type_visibility"> [public]</span> 9904 9905 9906 9907 9908 9909 <ul class="entry_type_enum"> 9910 <li> 9911 <span class="entry_type_enum_name">OFF</span> 9912 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 9913<p>The frame rate must not be reduced relative to sensor raw output 9914for this option.<wbr/></p> 9915<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span> 9916 </li> 9917 <li> 9918 <span class="entry_type_enum_name">FAST</span> 9919 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 9920rate relative to sensor raw output.<wbr/></p> 9921<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span> 9922 </li> 9923 <li> 9924 <span class="entry_type_enum_name">HIGH_QUALITY</span> 9925 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 9926of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 9927<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span> 9928 </li> 9929 </ul> 9930 9931 </td> <!-- entry_type --> 9932 9933 <td class="entry_description"> 9934 <p>Operational mode for hot pixel correction.<wbr/></p> 9935 </td> 9936 9937 <td class="entry_units"> 9938 </td> 9939 9940 <td class="entry_range"> 9941 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 9942 </td> 9943 9944 <td class="entry_tags"> 9945 <ul class="entry_tags"> 9946 <li><a href="#tag_V1">V1</a></li> 9947 <li><a href="#tag_RAW">RAW</a></li> 9948 </ul> 9949 </td> 9950 9951 </tr> 9952 <tr class="entries_header"> 9953 <th class="th_details" colspan="5">Details</th> 9954 </tr> 9955 <tr class="entry_cont"> 9956 <td class="entry_details" colspan="5"> 9957 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 9958that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 9959are stuck at an arbitrary value or are oversensitive).<wbr/></p> 9960 </td> 9961 </tr> 9962 9963 9964 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9965 <!-- end of entry --> 9966 9967 9968 9969 <!-- end of kind --> 9970 </tbody> 9971 <tr><td colspan="6" class="kind">static</td></tr> 9972 9973 <thead class="entries_header"> 9974 <tr> 9975 <th class="th_name">Property Name</th> 9976 <th class="th_type">Type</th> 9977 <th class="th_description">Description</th> 9978 <th class="th_units">Units</th> 9979 <th class="th_range">Range</th> 9980 <th class="th_tags">Tags</th> 9981 </tr> 9982 </thead> 9983 9984 <tbody> 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 9995 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes"> 9996 <td class="entry_name 9997 " rowspan="5"> 9998 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes 9999 </td> 10000 <td class="entry_type"> 10001 <span class="entry_type_name">byte</span> 10002 <span class="entry_type_container">x</span> 10003 10004 <span class="entry_type_array"> 10005 n 10006 </span> 10007 <span class="entry_type_visibility"> [public as enumList]</span> 10008 10009 10010 10011 10012 <div class="entry_type_notes">list of enums</div> 10013 10014 10015 </td> <!-- entry_type --> 10016 10017 <td class="entry_description"> 10018 <p>List of hot pixel correction modes for <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a> that are supported by this 10019camera device.<wbr/></p> 10020 </td> 10021 10022 <td class="entry_units"> 10023 </td> 10024 10025 <td class="entry_range"> 10026 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p> 10027 </td> 10028 10029 <td class="entry_tags"> 10030 <ul class="entry_tags"> 10031 <li><a href="#tag_V1">V1</a></li> 10032 <li><a href="#tag_RAW">RAW</a></li> 10033 </ul> 10034 </td> 10035 10036 </tr> 10037 <tr class="entries_header"> 10038 <th class="th_details" colspan="5">Details</th> 10039 </tr> 10040 <tr class="entry_cont"> 10041 <td class="entry_details" colspan="5"> 10042 <p>FULL mode camera devices will always support FAST.<wbr/></p> 10043 </td> 10044 </tr> 10045 10046 <tr class="entries_header"> 10047 <th class="th_details" colspan="5">HAL Implementation Details</th> 10048 </tr> 10049 <tr class="entry_cont"> 10050 <td class="entry_details" colspan="5"> 10051 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot 10052pixels than actual pixels on the camera sensor.<wbr/> 10053HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available 10054on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 10055That is,<wbr/> if the highest quality implementation on the camera device does not slow down 10056capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 10057 </td> 10058 </tr> 10059 10060 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10061 <!-- end of entry --> 10062 10063 10064 10065 <!-- end of kind --> 10066 </tbody> 10067 <tr><td colspan="6" class="kind">dynamic</td></tr> 10068 10069 <thead class="entries_header"> 10070 <tr> 10071 <th class="th_name">Property Name</th> 10072 <th class="th_type">Type</th> 10073 <th class="th_description">Description</th> 10074 <th class="th_units">Units</th> 10075 <th class="th_range">Range</th> 10076 <th class="th_tags">Tags</th> 10077 </tr> 10078 </thead> 10079 10080 <tbody> 10081 10082 10083 10084 10085 10086 10087 10088 10089 10090 10091 <tr class="entry" id="dynamic_android.hotPixel.mode"> 10092 <td class="entry_name 10093 " rowspan="3"> 10094 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 10095 </td> 10096 <td class="entry_type"> 10097 <span class="entry_type_name entry_type_name_enum">byte</span> 10098 10099 <span class="entry_type_visibility"> [public]</span> 10100 10101 10102 10103 10104 10105 <ul class="entry_type_enum"> 10106 <li> 10107 <span class="entry_type_enum_name">OFF</span> 10108 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 10109<p>The frame rate must not be reduced relative to sensor raw output 10110for this option.<wbr/></p> 10111<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span> 10112 </li> 10113 <li> 10114 <span class="entry_type_enum_name">FAST</span> 10115 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 10116rate relative to sensor raw output.<wbr/></p> 10117<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span> 10118 </li> 10119 <li> 10120 <span class="entry_type_enum_name">HIGH_QUALITY</span> 10121 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 10122of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 10123<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span> 10124 </li> 10125 </ul> 10126 10127 </td> <!-- entry_type --> 10128 10129 <td class="entry_description"> 10130 <p>Operational mode for hot pixel correction.<wbr/></p> 10131 </td> 10132 10133 <td class="entry_units"> 10134 </td> 10135 10136 <td class="entry_range"> 10137 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 10138 </td> 10139 10140 <td class="entry_tags"> 10141 <ul class="entry_tags"> 10142 <li><a href="#tag_V1">V1</a></li> 10143 <li><a href="#tag_RAW">RAW</a></li> 10144 </ul> 10145 </td> 10146 10147 </tr> 10148 <tr class="entries_header"> 10149 <th class="th_details" colspan="5">Details</th> 10150 </tr> 10151 <tr class="entry_cont"> 10152 <td class="entry_details" colspan="5"> 10153 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 10154that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 10155are stuck at an arbitrary value or are oversensitive).<wbr/></p> 10156 </td> 10157 </tr> 10158 10159 10160 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10161 <!-- end of entry --> 10162 10163 10164 10165 <!-- end of kind --> 10166 </tbody> 10167 10168 <!-- end of section --> 10169 <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr> 10170 10171 10172 <tr><td colspan="6" class="kind">controls</td></tr> 10173 10174 <thead class="entries_header"> 10175 <tr> 10176 <th class="th_name">Property Name</th> 10177 <th class="th_type">Type</th> 10178 <th class="th_description">Description</th> 10179 <th class="th_units">Units</th> 10180 <th class="th_range">Range</th> 10181 <th class="th_tags">Tags</th> 10182 </tr> 10183 </thead> 10184 10185 <tbody> 10186 10187 10188 10189 10190 10191 10192 10193 10194 10195 10196 <tr class="entry" id="controls_android.jpeg.gpsLocation"> 10197 <td class="entry_name 10198 " rowspan="3"> 10199 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 10200 </td> 10201 <td class="entry_type"> 10202 <span class="entry_type_name">byte</span> 10203 10204 <span class="entry_type_visibility"> [public as location]</span> 10205 10206 <span class="entry_type_synthetic">[synthetic] </span> 10207 10208 <span class="entry_type_hwlevel">[legacy] </span> 10209 10210 10211 10212 10213 </td> <!-- entry_type --> 10214 10215 <td class="entry_description"> 10216 <p>A location object to use when generating image GPS metadata.<wbr/></p> 10217 </td> 10218 10219 <td class="entry_units"> 10220 </td> 10221 10222 <td class="entry_range"> 10223 </td> 10224 10225 <td class="entry_tags"> 10226 </td> 10227 10228 </tr> 10229 <tr class="entries_header"> 10230 <th class="th_details" colspan="5">Details</th> 10231 </tr> 10232 <tr class="entry_cont"> 10233 <td class="entry_details" colspan="5"> 10234 <p>Setting a location object in a request will include the GPS coordinates of the location 10235into any JPEG images captured based on the request.<wbr/> These coordinates can then be 10236viewed by anyone who receives the JPEG image.<wbr/></p> 10237 </td> 10238 </tr> 10239 10240 10241 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10242 <!-- end of entry --> 10243 10244 10245 <tr class="entry" id="controls_android.jpeg.gpsCoordinates"> 10246 <td class="entry_name 10247 " rowspan="1"> 10248 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 10249 </td> 10250 <td class="entry_type"> 10251 <span class="entry_type_name">double</span> 10252 <span class="entry_type_container">x</span> 10253 10254 <span class="entry_type_array"> 10255 3 10256 </span> 10257 <span class="entry_type_visibility"> [hidden]</span> 10258 10259 10260 <span class="entry_type_hwlevel">[legacy] </span> 10261 10262 10263 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 10264 10265 10266 </td> <!-- entry_type --> 10267 10268 <td class="entry_description"> 10269 <p>GPS coordinates to include in output JPEG 10270EXIF.<wbr/></p> 10271 </td> 10272 10273 <td class="entry_units"> 10274 </td> 10275 10276 <td class="entry_range"> 10277 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 10278 </td> 10279 10280 <td class="entry_tags"> 10281 <ul class="entry_tags"> 10282 <li><a href="#tag_BC">BC</a></li> 10283 </ul> 10284 </td> 10285 10286 </tr> 10287 10288 10289 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10290 <!-- end of entry --> 10291 10292 10293 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod"> 10294 <td class="entry_name 10295 " rowspan="1"> 10296 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 10297 </td> 10298 <td class="entry_type"> 10299 <span class="entry_type_name">byte</span> 10300 10301 <span class="entry_type_visibility"> [hidden as string]</span> 10302 10303 10304 <span class="entry_type_hwlevel">[legacy] </span> 10305 10306 10307 10308 10309 </td> <!-- entry_type --> 10310 10311 <td class="entry_description"> 10312 <p>32 characters describing GPS algorithm to 10313include in EXIF.<wbr/></p> 10314 </td> 10315 10316 <td class="entry_units"> 10317 UTF-8 null-terminated string 10318 </td> 10319 10320 <td class="entry_range"> 10321 </td> 10322 10323 <td class="entry_tags"> 10324 <ul class="entry_tags"> 10325 <li><a href="#tag_BC">BC</a></li> 10326 </ul> 10327 </td> 10328 10329 </tr> 10330 10331 10332 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10333 <!-- end of entry --> 10334 10335 10336 <tr class="entry" id="controls_android.jpeg.gpsTimestamp"> 10337 <td class="entry_name 10338 " rowspan="1"> 10339 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 10340 </td> 10341 <td class="entry_type"> 10342 <span class="entry_type_name">int64</span> 10343 10344 <span class="entry_type_visibility"> [hidden]</span> 10345 10346 10347 <span class="entry_type_hwlevel">[legacy] </span> 10348 10349 10350 10351 10352 </td> <!-- entry_type --> 10353 10354 <td class="entry_description"> 10355 <p>Time GPS fix was made to include in 10356EXIF.<wbr/></p> 10357 </td> 10358 10359 <td class="entry_units"> 10360 UTC in seconds since January 1,<wbr/> 1970 10361 </td> 10362 10363 <td class="entry_range"> 10364 </td> 10365 10366 <td class="entry_tags"> 10367 <ul class="entry_tags"> 10368 <li><a href="#tag_BC">BC</a></li> 10369 </ul> 10370 </td> 10371 10372 </tr> 10373 10374 10375 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10376 <!-- end of entry --> 10377 10378 10379 <tr class="entry" id="controls_android.jpeg.orientation"> 10380 <td class="entry_name 10381 " rowspan="3"> 10382 android.<wbr/>jpeg.<wbr/>orientation 10383 </td> 10384 <td class="entry_type"> 10385 <span class="entry_type_name">int32</span> 10386 10387 <span class="entry_type_visibility"> [public]</span> 10388 10389 10390 <span class="entry_type_hwlevel">[legacy] </span> 10391 10392 10393 10394 10395 </td> <!-- entry_type --> 10396 10397 <td class="entry_description"> 10398 <p>The orientation for a JPEG image.<wbr/></p> 10399 </td> 10400 10401 <td class="entry_units"> 10402 Degrees in multiples of 90 10403 </td> 10404 10405 <td class="entry_range"> 10406 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 10407 </td> 10408 10409 <td class="entry_tags"> 10410 <ul class="entry_tags"> 10411 <li><a href="#tag_BC">BC</a></li> 10412 </ul> 10413 </td> 10414 10415 </tr> 10416 <tr class="entries_header"> 10417 <th class="th_details" colspan="5">Details</th> 10418 </tr> 10419 <tr class="entry_cont"> 10420 <td class="entry_details" colspan="5"> 10421 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 10422to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 10423upright.<wbr/></p> 10424<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 10425rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 10426the thumbnail data will also be rotated.<wbr/></p> 10427<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 10428by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 10429<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following 10430sample code may be used:</p> 10431<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 10432 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 10433 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 10434 10435 //<wbr/> Round device orientation to a multiple of 90 10436 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 10437 10438 //<wbr/> Reverse device orientation for front-facing cameras 10439 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 10440 if (facingFront) deviceOrientation = -deviceOrientation; 10441 10442 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 10443 //<wbr/> the image upright relative to the device orientation 10444 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 10445 10446 return jpegOrientation; 10447} 10448</code></pre> 10449 </td> 10450 </tr> 10451 10452 10453 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10454 <!-- end of entry --> 10455 10456 10457 <tr class="entry" id="controls_android.jpeg.quality"> 10458 <td class="entry_name 10459 " rowspan="3"> 10460 android.<wbr/>jpeg.<wbr/>quality 10461 </td> 10462 <td class="entry_type"> 10463 <span class="entry_type_name">byte</span> 10464 10465 <span class="entry_type_visibility"> [public]</span> 10466 10467 10468 <span class="entry_type_hwlevel">[legacy] </span> 10469 10470 10471 10472 10473 </td> <!-- entry_type --> 10474 10475 <td class="entry_description"> 10476 <p>Compression quality of the final JPEG 10477image.<wbr/></p> 10478 </td> 10479 10480 <td class="entry_units"> 10481 </td> 10482 10483 <td class="entry_range"> 10484 <p>1-100; larger is higher quality</p> 10485 </td> 10486 10487 <td class="entry_tags"> 10488 <ul class="entry_tags"> 10489 <li><a href="#tag_BC">BC</a></li> 10490 </ul> 10491 </td> 10492 10493 </tr> 10494 <tr class="entries_header"> 10495 <th class="th_details" colspan="5">Details</th> 10496 </tr> 10497 <tr class="entry_cont"> 10498 <td class="entry_details" colspan="5"> 10499 <p>85-95 is typical usage range.<wbr/></p> 10500 </td> 10501 </tr> 10502 10503 10504 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10505 <!-- end of entry --> 10506 10507 10508 <tr class="entry" id="controls_android.jpeg.thumbnailQuality"> 10509 <td class="entry_name 10510 " rowspan="1"> 10511 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 10512 </td> 10513 <td class="entry_type"> 10514 <span class="entry_type_name">byte</span> 10515 10516 <span class="entry_type_visibility"> [public]</span> 10517 10518 10519 <span class="entry_type_hwlevel">[legacy] </span> 10520 10521 10522 10523 10524 </td> <!-- entry_type --> 10525 10526 <td class="entry_description"> 10527 <p>Compression quality of JPEG 10528thumbnail.<wbr/></p> 10529 </td> 10530 10531 <td class="entry_units"> 10532 </td> 10533 10534 <td class="entry_range"> 10535 <p>1-100; larger is higher quality</p> 10536 </td> 10537 10538 <td class="entry_tags"> 10539 <ul class="entry_tags"> 10540 <li><a href="#tag_BC">BC</a></li> 10541 </ul> 10542 </td> 10543 10544 </tr> 10545 10546 10547 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10548 <!-- end of entry --> 10549 10550 10551 <tr class="entry" id="controls_android.jpeg.thumbnailSize"> 10552 <td class="entry_name 10553 " rowspan="5"> 10554 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 10555 </td> 10556 <td class="entry_type"> 10557 <span class="entry_type_name">int32</span> 10558 <span class="entry_type_container">x</span> 10559 10560 <span class="entry_type_array"> 10561 2 10562 </span> 10563 <span class="entry_type_visibility"> [public as size]</span> 10564 10565 10566 <span class="entry_type_hwlevel">[legacy] </span> 10567 10568 10569 10570 10571 </td> <!-- entry_type --> 10572 10573 <td class="entry_description"> 10574 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 10575 </td> 10576 10577 <td class="entry_units"> 10578 </td> 10579 10580 <td class="entry_range"> 10581 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 10582 </td> 10583 10584 <td class="entry_tags"> 10585 <ul class="entry_tags"> 10586 <li><a href="#tag_BC">BC</a></li> 10587 </ul> 10588 </td> 10589 10590 </tr> 10591 <tr class="entries_header"> 10592 <th class="th_details" colspan="5">Details</th> 10593 </tr> 10594 <tr class="entry_cont"> 10595 <td class="entry_details" colspan="5"> 10596 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 10597but the captured JPEG will still be a valid image.<wbr/></p> 10598<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 10599should have the same aspect ratio as the main JPEG output.<wbr/></p> 10600<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 10601ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 10602For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1060316:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 10604generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 10605Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 10606<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 10607the camera device will handle thumbnail rotation in one of the following ways:</p> 10608<ul> 10609<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 10610 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 10611<li>Rotate the jpeg and thumbnail image data and not set 10612 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 10613 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in 10614 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 10615 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 10616 size.<wbr/></li> 10617</ul> 10618 </td> 10619 </tr> 10620 10621 <tr class="entries_header"> 10622 <th class="th_details" colspan="5">HAL Implementation Details</th> 10623 </tr> 10624 <tr class="entry_cont"> 10625 <td class="entry_details" colspan="5"> 10626 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 10627The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 10628The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 10629thumbnail image cropping.<wbr/></p> 10630 </td> 10631 </tr> 10632 10633 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10634 <!-- end of entry --> 10635 10636 10637 10638 <!-- end of kind --> 10639 </tbody> 10640 <tr><td colspan="6" class="kind">static</td></tr> 10641 10642 <thead class="entries_header"> 10643 <tr> 10644 <th class="th_name">Property Name</th> 10645 <th class="th_type">Type</th> 10646 <th class="th_description">Description</th> 10647 <th class="th_units">Units</th> 10648 <th class="th_range">Range</th> 10649 <th class="th_tags">Tags</th> 10650 </tr> 10651 </thead> 10652 10653 <tbody> 10654 10655 10656 10657 10658 10659 10660 10661 10662 10663 10664 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes"> 10665 <td class="entry_name 10666 " rowspan="3"> 10667 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes 10668 </td> 10669 <td class="entry_type"> 10670 <span class="entry_type_name">int32</span> 10671 <span class="entry_type_container">x</span> 10672 10673 <span class="entry_type_array"> 10674 2 x n 10675 </span> 10676 <span class="entry_type_visibility"> [public as size]</span> 10677 10678 10679 <span class="entry_type_hwlevel">[legacy] </span> 10680 10681 10682 10683 10684 </td> <!-- entry_type --> 10685 10686 <td class="entry_description"> 10687 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this 10688camera device.<wbr/></p> 10689 </td> 10690 10691 <td class="entry_units"> 10692 </td> 10693 10694 <td class="entry_range"> 10695 </td> 10696 10697 <td class="entry_tags"> 10698 <ul class="entry_tags"> 10699 <li><a href="#tag_BC">BC</a></li> 10700 </ul> 10701 </td> 10702 10703 </tr> 10704 <tr class="entries_header"> 10705 <th class="th_details" colspan="5">Details</th> 10706 </tr> 10707 <tr class="entry_cont"> 10708 <td class="entry_details" colspan="5"> 10709 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no 10710thumbnail should be generated.<wbr/></p> 10711<p>Below condiditions will be satisfied for this size list:</p> 10712<ul> 10713<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/> 10714If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li> 10715<li>The aspect ratio of the largest thumbnail size will be same as the 10716aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 10717The largest size is defined as the size that has the largest pixel area 10718in a given size list.<wbr/></li> 10719<li>Each output JPEG size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have at least 10720one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> 10721and vice versa.<wbr/></li> 10722<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li> 10723</ul> 10724 </td> 10725 </tr> 10726 10727 10728 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10729 <!-- end of entry --> 10730 10731 10732 <tr class="entry" id="static_android.jpeg.maxSize"> 10733 <td class="entry_name 10734 " rowspan="3"> 10735 android.<wbr/>jpeg.<wbr/>max<wbr/>Size 10736 </td> 10737 <td class="entry_type"> 10738 <span class="entry_type_name">int32</span> 10739 10740 <span class="entry_type_visibility"> [system]</span> 10741 10742 10743 10744 10745 10746 10747 </td> <!-- entry_type --> 10748 10749 <td class="entry_description"> 10750 <p>Maximum size in bytes for the compressed 10751JPEG buffer</p> 10752 </td> 10753 10754 <td class="entry_units"> 10755 </td> 10756 10757 <td class="entry_range"> 10758 <p>Must be large enough to fit any JPEG produced by 10759the camera</p> 10760 </td> 10761 10762 <td class="entry_tags"> 10763 </td> 10764 10765 </tr> 10766 <tr class="entries_header"> 10767 <th class="th_details" colspan="5">Details</th> 10768 </tr> 10769 <tr class="entry_cont"> 10770 <td class="entry_details" colspan="5"> 10771 <p>This is used for sizing the gralloc buffers for 10772JPEG</p> 10773 </td> 10774 </tr> 10775 10776 10777 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10778 <!-- end of entry --> 10779 10780 10781 10782 <!-- end of kind --> 10783 </tbody> 10784 <tr><td colspan="6" class="kind">dynamic</td></tr> 10785 10786 <thead class="entries_header"> 10787 <tr> 10788 <th class="th_name">Property Name</th> 10789 <th class="th_type">Type</th> 10790 <th class="th_description">Description</th> 10791 <th class="th_units">Units</th> 10792 <th class="th_range">Range</th> 10793 <th class="th_tags">Tags</th> 10794 </tr> 10795 </thead> 10796 10797 <tbody> 10798 10799 10800 10801 10802 10803 10804 10805 10806 10807 10808 <tr class="entry" id="dynamic_android.jpeg.gpsLocation"> 10809 <td class="entry_name 10810 " rowspan="3"> 10811 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 10812 </td> 10813 <td class="entry_type"> 10814 <span class="entry_type_name">byte</span> 10815 10816 <span class="entry_type_visibility"> [public as location]</span> 10817 10818 <span class="entry_type_synthetic">[synthetic] </span> 10819 10820 <span class="entry_type_hwlevel">[legacy] </span> 10821 10822 10823 10824 10825 </td> <!-- entry_type --> 10826 10827 <td class="entry_description"> 10828 <p>A location object to use when generating image GPS metadata.<wbr/></p> 10829 </td> 10830 10831 <td class="entry_units"> 10832 </td> 10833 10834 <td class="entry_range"> 10835 </td> 10836 10837 <td class="entry_tags"> 10838 </td> 10839 10840 </tr> 10841 <tr class="entries_header"> 10842 <th class="th_details" colspan="5">Details</th> 10843 </tr> 10844 <tr class="entry_cont"> 10845 <td class="entry_details" colspan="5"> 10846 <p>Setting a location object in a request will include the GPS coordinates of the location 10847into any JPEG images captured based on the request.<wbr/> These coordinates can then be 10848viewed by anyone who receives the JPEG image.<wbr/></p> 10849 </td> 10850 </tr> 10851 10852 10853 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10854 <!-- end of entry --> 10855 10856 10857 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates"> 10858 <td class="entry_name 10859 " rowspan="1"> 10860 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 10861 </td> 10862 <td class="entry_type"> 10863 <span class="entry_type_name">double</span> 10864 <span class="entry_type_container">x</span> 10865 10866 <span class="entry_type_array"> 10867 3 10868 </span> 10869 <span class="entry_type_visibility"> [hidden]</span> 10870 10871 10872 <span class="entry_type_hwlevel">[legacy] </span> 10873 10874 10875 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 10876 10877 10878 </td> <!-- entry_type --> 10879 10880 <td class="entry_description"> 10881 <p>GPS coordinates to include in output JPEG 10882EXIF.<wbr/></p> 10883 </td> 10884 10885 <td class="entry_units"> 10886 </td> 10887 10888 <td class="entry_range"> 10889 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 10890 </td> 10891 10892 <td class="entry_tags"> 10893 <ul class="entry_tags"> 10894 <li><a href="#tag_BC">BC</a></li> 10895 </ul> 10896 </td> 10897 10898 </tr> 10899 10900 10901 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10902 <!-- end of entry --> 10903 10904 10905 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod"> 10906 <td class="entry_name 10907 " rowspan="1"> 10908 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 10909 </td> 10910 <td class="entry_type"> 10911 <span class="entry_type_name">byte</span> 10912 10913 <span class="entry_type_visibility"> [hidden as string]</span> 10914 10915 10916 <span class="entry_type_hwlevel">[legacy] </span> 10917 10918 10919 10920 10921 </td> <!-- entry_type --> 10922 10923 <td class="entry_description"> 10924 <p>32 characters describing GPS algorithm to 10925include in EXIF.<wbr/></p> 10926 </td> 10927 10928 <td class="entry_units"> 10929 UTF-8 null-terminated string 10930 </td> 10931 10932 <td class="entry_range"> 10933 </td> 10934 10935 <td class="entry_tags"> 10936 <ul class="entry_tags"> 10937 <li><a href="#tag_BC">BC</a></li> 10938 </ul> 10939 </td> 10940 10941 </tr> 10942 10943 10944 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10945 <!-- end of entry --> 10946 10947 10948 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp"> 10949 <td class="entry_name 10950 " rowspan="1"> 10951 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 10952 </td> 10953 <td class="entry_type"> 10954 <span class="entry_type_name">int64</span> 10955 10956 <span class="entry_type_visibility"> [hidden]</span> 10957 10958 10959 <span class="entry_type_hwlevel">[legacy] </span> 10960 10961 10962 10963 10964 </td> <!-- entry_type --> 10965 10966 <td class="entry_description"> 10967 <p>Time GPS fix was made to include in 10968EXIF.<wbr/></p> 10969 </td> 10970 10971 <td class="entry_units"> 10972 UTC in seconds since January 1,<wbr/> 1970 10973 </td> 10974 10975 <td class="entry_range"> 10976 </td> 10977 10978 <td class="entry_tags"> 10979 <ul class="entry_tags"> 10980 <li><a href="#tag_BC">BC</a></li> 10981 </ul> 10982 </td> 10983 10984 </tr> 10985 10986 10987 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10988 <!-- end of entry --> 10989 10990 10991 <tr class="entry" id="dynamic_android.jpeg.orientation"> 10992 <td class="entry_name 10993 " rowspan="3"> 10994 android.<wbr/>jpeg.<wbr/>orientation 10995 </td> 10996 <td class="entry_type"> 10997 <span class="entry_type_name">int32</span> 10998 10999 <span class="entry_type_visibility"> [public]</span> 11000 11001 11002 <span class="entry_type_hwlevel">[legacy] </span> 11003 11004 11005 11006 11007 </td> <!-- entry_type --> 11008 11009 <td class="entry_description"> 11010 <p>The orientation for a JPEG image.<wbr/></p> 11011 </td> 11012 11013 <td class="entry_units"> 11014 Degrees in multiples of 90 11015 </td> 11016 11017 <td class="entry_range"> 11018 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 11019 </td> 11020 11021 <td class="entry_tags"> 11022 <ul class="entry_tags"> 11023 <li><a href="#tag_BC">BC</a></li> 11024 </ul> 11025 </td> 11026 11027 </tr> 11028 <tr class="entries_header"> 11029 <th class="th_details" colspan="5">Details</th> 11030 </tr> 11031 <tr class="entry_cont"> 11032 <td class="entry_details" colspan="5"> 11033 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 11034to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 11035upright.<wbr/></p> 11036<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 11037rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 11038the thumbnail data will also be rotated.<wbr/></p> 11039<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 11040by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 11041<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following 11042sample code may be used:</p> 11043<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 11044 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 11045 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 11046 11047 //<wbr/> Round device orientation to a multiple of 90 11048 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 11049 11050 //<wbr/> Reverse device orientation for front-facing cameras 11051 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 11052 if (facingFront) deviceOrientation = -deviceOrientation; 11053 11054 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 11055 //<wbr/> the image upright relative to the device orientation 11056 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 11057 11058 return jpegOrientation; 11059} 11060</code></pre> 11061 </td> 11062 </tr> 11063 11064 11065 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11066 <!-- end of entry --> 11067 11068 11069 <tr class="entry" id="dynamic_android.jpeg.quality"> 11070 <td class="entry_name 11071 " rowspan="3"> 11072 android.<wbr/>jpeg.<wbr/>quality 11073 </td> 11074 <td class="entry_type"> 11075 <span class="entry_type_name">byte</span> 11076 11077 <span class="entry_type_visibility"> [public]</span> 11078 11079 11080 <span class="entry_type_hwlevel">[legacy] </span> 11081 11082 11083 11084 11085 </td> <!-- entry_type --> 11086 11087 <td class="entry_description"> 11088 <p>Compression quality of the final JPEG 11089image.<wbr/></p> 11090 </td> 11091 11092 <td class="entry_units"> 11093 </td> 11094 11095 <td class="entry_range"> 11096 <p>1-100; larger is higher quality</p> 11097 </td> 11098 11099 <td class="entry_tags"> 11100 <ul class="entry_tags"> 11101 <li><a href="#tag_BC">BC</a></li> 11102 </ul> 11103 </td> 11104 11105 </tr> 11106 <tr class="entries_header"> 11107 <th class="th_details" colspan="5">Details</th> 11108 </tr> 11109 <tr class="entry_cont"> 11110 <td class="entry_details" colspan="5"> 11111 <p>85-95 is typical usage range.<wbr/></p> 11112 </td> 11113 </tr> 11114 11115 11116 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11117 <!-- end of entry --> 11118 11119 11120 <tr class="entry" id="dynamic_android.jpeg.size"> 11121 <td class="entry_name 11122 " rowspan="3"> 11123 android.<wbr/>jpeg.<wbr/>size 11124 </td> 11125 <td class="entry_type"> 11126 <span class="entry_type_name">int32</span> 11127 11128 <span class="entry_type_visibility"> [system]</span> 11129 11130 11131 11132 11133 11134 11135 </td> <!-- entry_type --> 11136 11137 <td class="entry_description"> 11138 <p>The size of the compressed JPEG image,<wbr/> in 11139bytes</p> 11140 </td> 11141 11142 <td class="entry_units"> 11143 </td> 11144 11145 <td class="entry_range"> 11146 <p>>= 0</p> 11147 </td> 11148 11149 <td class="entry_tags"> 11150 <ul class="entry_tags"> 11151 <li><a href="#tag_FUTURE">FUTURE</a></li> 11152 </ul> 11153 </td> 11154 11155 </tr> 11156 <tr class="entries_header"> 11157 <th class="th_details" colspan="5">Details</th> 11158 </tr> 11159 <tr class="entry_cont"> 11160 <td class="entry_details" colspan="5"> 11161 <p>If no JPEG output is produced for the request,<wbr/> 11162this must be 0.<wbr/></p> 11163<p>Otherwise,<wbr/> this describes the real size of the compressed 11164JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> 11165if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture 11166has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from 11167the JPEG stream will be 1000000 bytes,<wbr/> of which the first 11168500000 make up the real data.<wbr/></p> 11169 </td> 11170 </tr> 11171 11172 11173 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11174 <!-- end of entry --> 11175 11176 11177 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality"> 11178 <td class="entry_name 11179 " rowspan="1"> 11180 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 11181 </td> 11182 <td class="entry_type"> 11183 <span class="entry_type_name">byte</span> 11184 11185 <span class="entry_type_visibility"> [public]</span> 11186 11187 11188 <span class="entry_type_hwlevel">[legacy] </span> 11189 11190 11191 11192 11193 </td> <!-- entry_type --> 11194 11195 <td class="entry_description"> 11196 <p>Compression quality of JPEG 11197thumbnail.<wbr/></p> 11198 </td> 11199 11200 <td class="entry_units"> 11201 </td> 11202 11203 <td class="entry_range"> 11204 <p>1-100; larger is higher quality</p> 11205 </td> 11206 11207 <td class="entry_tags"> 11208 <ul class="entry_tags"> 11209 <li><a href="#tag_BC">BC</a></li> 11210 </ul> 11211 </td> 11212 11213 </tr> 11214 11215 11216 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11217 <!-- end of entry --> 11218 11219 11220 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize"> 11221 <td class="entry_name 11222 " rowspan="5"> 11223 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 11224 </td> 11225 <td class="entry_type"> 11226 <span class="entry_type_name">int32</span> 11227 <span class="entry_type_container">x</span> 11228 11229 <span class="entry_type_array"> 11230 2 11231 </span> 11232 <span class="entry_type_visibility"> [public as size]</span> 11233 11234 11235 <span class="entry_type_hwlevel">[legacy] </span> 11236 11237 11238 11239 11240 </td> <!-- entry_type --> 11241 11242 <td class="entry_description"> 11243 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 11244 </td> 11245 11246 <td class="entry_units"> 11247 </td> 11248 11249 <td class="entry_range"> 11250 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 11251 </td> 11252 11253 <td class="entry_tags"> 11254 <ul class="entry_tags"> 11255 <li><a href="#tag_BC">BC</a></li> 11256 </ul> 11257 </td> 11258 11259 </tr> 11260 <tr class="entries_header"> 11261 <th class="th_details" colspan="5">Details</th> 11262 </tr> 11263 <tr class="entry_cont"> 11264 <td class="entry_details" colspan="5"> 11265 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 11266but the captured JPEG will still be a valid image.<wbr/></p> 11267<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 11268should have the same aspect ratio as the main JPEG output.<wbr/></p> 11269<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 11270ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 11271For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1127216:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 11273generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 11274Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 11275<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 11276the camera device will handle thumbnail rotation in one of the following ways:</p> 11277<ul> 11278<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 11279 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 11280<li>Rotate the jpeg and thumbnail image data and not set 11281 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 11282 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in 11283 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 11284 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 11285 size.<wbr/></li> 11286</ul> 11287 </td> 11288 </tr> 11289 11290 <tr class="entries_header"> 11291 <th class="th_details" colspan="5">HAL Implementation Details</th> 11292 </tr> 11293 <tr class="entry_cont"> 11294 <td class="entry_details" colspan="5"> 11295 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 11296The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 11297The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 11298thumbnail image cropping.<wbr/></p> 11299 </td> 11300 </tr> 11301 11302 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11303 <!-- end of entry --> 11304 11305 11306 11307 <!-- end of kind --> 11308 </tbody> 11309 11310 <!-- end of section --> 11311 <tr><td colspan="6" id="section_lens" class="section">lens</td></tr> 11312 11313 11314 <tr><td colspan="6" class="kind">controls</td></tr> 11315 11316 <thead class="entries_header"> 11317 <tr> 11318 <th class="th_name">Property Name</th> 11319 <th class="th_type">Type</th> 11320 <th class="th_description">Description</th> 11321 <th class="th_units">Units</th> 11322 <th class="th_range">Range</th> 11323 <th class="th_tags">Tags</th> 11324 </tr> 11325 </thead> 11326 11327 <tbody> 11328 11329 11330 11331 11332 11333 11334 11335 11336 11337 11338 <tr class="entry" id="controls_android.lens.aperture"> 11339 <td class="entry_name 11340 " rowspan="3"> 11341 android.<wbr/>lens.<wbr/>aperture 11342 </td> 11343 <td class="entry_type"> 11344 <span class="entry_type_name">float</span> 11345 11346 <span class="entry_type_visibility"> [public]</span> 11347 11348 11349 <span class="entry_type_hwlevel">[full] </span> 11350 11351 11352 11353 11354 </td> <!-- entry_type --> 11355 11356 <td class="entry_description"> 11357 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 11358effective aperture diameter.<wbr/></p> 11359 </td> 11360 11361 <td class="entry_units"> 11362 The f-number (f/<wbr/>N) 11363 </td> 11364 11365 <td class="entry_range"> 11366 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 11367 </td> 11368 11369 <td class="entry_tags"> 11370 <ul class="entry_tags"> 11371 <li><a href="#tag_V1">V1</a></li> 11372 </ul> 11373 </td> 11374 11375 </tr> 11376 <tr class="entries_header"> 11377 <th class="th_details" colspan="5">Details</th> 11378 </tr> 11379 <tr class="entry_cont"> 11380 <td class="entry_details" colspan="5"> 11381 <p>Setting this value is only supported on the camera devices that have a variable 11382aperture lens.<wbr/></p> 11383<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 11384this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 11385<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> 11386to achieve manual exposure control.<wbr/></p> 11387<p>The requested aperture value may take several frames to reach the 11388requested value; the camera device will report the current (intermediate) 11389aperture size in capture result metadata while the aperture is changing.<wbr/> 11390While the aperture is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 11391<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 11392the ON modes,<wbr/> this will be overridden by the camera device 11393auto-exposure algorithm,<wbr/> the overridden values are then provided 11394back to the user in the corresponding result.<wbr/></p> 11395 </td> 11396 </tr> 11397 11398 11399 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11400 <!-- end of entry --> 11401 11402 11403 <tr class="entry" id="controls_android.lens.filterDensity"> 11404 <td class="entry_name 11405 " rowspan="3"> 11406 android.<wbr/>lens.<wbr/>filter<wbr/>Density 11407 </td> 11408 <td class="entry_type"> 11409 <span class="entry_type_name">float</span> 11410 11411 <span class="entry_type_visibility"> [public]</span> 11412 11413 11414 <span class="entry_type_hwlevel">[full] </span> 11415 11416 11417 11418 11419 </td> <!-- entry_type --> 11420 11421 <td class="entry_description"> 11422 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 11423 </td> 11424 11425 <td class="entry_units"> 11426 Exposure Value (EV) 11427 </td> 11428 11429 <td class="entry_range"> 11430 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 11431 </td> 11432 11433 <td class="entry_tags"> 11434 <ul class="entry_tags"> 11435 <li><a href="#tag_V1">V1</a></li> 11436 </ul> 11437 </td> 11438 11439 </tr> 11440 <tr class="entries_header"> 11441 <th class="th_details" colspan="5">Details</th> 11442 </tr> 11443 <tr class="entry_cont"> 11444 <td class="entry_details" colspan="5"> 11445 <p>This control will not be supported on most camera devices.<wbr/></p> 11446<p>Lens filters are typically used to lower the amount of light the 11447sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 11448step is the standard logarithmic representation,<wbr/> which are 11449non-negative,<wbr/> and inversely proportional to the amount of light 11450hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 11451in no reduction of the incoming light,<wbr/> and setting this to 2 would 11452mean that the filter is set to reduce incoming light by two stops 11453(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 11454<p>It may take several frames before the lens filter density changes 11455to the requested value.<wbr/> While the filter density is still changing,<wbr/> 11456<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 11457 </td> 11458 </tr> 11459 11460 11461 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11462 <!-- end of entry --> 11463 11464 11465 <tr class="entry" id="controls_android.lens.focalLength"> 11466 <td class="entry_name 11467 " rowspan="3"> 11468 android.<wbr/>lens.<wbr/>focal<wbr/>Length 11469 </td> 11470 <td class="entry_type"> 11471 <span class="entry_type_name">float</span> 11472 11473 <span class="entry_type_visibility"> [public]</span> 11474 11475 11476 <span class="entry_type_hwlevel">[legacy] </span> 11477 11478 11479 11480 11481 </td> <!-- entry_type --> 11482 11483 <td class="entry_description"> 11484 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 11485 </td> 11486 11487 <td class="entry_units"> 11488 Millimeters 11489 </td> 11490 11491 <td class="entry_range"> 11492 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 11493 </td> 11494 11495 <td class="entry_tags"> 11496 <ul class="entry_tags"> 11497 <li><a href="#tag_V1">V1</a></li> 11498 </ul> 11499 </td> 11500 11501 </tr> 11502 <tr class="entries_header"> 11503 <th class="th_details" colspan="5">Details</th> 11504 </tr> 11505 <tr class="entry_cont"> 11506 <td class="entry_details" colspan="5"> 11507 <p>This setting controls the physical focal length of the camera 11508device's lens.<wbr/> Changing the focal length changes the field of 11509view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 11510<p>Like <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>,<wbr/> this 11511setting won't be applied instantaneously,<wbr/> and it may take several 11512frames before the lens can change to the requested focal length.<wbr/> 11513While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 11514be set to MOVING.<wbr/></p> 11515<p>Optical zoom will not be supported on most devices.<wbr/></p> 11516 </td> 11517 </tr> 11518 11519 11520 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11521 <!-- end of entry --> 11522 11523 11524 <tr class="entry" id="controls_android.lens.focusDistance"> 11525 <td class="entry_name 11526 " rowspan="3"> 11527 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 11528 </td> 11529 <td class="entry_type"> 11530 <span class="entry_type_name">float</span> 11531 11532 <span class="entry_type_visibility"> [public]</span> 11533 11534 11535 <span class="entry_type_hwlevel">[full] </span> 11536 11537 11538 11539 11540 </td> <!-- entry_type --> 11541 11542 <td class="entry_description"> 11543 <p>Desired distance to plane of sharpest focus,<wbr/> 11544measured from frontmost surface of the lens.<wbr/></p> 11545 </td> 11546 11547 <td class="entry_units"> 11548 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11549 </td> 11550 11551 <td class="entry_range"> 11552 <p>>= 0</p> 11553 </td> 11554 11555 <td class="entry_tags"> 11556 <ul class="entry_tags"> 11557 <li><a href="#tag_BC">BC</a></li> 11558 <li><a href="#tag_V1">V1</a></li> 11559 </ul> 11560 </td> 11561 11562 </tr> 11563 <tr class="entries_header"> 11564 <th class="th_details" colspan="5">Details</th> 11565 </tr> 11566 <tr class="entry_cont"> 11567 <td class="entry_details" colspan="5"> 11568 <p>This control can be used for setting manual focus,<wbr/> on devices that support 11569the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see 11570<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p> 11571<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to 11572<code>[0.<wbr/>0f,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code>.<wbr/></p> 11573<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied 11574instantaneously,<wbr/> and it may take several frames before the lens 11575can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/> 11576<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 11577<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code> 11578for infinity focus.<wbr/></p> 11579 </td> 11580 </tr> 11581 11582 11583 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11584 <!-- end of entry --> 11585 11586 11587 <tr class="entry" id="controls_android.lens.opticalStabilizationMode"> 11588 <td class="entry_name 11589 " rowspan="3"> 11590 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 11591 </td> 11592 <td class="entry_type"> 11593 <span class="entry_type_name entry_type_name_enum">byte</span> 11594 11595 <span class="entry_type_visibility"> [public]</span> 11596 11597 11598 <span class="entry_type_hwlevel">[limited] </span> 11599 11600 11601 11602 <ul class="entry_type_enum"> 11603 <li> 11604 <span class="entry_type_enum_name">OFF</span> 11605 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 11606 </li> 11607 <li> 11608 <span class="entry_type_enum_name">ON</span> 11609 <span class="entry_type_enum_optional">[optional]</span> 11610 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 11611 </li> 11612 </ul> 11613 11614 </td> <!-- entry_type --> 11615 11616 <td class="entry_description"> 11617 <p>Sets whether the camera device uses optical image stabilization (OIS) 11618when capturing images.<wbr/></p> 11619 </td> 11620 11621 <td class="entry_units"> 11622 </td> 11623 11624 <td class="entry_range"> 11625 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 11626 </td> 11627 11628 <td class="entry_tags"> 11629 <ul class="entry_tags"> 11630 <li><a href="#tag_V1">V1</a></li> 11631 </ul> 11632 </td> 11633 11634 </tr> 11635 <tr class="entries_header"> 11636 <th class="th_details" colspan="5">Details</th> 11637 </tr> 11638 <tr class="entry_cont"> 11639 <td class="entry_details" colspan="5"> 11640 <p>OIS is used to compensate for motion blur due to small 11641movements of the camera during capture.<wbr/> Unlike digital image 11642stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 11643makes use of mechanical elements to stabilize the camera 11644sensor,<wbr/> and thus allows for longer exposure times before 11645camera shake becomes apparent.<wbr/></p> 11646<p>Switching between different optical stabilization modes may take several 11647frames to initialize,<wbr/> the camera device will report the current mode in 11648capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 11649optical stabilization modes in the first several capture results may still 11650be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 11651<p>If a camera device supports both OIS and digital image stabilization 11652(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 11653interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 11654<p>Not all devices will support OIS; see 11655<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 11656available controls.<wbr/></p> 11657 </td> 11658 </tr> 11659 11660 11661 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11662 <!-- end of entry --> 11663 11664 11665 11666 <!-- end of kind --> 11667 </tbody> 11668 <tr><td colspan="6" class="kind">static</td></tr> 11669 11670 <thead class="entries_header"> 11671 <tr> 11672 <th class="th_name">Property Name</th> 11673 <th class="th_type">Type</th> 11674 <th class="th_description">Description</th> 11675 <th class="th_units">Units</th> 11676 <th class="th_range">Range</th> 11677 <th class="th_tags">Tags</th> 11678 </tr> 11679 </thead> 11680 11681 <tbody> 11682 11683 11684 11685 11686 11687 11688 11689 11690 11691 11692 11693 11694 <tr class="entry" id="static_android.lens.info.availableApertures"> 11695 <td class="entry_name 11696 " rowspan="3"> 11697 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures 11698 </td> 11699 <td class="entry_type"> 11700 <span class="entry_type_name">float</span> 11701 <span class="entry_type_container">x</span> 11702 11703 <span class="entry_type_array"> 11704 n 11705 </span> 11706 <span class="entry_type_visibility"> [public]</span> 11707 11708 11709 <span class="entry_type_hwlevel">[full] </span> 11710 11711 11712 11713 11714 </td> <!-- entry_type --> 11715 11716 <td class="entry_description"> 11717 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are 11718supported by this camera device.<wbr/></p> 11719 </td> 11720 11721 <td class="entry_units"> 11722 The aperture f-number 11723 </td> 11724 11725 <td class="entry_range"> 11726 </td> 11727 11728 <td class="entry_tags"> 11729 <ul class="entry_tags"> 11730 <li><a href="#tag_V1">V1</a></li> 11731 </ul> 11732 </td> 11733 11734 </tr> 11735 <tr class="entries_header"> 11736 <th class="th_details" colspan="5">Details</th> 11737 </tr> 11738 <tr class="entry_cont"> 11739 <td class="entry_details" colspan="5"> 11740 <p>If the camera device doesn't support a variable lens aperture,<wbr/> 11741this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p> 11742<p>If the camera device supports a variable aperture,<wbr/> the aperture values 11743in this list will be sorted in ascending order.<wbr/></p> 11744 </td> 11745 </tr> 11746 11747 11748 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11749 <!-- end of entry --> 11750 11751 11752 <tr class="entry" id="static_android.lens.info.availableFilterDensities"> 11753 <td class="entry_name 11754 " rowspan="3"> 11755 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities 11756 </td> 11757 <td class="entry_type"> 11758 <span class="entry_type_name">float</span> 11759 <span class="entry_type_container">x</span> 11760 11761 <span class="entry_type_array"> 11762 n 11763 </span> 11764 <span class="entry_type_visibility"> [public]</span> 11765 11766 11767 <span class="entry_type_hwlevel">[full] </span> 11768 11769 11770 11771 11772 </td> <!-- entry_type --> 11773 11774 <td class="entry_description"> 11775 <p>List of neutral density filter values for 11776<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p> 11777 </td> 11778 11779 <td class="entry_units"> 11780 Exposure value (EV) 11781 </td> 11782 11783 <td class="entry_range"> 11784 <p>Values are >= 0</p> 11785 </td> 11786 11787 <td class="entry_tags"> 11788 <ul class="entry_tags"> 11789 <li><a href="#tag_V1">V1</a></li> 11790 </ul> 11791 </td> 11792 11793 </tr> 11794 <tr class="entries_header"> 11795 <th class="th_details" colspan="5">Details</th> 11796 </tr> 11797 <tr class="entry_cont"> 11798 <td class="entry_details" colspan="5"> 11799 <p>If a neutral density filter is not supported by this camera device,<wbr/> 11800this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every 11801filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p> 11802 </td> 11803 </tr> 11804 11805 11806 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11807 <!-- end of entry --> 11808 11809 11810 <tr class="entry" id="static_android.lens.info.availableFocalLengths"> 11811 <td class="entry_name 11812 " rowspan="3"> 11813 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths 11814 </td> 11815 <td class="entry_type"> 11816 <span class="entry_type_name">float</span> 11817 <span class="entry_type_container">x</span> 11818 11819 <span class="entry_type_array"> 11820 n 11821 </span> 11822 <span class="entry_type_visibility"> [public]</span> 11823 11824 11825 <span class="entry_type_hwlevel">[legacy] </span> 11826 11827 11828 <div class="entry_type_notes">The list of available focal lengths</div> 11829 11830 11831 </td> <!-- entry_type --> 11832 11833 <td class="entry_description"> 11834 <p>List of focal lengths for <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a> that are supported by this camera 11835device.<wbr/></p> 11836 </td> 11837 11838 <td class="entry_units"> 11839 Millimeters 11840 </td> 11841 11842 <td class="entry_range"> 11843 <p>Values are > 0</p> 11844 </td> 11845 11846 <td class="entry_tags"> 11847 <ul class="entry_tags"> 11848 <li><a href="#tag_BC">BC</a></li> 11849 <li><a href="#tag_V1">V1</a></li> 11850 </ul> 11851 </td> 11852 11853 </tr> 11854 <tr class="entries_header"> 11855 <th class="th_details" colspan="5">Details</th> 11856 </tr> 11857 <tr class="entry_cont"> 11858 <td class="entry_details" colspan="5"> 11859 <p>If optical zoom is not supported,<wbr/> this list will only contain 11860a single value corresponding to the fixed focal length of the 11861device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported 11862by the camera device,<wbr/> in ascending order.<wbr/></p> 11863 </td> 11864 </tr> 11865 11866 11867 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11868 <!-- end of entry --> 11869 11870 11871 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization"> 11872 <td class="entry_name 11873 " rowspan="3"> 11874 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization 11875 </td> 11876 <td class="entry_type"> 11877 <span class="entry_type_name">byte</span> 11878 <span class="entry_type_container">x</span> 11879 11880 <span class="entry_type_array"> 11881 n 11882 </span> 11883 <span class="entry_type_visibility"> [public as enumList]</span> 11884 11885 11886 <span class="entry_type_hwlevel">[limited] </span> 11887 11888 11889 <div class="entry_type_notes">list of enums</div> 11890 11891 11892 </td> <!-- entry_type --> 11893 11894 <td class="entry_description"> 11895 <p>List of optical image stabilization (OIS) modes for 11896<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> that are supported by this camera device.<wbr/></p> 11897 </td> 11898 11899 <td class="entry_units"> 11900 </td> 11901 11902 <td class="entry_range"> 11903 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p> 11904 </td> 11905 11906 <td class="entry_tags"> 11907 <ul class="entry_tags"> 11908 <li><a href="#tag_V1">V1</a></li> 11909 </ul> 11910 </td> 11911 11912 </tr> 11913 <tr class="entries_header"> 11914 <th class="th_details" colspan="5">Details</th> 11915 </tr> 11916 <tr class="entry_cont"> 11917 <td class="entry_details" colspan="5"> 11918 <p>If OIS is not supported by a given camera device,<wbr/> this list will 11919contain only OFF.<wbr/></p> 11920 </td> 11921 </tr> 11922 11923 11924 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11925 <!-- end of entry --> 11926 11927 11928 <tr class="entry" id="static_android.lens.info.hyperfocalDistance"> 11929 <td class="entry_name 11930 " rowspan="3"> 11931 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance 11932 </td> 11933 <td class="entry_type"> 11934 <span class="entry_type_name">float</span> 11935 11936 <span class="entry_type_visibility"> [public]</span> 11937 11938 11939 <span class="entry_type_hwlevel">[limited] </span> 11940 11941 11942 11943 11944 </td> <!-- entry_type --> 11945 11946 <td class="entry_description"> 11947 <p>Hyperfocal distance for this lens.<wbr/></p> 11948 </td> 11949 11950 <td class="entry_units"> 11951 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11952 </td> 11953 11954 <td class="entry_range"> 11955 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is 11956within <code>(0.<wbr/>0f,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code></p> 11957 </td> 11958 11959 <td class="entry_tags"> 11960 </td> 11961 11962 </tr> 11963 <tr class="entries_header"> 11964 <th class="th_details" colspan="5">Details</th> 11965 </tr> 11966 <tr class="entry_cont"> 11967 <td class="entry_details" colspan="5"> 11968 <p>If the lens is not fixed focus,<wbr/> the camera device will report this 11969field when <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a> is APPROXIMATE or CALIBRATED.<wbr/></p> 11970 </td> 11971 </tr> 11972 11973 11974 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11975 <!-- end of entry --> 11976 11977 11978 <tr class="entry" id="static_android.lens.info.minimumFocusDistance"> 11979 <td class="entry_name 11980 " rowspan="5"> 11981 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance 11982 </td> 11983 <td class="entry_type"> 11984 <span class="entry_type_name">float</span> 11985 11986 <span class="entry_type_visibility"> [public]</span> 11987 11988 11989 <span class="entry_type_hwlevel">[limited] </span> 11990 11991 11992 11993 11994 </td> <!-- entry_type --> 11995 11996 <td class="entry_description"> 11997 <p>Shortest distance from frontmost surface 11998of the lens that can be brought into sharp focus.<wbr/></p> 11999 </td> 12000 12001 <td class="entry_units"> 12002 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 12003 </td> 12004 12005 <td class="entry_range"> 12006 <p>>= 0</p> 12007 </td> 12008 12009 <td class="entry_tags"> 12010 <ul class="entry_tags"> 12011 <li><a href="#tag_V1">V1</a></li> 12012 </ul> 12013 </td> 12014 12015 </tr> 12016 <tr class="entries_header"> 12017 <th class="th_details" colspan="5">Details</th> 12018 </tr> 12019 <tr class="entry_cont"> 12020 <td class="entry_details" colspan="5"> 12021 <p>If the lens is fixed-focus,<wbr/> this will be 120220.<wbr/></p> 12023 </td> 12024 </tr> 12025 12026 <tr class="entries_header"> 12027 <th class="th_details" colspan="5">HAL Implementation Details</th> 12028 </tr> 12029 <tr class="entry_cont"> 12030 <td class="entry_details" colspan="5"> 12031 <p>Mandatory for FULL devices; LIMITED devices 12032must always set this value to 0 for fixed-focus; and may omit 12033the minimum focus distance otherwise.<wbr/></p> 12034<p>This field is also mandatory for all devices advertising 12035the MANUAL_<wbr/>SENSOR capability.<wbr/></p> 12036 </td> 12037 </tr> 12038 12039 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12040 <!-- end of entry --> 12041 12042 12043 <tr class="entry" id="static_android.lens.info.shadingMapSize"> 12044 <td class="entry_name 12045 " rowspan="3"> 12046 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size 12047 </td> 12048 <td class="entry_type"> 12049 <span class="entry_type_name">int32</span> 12050 <span class="entry_type_container">x</span> 12051 12052 <span class="entry_type_array"> 12053 2 12054 </span> 12055 <span class="entry_type_visibility"> [hidden as size]</span> 12056 12057 12058 <span class="entry_type_hwlevel">[full] </span> 12059 12060 12061 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div> 12062 12063 12064 </td> <!-- entry_type --> 12065 12066 <td class="entry_description"> 12067 <p>Dimensions of lens shading map.<wbr/></p> 12068 </td> 12069 12070 <td class="entry_units"> 12071 </td> 12072 12073 <td class="entry_range"> 12074 <p>Both values >= 1</p> 12075 </td> 12076 12077 <td class="entry_tags"> 12078 <ul class="entry_tags"> 12079 <li><a href="#tag_V1">V1</a></li> 12080 </ul> 12081 </td> 12082 12083 </tr> 12084 <tr class="entries_header"> 12085 <th class="th_details" colspan="5">Details</th> 12086 </tr> 12087 <tr class="entry_cont"> 12088 <td class="entry_details" colspan="5"> 12089 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and 12090must be smaller than 64x64.<wbr/></p> 12091 </td> 12092 </tr> 12093 12094 12095 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12096 <!-- end of entry --> 12097 12098 12099 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration"> 12100 <td class="entry_name 12101 " rowspan="5"> 12102 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration 12103 </td> 12104 <td class="entry_type"> 12105 <span class="entry_type_name entry_type_name_enum">byte</span> 12106 12107 <span class="entry_type_visibility"> [public]</span> 12108 12109 12110 <span class="entry_type_hwlevel">[limited] </span> 12111 12112 12113 12114 <ul class="entry_type_enum"> 12115 <li> 12116 <span class="entry_type_enum_name">UNCALIBRATED</span> 12117 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for 12118<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p> 12119<p>Setting the lens to the same focus distance on separate occasions may 12120result in a different real focus distance,<wbr/> depending on factors such 12121as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> 12122and the device temperature.<wbr/> The focus distance value will still be 12123in the range of <code>[0,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code>,<wbr/> where 0 12124represents the farthest focus.<wbr/></p></span> 12125 </li> 12126 <li> 12127 <span class="entry_type_enum_name">APPROXIMATE</span> 12128 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p> 12129<p>However,<wbr/> setting the lens to the same focus distance 12130on separate occasions may result in a different real 12131focus distance,<wbr/> depending on factors such as the 12132orientation of the device,<wbr/> the age of the focusing 12133mechanism,<wbr/> and the device temperature.<wbr/></p></span> 12134 </li> 12135 <li> 12136 <span class="entry_type_enum_name">CALIBRATED</span> 12137 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and 12138is calibrated.<wbr/></p> 12139<p>The lens mechanism is calibrated so that setting the 12140same focus distance is repeatable on multiple 12141occasions with good accuracy,<wbr/> and the focus distance 12142corresponds to the real physical distance to the plane 12143of best focus.<wbr/></p></span> 12144 </li> 12145 </ul> 12146 12147 </td> <!-- entry_type --> 12148 12149 <td class="entry_description"> 12150 <p>The lens focus distance calibration quality.<wbr/></p> 12151 </td> 12152 12153 <td class="entry_units"> 12154 </td> 12155 12156 <td class="entry_range"> 12157 </td> 12158 12159 <td class="entry_tags"> 12160 <ul class="entry_tags"> 12161 <li><a href="#tag_V1">V1</a></li> 12162 </ul> 12163 </td> 12164 12165 </tr> 12166 <tr class="entries_header"> 12167 <th class="th_details" colspan="5">Details</th> 12168 </tr> 12169 <tr class="entry_cont"> 12170 <td class="entry_details" colspan="5"> 12171 <p>The lens focus distance calibration quality determines the reliability of 12172focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 12173<a href="#dynamic_android.lens.focusRange">android.<wbr/>lens.<wbr/>focus<wbr/>Range</a>,<wbr/> <a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a>,<wbr/> and 12174<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p> 12175<p>APPROXIMATE and CALIBRATED devices report the focus metadata in 12176units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/> 12177and increasing positive numbers represent focusing closer and closer 12178to the camera device.<wbr/> The focus distance control also uses diopters 12179on these devices.<wbr/></p> 12180<p>UNCALIBRATED devices do not use units that are directly comparable 12181to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest 12182focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the 12183nearest focus the device can achieve.<wbr/></p> 12184 </td> 12185 </tr> 12186 12187 <tr class="entries_header"> 12188 <th class="th_details" colspan="5">HAL Implementation Details</th> 12189 </tr> 12190 <tr class="entry_cont"> 12191 <td class="entry_details" colspan="5"> 12192 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity 12193focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF) 12194and the lens focus distance is set to 0 diopters 12195(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity 12196and is stably focused at infinity even if the device tilts.<wbr/> It may take the 12197lens some time to move; during the move the lens state should be MOVING and 12198the output diopter value should be changing toward 0.<wbr/></p> 12199 </td> 12200 </tr> 12201 12202 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12203 <!-- end of entry --> 12204 12205 12206 12207 12208 12209 <tr class="entry" id="static_android.lens.facing"> 12210 <td class="entry_name 12211 " rowspan="1"> 12212 android.<wbr/>lens.<wbr/>facing 12213 </td> 12214 <td class="entry_type"> 12215 <span class="entry_type_name entry_type_name_enum">byte</span> 12216 12217 <span class="entry_type_visibility"> [public]</span> 12218 12219 12220 <span class="entry_type_hwlevel">[legacy] </span> 12221 12222 12223 12224 <ul class="entry_type_enum"> 12225 <li> 12226 <span class="entry_type_enum_name">FRONT</span> 12227 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span> 12228 </li> 12229 <li> 12230 <span class="entry_type_enum_name">BACK</span> 12231 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span> 12232 </li> 12233 <li> 12234 <span class="entry_type_enum_name">EXTERNAL</span> 12235 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the 12236device's screen.<wbr/></p></span> 12237 </li> 12238 </ul> 12239 12240 </td> <!-- entry_type --> 12241 12242 <td class="entry_description"> 12243 <p>Direction the camera faces relative to 12244device screen.<wbr/></p> 12245 </td> 12246 12247 <td class="entry_units"> 12248 </td> 12249 12250 <td class="entry_range"> 12251 </td> 12252 12253 <td class="entry_tags"> 12254 </td> 12255 12256 </tr> 12257 12258 12259 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12260 <!-- end of entry --> 12261 12262 12263 <tr class="entry" id="static_android.lens.poseRotation"> 12264 <td class="entry_name 12265 " rowspan="3"> 12266 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 12267 </td> 12268 <td class="entry_type"> 12269 <span class="entry_type_name">float</span> 12270 <span class="entry_type_container">x</span> 12271 12272 <span class="entry_type_array"> 12273 4 12274 </span> 12275 <span class="entry_type_visibility"> [public]</span> 12276 12277 12278 12279 12280 12281 12282 </td> <!-- entry_type --> 12283 12284 <td class="entry_description"> 12285 <p>The orientation of the camera relative to the sensor 12286coordinate system.<wbr/></p> 12287 </td> 12288 12289 <td class="entry_units"> 12290 12291 Quaternion coefficients 12292 12293 </td> 12294 12295 <td class="entry_range"> 12296 </td> 12297 12298 <td class="entry_tags"> 12299 <ul class="entry_tags"> 12300 <li><a href="#tag_DEPTH">DEPTH</a></li> 12301 </ul> 12302 </td> 12303 12304 </tr> 12305 <tr class="entries_header"> 12306 <th class="th_details" colspan="5">Details</th> 12307 </tr> 12308 <tr class="entry_cont"> 12309 <td class="entry_details" colspan="5"> 12310 <p>The four coefficients that describe the quaternion 12311rotation from the Android sensor coordinate system to a 12312camera-aligned coordinate system where the X-axis is 12313aligned with the long side of the image sensor,<wbr/> the Y-axis 12314is aligned with the short side of the image sensor,<wbr/> and 12315the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 12316<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 12317to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 12318amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 12319<pre><code> theta = 2 * acos(w) 12320a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 12321a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 12322a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 12323</code></pre> 12324<p>To create a 3x3 rotation matrix that applies the rotation 12325defined by this quaternion,<wbr/> the following matrix can be 12326used:</p> 12327<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 12328 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 12329 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 12330</code></pre> 12331<p>This matrix can then be used to apply the rotation to a 12332 column vector point with</p> 12333<p><code>p' = Rp</code></p> 12334<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 12335 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 12336 </td> 12337 </tr> 12338 12339 12340 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12341 <!-- end of entry --> 12342 12343 12344 <tr class="entry" id="static_android.lens.poseTranslation"> 12345 <td class="entry_name 12346 " rowspan="3"> 12347 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 12348 </td> 12349 <td class="entry_type"> 12350 <span class="entry_type_name">float</span> 12351 <span class="entry_type_container">x</span> 12352 12353 <span class="entry_type_array"> 12354 3 12355 </span> 12356 <span class="entry_type_visibility"> [public]</span> 12357 12358 12359 12360 12361 12362 12363 </td> <!-- entry_type --> 12364 12365 <td class="entry_description"> 12366 <p>Position of the camera optical center.<wbr/></p> 12367 </td> 12368 12369 <td class="entry_units"> 12370 Meters 12371 </td> 12372 12373 <td class="entry_range"> 12374 </td> 12375 12376 <td class="entry_tags"> 12377 <ul class="entry_tags"> 12378 <li><a href="#tag_DEPTH">DEPTH</a></li> 12379 </ul> 12380 </td> 12381 12382 </tr> 12383 <tr class="entries_header"> 12384 <th class="th_details" colspan="5">Details</th> 12385 </tr> 12386 <tr class="entry_cont"> 12387 <td class="entry_details" colspan="5"> 12388 <p>The position of the camera device's lens optical center,<wbr/> 12389as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the 12390optical center of the largest camera device facing in the 12391same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate 12392axes</a>.<wbr/> Note that only the axis definitions are shared with 12393the sensor coordinate system,<wbr/> but not the origin.<wbr/></p> 12394<p>If this device is the largest or only camera device with a 12395given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a 12396camera device with a lens optical center located 3 cm from 12397the main sensor along the +X axis (to the right from the 12398user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> 12399<p>To transform a pixel coordinates between two cameras 12400facing the same direction,<wbr/> first the source camera 12401<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then 12402the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs 12403to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> 12404of the source camera,<wbr/> the translation of the source camera 12405relative to the destination camera,<wbr/> the 12406<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and 12407finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 12408of the destination camera.<wbr/> This obtains a 12409radial-distortion-free coordinate in the destination 12410camera pixel coordinates.<wbr/></p> 12411<p>To compare this against a real image from the destination 12412camera,<wbr/> the destination camera image then needs to be 12413corrected for radial distortion before comparison or 12414sampling.<wbr/></p> 12415 </td> 12416 </tr> 12417 12418 12419 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12420 <!-- end of entry --> 12421 12422 12423 <tr class="entry" id="static_android.lens.intrinsicCalibration"> 12424 <td class="entry_name 12425 " rowspan="3"> 12426 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 12427 </td> 12428 <td class="entry_type"> 12429 <span class="entry_type_name">float</span> 12430 <span class="entry_type_container">x</span> 12431 12432 <span class="entry_type_array"> 12433 5 12434 </span> 12435 <span class="entry_type_visibility"> [public]</span> 12436 12437 12438 12439 12440 12441 12442 </td> <!-- entry_type --> 12443 12444 <td class="entry_description"> 12445 <p>The parameters for this camera device's intrinsic 12446calibration.<wbr/></p> 12447 </td> 12448 12449 <td class="entry_units"> 12450 12451 Pixels in the 12452 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 12453 coordinate system.<wbr/> 12454 12455 </td> 12456 12457 <td class="entry_range"> 12458 </td> 12459 12460 <td class="entry_tags"> 12461 <ul class="entry_tags"> 12462 <li><a href="#tag_DEPTH">DEPTH</a></li> 12463 </ul> 12464 </td> 12465 12466 </tr> 12467 <tr class="entries_header"> 12468 <th class="th_details" colspan="5">Details</th> 12469 </tr> 12470 <tr class="entry_cont"> 12471 <td class="entry_details" colspan="5"> 12472 <p>The five calibration parameters that describe the 12473transform from camera-centric 3D coordinates to sensor 12474pixel coordinates:</p> 12475<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 12476</code></pre> 12477<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 12478focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 12479axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 12480being aligned with the lens plane.<wbr/></p> 12481<p>These are typically used within a transformation matrix K:</p> 12482<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 12483 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 12484 0 0,<wbr/> 1 ] 12485</code></pre> 12486<p>which can then be combined with the camera pose rotation 12487<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 12488<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the 12489complete transform from world coordinates to pixel 12490coordinates:</p> 12491<pre><code>P = [ K 0 * [ R t 12492 0 1 ] 0 1 ] 12493</code></pre> 12494<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system 12495and <code>p_<wbr/>s</code> being a point in the camera active pixel array 12496coordinate system,<wbr/> and with the mapping including the 12497homogeneous division by z:</p> 12498<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 12499p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 12500</code></pre> 12501<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 12502point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 12503(depth) in pixel coordinates.<wbr/></p> 12504<p>Note that the coordinate system for this transform is the 12505<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> system,<wbr/> 12506where <code>(0,<wbr/>0)</code> is the top-left of the 12507preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 12508intrinsic calibration transforms have been applied to a 12509world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> 12510transform needs to be applied,<wbr/> and the result adjusted to 12511be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 12512system (where <code>(0,<wbr/> 0)</code> is the top-left of the 12513activeArraySize rectangle),<wbr/> to determine the final pixel 12514coordinate of the world point for processed (non-RAW) 12515output buffers.<wbr/></p> 12516 </td> 12517 </tr> 12518 12519 12520 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12521 <!-- end of entry --> 12522 12523 12524 <tr class="entry" id="static_android.lens.radialDistortion"> 12525 <td class="entry_name 12526 " rowspan="3"> 12527 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 12528 </td> 12529 <td class="entry_type"> 12530 <span class="entry_type_name">float</span> 12531 <span class="entry_type_container">x</span> 12532 12533 <span class="entry_type_array"> 12534 6 12535 </span> 12536 <span class="entry_type_visibility"> [public]</span> 12537 12538 12539 12540 12541 12542 12543 </td> <!-- entry_type --> 12544 12545 <td class="entry_description"> 12546 <p>The correction coefficients to correct for this camera device's 12547radial and tangential lens distortion.<wbr/></p> 12548 </td> 12549 12550 <td class="entry_units"> 12551 12552 Unitless coefficients.<wbr/> 12553 12554 </td> 12555 12556 <td class="entry_range"> 12557 </td> 12558 12559 <td class="entry_tags"> 12560 <ul class="entry_tags"> 12561 <li><a href="#tag_DEPTH">DEPTH</a></li> 12562 </ul> 12563 </td> 12564 12565 </tr> 12566 <tr class="entries_header"> 12567 <th class="th_details" colspan="5">Details</th> 12568 </tr> 12569 <tr class="entry_cont"> 12570 <td class="entry_details" colspan="5"> 12571 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 12572kappa_<wbr/>3]</code> and two tangential distortion coefficients 12573<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 12574lens's geometric distortion with the mapping equations:</p> 12575<pre><code> x_<wbr/>c = x_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 12576 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 12577 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 12578 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 12579</code></pre> 12580<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 12581input image that correspond to the pixel values in the 12582corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 12583<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 12584</code></pre> 12585<p>The pixel coordinates are defined in a normalized 12586coordinate system related to the 12587<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 12588Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> have <code>(0,<wbr/>0)</code> at the 12589lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 12590of both x and y coordinates are normalized to be 1 at the 12591edge further from the optical center,<wbr/> so the range 12592for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 12593<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 12594optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 12595is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 12596<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 12597 </td> 12598 </tr> 12599 12600 12601 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12602 <!-- end of entry --> 12603 12604 12605 12606 <!-- end of kind --> 12607 </tbody> 12608 <tr><td colspan="6" class="kind">dynamic</td></tr> 12609 12610 <thead class="entries_header"> 12611 <tr> 12612 <th class="th_name">Property Name</th> 12613 <th class="th_type">Type</th> 12614 <th class="th_description">Description</th> 12615 <th class="th_units">Units</th> 12616 <th class="th_range">Range</th> 12617 <th class="th_tags">Tags</th> 12618 </tr> 12619 </thead> 12620 12621 <tbody> 12622 12623 12624 12625 12626 12627 12628 12629 12630 12631 12632 <tr class="entry" id="dynamic_android.lens.aperture"> 12633 <td class="entry_name 12634 " rowspan="3"> 12635 android.<wbr/>lens.<wbr/>aperture 12636 </td> 12637 <td class="entry_type"> 12638 <span class="entry_type_name">float</span> 12639 12640 <span class="entry_type_visibility"> [public]</span> 12641 12642 12643 <span class="entry_type_hwlevel">[full] </span> 12644 12645 12646 12647 12648 </td> <!-- entry_type --> 12649 12650 <td class="entry_description"> 12651 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 12652effective aperture diameter.<wbr/></p> 12653 </td> 12654 12655 <td class="entry_units"> 12656 The f-number (f/<wbr/>N) 12657 </td> 12658 12659 <td class="entry_range"> 12660 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 12661 </td> 12662 12663 <td class="entry_tags"> 12664 <ul class="entry_tags"> 12665 <li><a href="#tag_V1">V1</a></li> 12666 </ul> 12667 </td> 12668 12669 </tr> 12670 <tr class="entries_header"> 12671 <th class="th_details" colspan="5">Details</th> 12672 </tr> 12673 <tr class="entry_cont"> 12674 <td class="entry_details" colspan="5"> 12675 <p>Setting this value is only supported on the camera devices that have a variable 12676aperture lens.<wbr/></p> 12677<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 12678this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 12679<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> 12680to achieve manual exposure control.<wbr/></p> 12681<p>The requested aperture value may take several frames to reach the 12682requested value; the camera device will report the current (intermediate) 12683aperture size in capture result metadata while the aperture is changing.<wbr/> 12684While the aperture is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 12685<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 12686the ON modes,<wbr/> this will be overridden by the camera device 12687auto-exposure algorithm,<wbr/> the overridden values are then provided 12688back to the user in the corresponding result.<wbr/></p> 12689 </td> 12690 </tr> 12691 12692 12693 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12694 <!-- end of entry --> 12695 12696 12697 <tr class="entry" id="dynamic_android.lens.filterDensity"> 12698 <td class="entry_name 12699 " rowspan="3"> 12700 android.<wbr/>lens.<wbr/>filter<wbr/>Density 12701 </td> 12702 <td class="entry_type"> 12703 <span class="entry_type_name">float</span> 12704 12705 <span class="entry_type_visibility"> [public]</span> 12706 12707 12708 <span class="entry_type_hwlevel">[full] </span> 12709 12710 12711 12712 12713 </td> <!-- entry_type --> 12714 12715 <td class="entry_description"> 12716 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 12717 </td> 12718 12719 <td class="entry_units"> 12720 Exposure Value (EV) 12721 </td> 12722 12723 <td class="entry_range"> 12724 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 12725 </td> 12726 12727 <td class="entry_tags"> 12728 <ul class="entry_tags"> 12729 <li><a href="#tag_V1">V1</a></li> 12730 </ul> 12731 </td> 12732 12733 </tr> 12734 <tr class="entries_header"> 12735 <th class="th_details" colspan="5">Details</th> 12736 </tr> 12737 <tr class="entry_cont"> 12738 <td class="entry_details" colspan="5"> 12739 <p>This control will not be supported on most camera devices.<wbr/></p> 12740<p>Lens filters are typically used to lower the amount of light the 12741sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 12742step is the standard logarithmic representation,<wbr/> which are 12743non-negative,<wbr/> and inversely proportional to the amount of light 12744hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 12745in no reduction of the incoming light,<wbr/> and setting this to 2 would 12746mean that the filter is set to reduce incoming light by two stops 12747(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 12748<p>It may take several frames before the lens filter density changes 12749to the requested value.<wbr/> While the filter density is still changing,<wbr/> 12750<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 12751 </td> 12752 </tr> 12753 12754 12755 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12756 <!-- end of entry --> 12757 12758 12759 <tr class="entry" id="dynamic_android.lens.focalLength"> 12760 <td class="entry_name 12761 " rowspan="3"> 12762 android.<wbr/>lens.<wbr/>focal<wbr/>Length 12763 </td> 12764 <td class="entry_type"> 12765 <span class="entry_type_name">float</span> 12766 12767 <span class="entry_type_visibility"> [public]</span> 12768 12769 12770 <span class="entry_type_hwlevel">[legacy] </span> 12771 12772 12773 12774 12775 </td> <!-- entry_type --> 12776 12777 <td class="entry_description"> 12778 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 12779 </td> 12780 12781 <td class="entry_units"> 12782 Millimeters 12783 </td> 12784 12785 <td class="entry_range"> 12786 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 12787 </td> 12788 12789 <td class="entry_tags"> 12790 <ul class="entry_tags"> 12791 <li><a href="#tag_BC">BC</a></li> 12792 </ul> 12793 </td> 12794 12795 </tr> 12796 <tr class="entries_header"> 12797 <th class="th_details" colspan="5">Details</th> 12798 </tr> 12799 <tr class="entry_cont"> 12800 <td class="entry_details" colspan="5"> 12801 <p>This setting controls the physical focal length of the camera 12802device's lens.<wbr/> Changing the focal length changes the field of 12803view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 12804<p>Like <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>,<wbr/> this 12805setting won't be applied instantaneously,<wbr/> and it may take several 12806frames before the lens can change to the requested focal length.<wbr/> 12807While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 12808be set to MOVING.<wbr/></p> 12809<p>Optical zoom will not be supported on most devices.<wbr/></p> 12810 </td> 12811 </tr> 12812 12813 12814 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12815 <!-- end of entry --> 12816 12817 12818 <tr class="entry" id="dynamic_android.lens.focusDistance"> 12819 <td class="entry_name 12820 " rowspan="3"> 12821 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 12822 </td> 12823 <td class="entry_type"> 12824 <span class="entry_type_name">float</span> 12825 12826 <span class="entry_type_visibility"> [public]</span> 12827 12828 12829 <span class="entry_type_hwlevel">[full] </span> 12830 12831 12832 12833 12834 </td> <!-- entry_type --> 12835 12836 <td class="entry_description"> 12837 <p>Desired distance to plane of sharpest focus,<wbr/> 12838measured from frontmost surface of the lens.<wbr/></p> 12839 </td> 12840 12841 <td class="entry_units"> 12842 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 12843 </td> 12844 12845 <td class="entry_range"> 12846 <p>>= 0</p> 12847 </td> 12848 12849 <td class="entry_tags"> 12850 <ul class="entry_tags"> 12851 <li><a href="#tag_BC">BC</a></li> 12852 </ul> 12853 </td> 12854 12855 </tr> 12856 <tr class="entries_header"> 12857 <th class="th_details" colspan="5">Details</th> 12858 </tr> 12859 <tr class="entry_cont"> 12860 <td class="entry_details" colspan="5"> 12861 <p>Should be zero for fixed-focus cameras</p> 12862 </td> 12863 </tr> 12864 12865 12866 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12867 <!-- end of entry --> 12868 12869 12870 <tr class="entry" id="dynamic_android.lens.focusRange"> 12871 <td class="entry_name 12872 " rowspan="3"> 12873 android.<wbr/>lens.<wbr/>focus<wbr/>Range 12874 </td> 12875 <td class="entry_type"> 12876 <span class="entry_type_name">float</span> 12877 <span class="entry_type_container">x</span> 12878 12879 <span class="entry_type_array"> 12880 2 12881 </span> 12882 <span class="entry_type_visibility"> [public as pairFloatFloat]</span> 12883 12884 12885 <span class="entry_type_hwlevel">[limited] </span> 12886 12887 12888 <div class="entry_type_notes">Range of scene distances that are in focus</div> 12889 12890 12891 </td> <!-- entry_type --> 12892 12893 <td class="entry_description"> 12894 <p>The range of scene distances that are in 12895sharp focus (depth of field).<wbr/></p> 12896 </td> 12897 12898 <td class="entry_units"> 12899 A pair of focus distances in diopters: (near,<wbr/> 12900 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 12901 </td> 12902 12903 <td class="entry_range"> 12904 <p>>=0</p> 12905 </td> 12906 12907 <td class="entry_tags"> 12908 <ul class="entry_tags"> 12909 <li><a href="#tag_BC">BC</a></li> 12910 </ul> 12911 </td> 12912 12913 </tr> 12914 <tr class="entries_header"> 12915 <th class="th_details" colspan="5">Details</th> 12916 </tr> 12917 <tr class="entry_cont"> 12918 <td class="entry_details" colspan="5"> 12919 <p>If variable focus not supported,<wbr/> can still report 12920fixed depth of field range</p> 12921 </td> 12922 </tr> 12923 12924 12925 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12926 <!-- end of entry --> 12927 12928 12929 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode"> 12930 <td class="entry_name 12931 " rowspan="3"> 12932 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 12933 </td> 12934 <td class="entry_type"> 12935 <span class="entry_type_name entry_type_name_enum">byte</span> 12936 12937 <span class="entry_type_visibility"> [public]</span> 12938 12939 12940 <span class="entry_type_hwlevel">[limited] </span> 12941 12942 12943 12944 <ul class="entry_type_enum"> 12945 <li> 12946 <span class="entry_type_enum_name">OFF</span> 12947 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 12948 </li> 12949 <li> 12950 <span class="entry_type_enum_name">ON</span> 12951 <span class="entry_type_enum_optional">[optional]</span> 12952 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 12953 </li> 12954 </ul> 12955 12956 </td> <!-- entry_type --> 12957 12958 <td class="entry_description"> 12959 <p>Sets whether the camera device uses optical image stabilization (OIS) 12960when capturing images.<wbr/></p> 12961 </td> 12962 12963 <td class="entry_units"> 12964 </td> 12965 12966 <td class="entry_range"> 12967 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 12968 </td> 12969 12970 <td class="entry_tags"> 12971 <ul class="entry_tags"> 12972 <li><a href="#tag_V1">V1</a></li> 12973 </ul> 12974 </td> 12975 12976 </tr> 12977 <tr class="entries_header"> 12978 <th class="th_details" colspan="5">Details</th> 12979 </tr> 12980 <tr class="entry_cont"> 12981 <td class="entry_details" colspan="5"> 12982 <p>OIS is used to compensate for motion blur due to small 12983movements of the camera during capture.<wbr/> Unlike digital image 12984stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 12985makes use of mechanical elements to stabilize the camera 12986sensor,<wbr/> and thus allows for longer exposure times before 12987camera shake becomes apparent.<wbr/></p> 12988<p>Switching between different optical stabilization modes may take several 12989frames to initialize,<wbr/> the camera device will report the current mode in 12990capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 12991optical stabilization modes in the first several capture results may still 12992be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 12993<p>If a camera device supports both OIS and digital image stabilization 12994(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 12995interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 12996<p>Not all devices will support OIS; see 12997<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 12998available controls.<wbr/></p> 12999 </td> 13000 </tr> 13001 13002 13003 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13004 <!-- end of entry --> 13005 13006 13007 <tr class="entry" id="dynamic_android.lens.state"> 13008 <td class="entry_name 13009 " rowspan="3"> 13010 android.<wbr/>lens.<wbr/>state 13011 </td> 13012 <td class="entry_type"> 13013 <span class="entry_type_name entry_type_name_enum">byte</span> 13014 13015 <span class="entry_type_visibility"> [public]</span> 13016 13017 13018 <span class="entry_type_hwlevel">[limited] </span> 13019 13020 13021 13022 <ul class="entry_type_enum"> 13023 <li> 13024 <span class="entry_type_enum_name">STATIONARY</span> 13025 <span class="entry_type_enum_notes"><p>The lens parameters (<a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 13026<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>) are not changing.<wbr/></p></span> 13027 </li> 13028 <li> 13029 <span class="entry_type_enum_name">MOVING</span> 13030 <span class="entry_type_enum_notes"><p>One or several of the lens parameters 13031(<a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 13032<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> or <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>) is 13033currently changing.<wbr/></p></span> 13034 </li> 13035 </ul> 13036 13037 </td> <!-- entry_type --> 13038 13039 <td class="entry_description"> 13040 <p>Current lens status.<wbr/></p> 13041 </td> 13042 13043 <td class="entry_units"> 13044 </td> 13045 13046 <td class="entry_range"> 13047 </td> 13048 13049 <td class="entry_tags"> 13050 <ul class="entry_tags"> 13051 <li><a href="#tag_V1">V1</a></li> 13052 </ul> 13053 </td> 13054 13055 </tr> 13056 <tr class="entries_header"> 13057 <th class="th_details" colspan="5">Details</th> 13058 </tr> 13059 <tr class="entry_cont"> 13060 <td class="entry_details" colspan="5"> 13061 <p>For lens parameters <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 13062<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>,<wbr/> when changes are requested,<wbr/> 13063they may take several frames to reach the requested values.<wbr/> This state indicates 13064the current status of the lens parameters.<wbr/></p> 13065<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be 13066either because the parameters are all fixed,<wbr/> or because the lens has had enough 13067time to reach the most recently-requested values.<wbr/> 13068If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p> 13069<ul> 13070<li>Fixed focus (<code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> == 0</code>),<wbr/> which means 13071<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li> 13072<li>Fixed focal length (<a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a> contains single value),<wbr/> 13073which means the optical zoom is not supported.<wbr/></li> 13074<li>No ND filter (<a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a> contains only 0).<wbr/></li> 13075<li>Fixed aperture (<a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a> contains single value).<wbr/></li> 13076</ul> 13077<p>Then this state will always be STATIONARY.<wbr/></p> 13078<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters 13079is changing.<wbr/></p> 13080 </td> 13081 </tr> 13082 13083 13084 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13085 <!-- end of entry --> 13086 13087 13088 <tr class="entry" id="dynamic_android.lens.poseRotation"> 13089 <td class="entry_name 13090 " rowspan="3"> 13091 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 13092 </td> 13093 <td class="entry_type"> 13094 <span class="entry_type_name">float</span> 13095 <span class="entry_type_container">x</span> 13096 13097 <span class="entry_type_array"> 13098 4 13099 </span> 13100 <span class="entry_type_visibility"> [public]</span> 13101 13102 13103 13104 13105 13106 13107 </td> <!-- entry_type --> 13108 13109 <td class="entry_description"> 13110 <p>The orientation of the camera relative to the sensor 13111coordinate system.<wbr/></p> 13112 </td> 13113 13114 <td class="entry_units"> 13115 13116 Quaternion coefficients 13117 13118 </td> 13119 13120 <td class="entry_range"> 13121 </td> 13122 13123 <td class="entry_tags"> 13124 <ul class="entry_tags"> 13125 <li><a href="#tag_DEPTH">DEPTH</a></li> 13126 </ul> 13127 </td> 13128 13129 </tr> 13130 <tr class="entries_header"> 13131 <th class="th_details" colspan="5">Details</th> 13132 </tr> 13133 <tr class="entry_cont"> 13134 <td class="entry_details" colspan="5"> 13135 <p>The four coefficients that describe the quaternion 13136rotation from the Android sensor coordinate system to a 13137camera-aligned coordinate system where the X-axis is 13138aligned with the long side of the image sensor,<wbr/> the Y-axis 13139is aligned with the short side of the image sensor,<wbr/> and 13140the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 13141<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 13142to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 13143amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 13144<pre><code> theta = 2 * acos(w) 13145a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 13146a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 13147a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 13148</code></pre> 13149<p>To create a 3x3 rotation matrix that applies the rotation 13150defined by this quaternion,<wbr/> the following matrix can be 13151used:</p> 13152<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 13153 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 13154 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 13155</code></pre> 13156<p>This matrix can then be used to apply the rotation to a 13157 column vector point with</p> 13158<p><code>p' = Rp</code></p> 13159<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 13160 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 13161 </td> 13162 </tr> 13163 13164 13165 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13166 <!-- end of entry --> 13167 13168 13169 <tr class="entry" id="dynamic_android.lens.poseTranslation"> 13170 <td class="entry_name 13171 " rowspan="3"> 13172 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 13173 </td> 13174 <td class="entry_type"> 13175 <span class="entry_type_name">float</span> 13176 <span class="entry_type_container">x</span> 13177 13178 <span class="entry_type_array"> 13179 3 13180 </span> 13181 <span class="entry_type_visibility"> [public]</span> 13182 13183 13184 13185 13186 13187 13188 </td> <!-- entry_type --> 13189 13190 <td class="entry_description"> 13191 <p>Position of the camera optical center.<wbr/></p> 13192 </td> 13193 13194 <td class="entry_units"> 13195 Meters 13196 </td> 13197 13198 <td class="entry_range"> 13199 </td> 13200 13201 <td class="entry_tags"> 13202 <ul class="entry_tags"> 13203 <li><a href="#tag_DEPTH">DEPTH</a></li> 13204 </ul> 13205 </td> 13206 13207 </tr> 13208 <tr class="entries_header"> 13209 <th class="th_details" colspan="5">Details</th> 13210 </tr> 13211 <tr class="entry_cont"> 13212 <td class="entry_details" colspan="5"> 13213 <p>The position of the camera device's lens optical center,<wbr/> 13214as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the 13215optical center of the largest camera device facing in the 13216same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate 13217axes</a>.<wbr/> Note that only the axis definitions are shared with 13218the sensor coordinate system,<wbr/> but not the origin.<wbr/></p> 13219<p>If this device is the largest or only camera device with a 13220given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a 13221camera device with a lens optical center located 3 cm from 13222the main sensor along the +X axis (to the right from the 13223user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> 13224<p>To transform a pixel coordinates between two cameras 13225facing the same direction,<wbr/> first the source camera 13226<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then 13227the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs 13228to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> 13229of the source camera,<wbr/> the translation of the source camera 13230relative to the destination camera,<wbr/> the 13231<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and 13232finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 13233of the destination camera.<wbr/> This obtains a 13234radial-distortion-free coordinate in the destination 13235camera pixel coordinates.<wbr/></p> 13236<p>To compare this against a real image from the destination 13237camera,<wbr/> the destination camera image then needs to be 13238corrected for radial distortion before comparison or 13239sampling.<wbr/></p> 13240 </td> 13241 </tr> 13242 13243 13244 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13245 <!-- end of entry --> 13246 13247 13248 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration"> 13249 <td class="entry_name 13250 " rowspan="3"> 13251 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 13252 </td> 13253 <td class="entry_type"> 13254 <span class="entry_type_name">float</span> 13255 <span class="entry_type_container">x</span> 13256 13257 <span class="entry_type_array"> 13258 5 13259 </span> 13260 <span class="entry_type_visibility"> [public]</span> 13261 13262 13263 13264 13265 13266 13267 </td> <!-- entry_type --> 13268 13269 <td class="entry_description"> 13270 <p>The parameters for this camera device's intrinsic 13271calibration.<wbr/></p> 13272 </td> 13273 13274 <td class="entry_units"> 13275 13276 Pixels in the 13277 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 13278 coordinate system.<wbr/> 13279 13280 </td> 13281 13282 <td class="entry_range"> 13283 </td> 13284 13285 <td class="entry_tags"> 13286 <ul class="entry_tags"> 13287 <li><a href="#tag_DEPTH">DEPTH</a></li> 13288 </ul> 13289 </td> 13290 13291 </tr> 13292 <tr class="entries_header"> 13293 <th class="th_details" colspan="5">Details</th> 13294 </tr> 13295 <tr class="entry_cont"> 13296 <td class="entry_details" colspan="5"> 13297 <p>The five calibration parameters that describe the 13298transform from camera-centric 3D coordinates to sensor 13299pixel coordinates:</p> 13300<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 13301</code></pre> 13302<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 13303focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 13304axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 13305being aligned with the lens plane.<wbr/></p> 13306<p>These are typically used within a transformation matrix K:</p> 13307<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 13308 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 13309 0 0,<wbr/> 1 ] 13310</code></pre> 13311<p>which can then be combined with the camera pose rotation 13312<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 13313<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the 13314complete transform from world coordinates to pixel 13315coordinates:</p> 13316<pre><code>P = [ K 0 * [ R t 13317 0 1 ] 0 1 ] 13318</code></pre> 13319<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system 13320and <code>p_<wbr/>s</code> being a point in the camera active pixel array 13321coordinate system,<wbr/> and with the mapping including the 13322homogeneous division by z:</p> 13323<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 13324p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 13325</code></pre> 13326<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 13327point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 13328(depth) in pixel coordinates.<wbr/></p> 13329<p>Note that the coordinate system for this transform is the 13330<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> system,<wbr/> 13331where <code>(0,<wbr/>0)</code> is the top-left of the 13332preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 13333intrinsic calibration transforms have been applied to a 13334world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> 13335transform needs to be applied,<wbr/> and the result adjusted to 13336be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 13337system (where <code>(0,<wbr/> 0)</code> is the top-left of the 13338activeArraySize rectangle),<wbr/> to determine the final pixel 13339coordinate of the world point for processed (non-RAW) 13340output buffers.<wbr/></p> 13341 </td> 13342 </tr> 13343 13344 13345 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13346 <!-- end of entry --> 13347 13348 13349 <tr class="entry" id="dynamic_android.lens.radialDistortion"> 13350 <td class="entry_name 13351 " rowspan="3"> 13352 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 13353 </td> 13354 <td class="entry_type"> 13355 <span class="entry_type_name">float</span> 13356 <span class="entry_type_container">x</span> 13357 13358 <span class="entry_type_array"> 13359 6 13360 </span> 13361 <span class="entry_type_visibility"> [public]</span> 13362 13363 13364 13365 13366 13367 13368 </td> <!-- entry_type --> 13369 13370 <td class="entry_description"> 13371 <p>The correction coefficients to correct for this camera device's 13372radial and tangential lens distortion.<wbr/></p> 13373 </td> 13374 13375 <td class="entry_units"> 13376 13377 Unitless coefficients.<wbr/> 13378 13379 </td> 13380 13381 <td class="entry_range"> 13382 </td> 13383 13384 <td class="entry_tags"> 13385 <ul class="entry_tags"> 13386 <li><a href="#tag_DEPTH">DEPTH</a></li> 13387 </ul> 13388 </td> 13389 13390 </tr> 13391 <tr class="entries_header"> 13392 <th class="th_details" colspan="5">Details</th> 13393 </tr> 13394 <tr class="entry_cont"> 13395 <td class="entry_details" colspan="5"> 13396 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 13397kappa_<wbr/>3]</code> and two tangential distortion coefficients 13398<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 13399lens's geometric distortion with the mapping equations:</p> 13400<pre><code> x_<wbr/>c = x_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 13401 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 13402 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 13403 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 13404</code></pre> 13405<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 13406input image that correspond to the pixel values in the 13407corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 13408<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 13409</code></pre> 13410<p>The pixel coordinates are defined in a normalized 13411coordinate system related to the 13412<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 13413Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> have <code>(0,<wbr/>0)</code> at the 13414lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 13415of both x and y coordinates are normalized to be 1 at the 13416edge further from the optical center,<wbr/> so the range 13417for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 13418<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 13419optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 13420is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 13421<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 13422 </td> 13423 </tr> 13424 13425 13426 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13427 <!-- end of entry --> 13428 13429 13430 13431 <!-- end of kind --> 13432 </tbody> 13433 13434 <!-- end of section --> 13435 <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr> 13436 13437 13438 <tr><td colspan="6" class="kind">controls</td></tr> 13439 13440 <thead class="entries_header"> 13441 <tr> 13442 <th class="th_name">Property Name</th> 13443 <th class="th_type">Type</th> 13444 <th class="th_description">Description</th> 13445 <th class="th_units">Units</th> 13446 <th class="th_range">Range</th> 13447 <th class="th_tags">Tags</th> 13448 </tr> 13449 </thead> 13450 13451 <tbody> 13452 13453 13454 13455 13456 13457 13458 13459 13460 13461 13462 <tr class="entry" id="controls_android.noiseReduction.mode"> 13463 <td class="entry_name 13464 " rowspan="5"> 13465 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 13466 </td> 13467 <td class="entry_type"> 13468 <span class="entry_type_name entry_type_name_enum">byte</span> 13469 13470 <span class="entry_type_visibility"> [public]</span> 13471 13472 13473 <span class="entry_type_hwlevel">[full] </span> 13474 13475 13476 13477 <ul class="entry_type_enum"> 13478 <li> 13479 <span class="entry_type_enum_name">OFF</span> 13480 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 13481 </li> 13482 <li> 13483 <span class="entry_type_enum_name">FAST</span> 13484 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 13485output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 13486relative to sensor.<wbr/></p></span> 13487 </li> 13488 <li> 13489 <span class="entry_type_enum_name">HIGH_QUALITY</span> 13490 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 13491rate relative to sensor output.<wbr/></p></span> 13492 </li> 13493 <li> 13494 <span class="entry_type_enum_name">MINIMAL</span> 13495 <span class="entry_type_enum_optional">[optional]</span> 13496 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 13497sensor output.<wbr/> </p></span> 13498 </li> 13499 <li> 13500 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 13501 <span class="entry_type_enum_optional">[optional]</span> 13502 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 13503based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have noise 13504reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no 13505noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction 13506for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality 13507is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/> 13508quality may improve from FAST).<wbr/></p> 13509<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 13510with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 13511high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 13512produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 13513high-resolution buffers must not have noise reduction applied to maximize efficiency of 13514preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 13515low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 13516applied for reasonable preview quality.<wbr/></p> 13517<p>This mode is guaranteed to be supported by devices that support either the 13518YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 13519(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 13520be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 13521 </li> 13522 </ul> 13523 13524 </td> <!-- entry_type --> 13525 13526 <td class="entry_description"> 13527 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 13528 </td> 13529 13530 <td class="entry_units"> 13531 </td> 13532 13533 <td class="entry_range"> 13534 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 13535 </td> 13536 13537 <td class="entry_tags"> 13538 <ul class="entry_tags"> 13539 <li><a href="#tag_V1">V1</a></li> 13540 <li><a href="#tag_REPROC">REPROC</a></li> 13541 </ul> 13542 </td> 13543 13544 </tr> 13545 <tr class="entries_header"> 13546 <th class="th_details" colspan="5">Details</th> 13547 </tr> 13548 <tr class="entry_cont"> 13549 <td class="entry_details" colspan="5"> 13550 <p>The noise reduction algorithm attempts to improve image quality by removing 13551excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 13552<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 13553YUV domain.<wbr/></p> 13554<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 13555demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 13556This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 13557<a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> before using it.<wbr/></p> 13558<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 13559will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 13560will use the highest-quality noise filtering algorithms,<wbr/> 13561even if it slows down capture rate.<wbr/> FAST means the camera device will not 13562slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 13563MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 13564Every output stream will have a similar amount of enhancement applied.<wbr/></p> 13565<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 13566buffer of high-resolution images during preview and reprocess image(s) from that buffer 13567into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 13568noise reduction to low-resolution streams (below maximum recording resolution) to maximize 13569preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 13570those will be reprocessed later if necessary.<wbr/></p> 13571<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 13572will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 13573may adjust the noise reduction parameters for best image quality based on the 13574<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 13575 </td> 13576 </tr> 13577 13578 <tr class="entries_header"> 13579 <th class="th_details" colspan="5">HAL Implementation Details</th> 13580 </tr> 13581 <tr class="entry_cont"> 13582 <td class="entry_details" colspan="5"> 13583 <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to 13584adjust the internal noise reduction parameters appropriately to get the best quality 13585images.<wbr/></p> 13586 </td> 13587 </tr> 13588 13589 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13590 <!-- end of entry --> 13591 13592 13593 <tr class="entry" id="controls_android.noiseReduction.strength"> 13594 <td class="entry_name 13595 " rowspan="1"> 13596 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength 13597 </td> 13598 <td class="entry_type"> 13599 <span class="entry_type_name">byte</span> 13600 13601 <span class="entry_type_visibility"> [system]</span> 13602 13603 13604 13605 13606 13607 13608 </td> <!-- entry_type --> 13609 13610 <td class="entry_description"> 13611 <p>Control the amount of noise reduction 13612applied to the images</p> 13613 </td> 13614 13615 <td class="entry_units"> 13616 1-10; 10 is max noise reduction 13617 </td> 13618 13619 <td class="entry_range"> 13620 <p>1 - 10</p> 13621 </td> 13622 13623 <td class="entry_tags"> 13624 <ul class="entry_tags"> 13625 <li><a href="#tag_FUTURE">FUTURE</a></li> 13626 </ul> 13627 </td> 13628 13629 </tr> 13630 13631 13632 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13633 <!-- end of entry --> 13634 13635 13636 13637 <!-- end of kind --> 13638 </tbody> 13639 <tr><td colspan="6" class="kind">static</td></tr> 13640 13641 <thead class="entries_header"> 13642 <tr> 13643 <th class="th_name">Property Name</th> 13644 <th class="th_type">Type</th> 13645 <th class="th_description">Description</th> 13646 <th class="th_units">Units</th> 13647 <th class="th_range">Range</th> 13648 <th class="th_tags">Tags</th> 13649 </tr> 13650 </thead> 13651 13652 <tbody> 13653 13654 13655 13656 13657 13658 13659 13660 13661 13662 13663 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes"> 13664 <td class="entry_name 13665 " rowspan="5"> 13666 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes 13667 </td> 13668 <td class="entry_type"> 13669 <span class="entry_type_name">byte</span> 13670 <span class="entry_type_container">x</span> 13671 13672 <span class="entry_type_array"> 13673 n 13674 </span> 13675 <span class="entry_type_visibility"> [public as enumList]</span> 13676 13677 13678 <span class="entry_type_hwlevel">[limited] </span> 13679 13680 13681 <div class="entry_type_notes">list of enums</div> 13682 13683 13684 </td> <!-- entry_type --> 13685 13686 <td class="entry_description"> 13687 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported 13688by this camera device.<wbr/></p> 13689 </td> 13690 13691 <td class="entry_units"> 13692 </td> 13693 13694 <td class="entry_range"> 13695 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p> 13696 </td> 13697 13698 <td class="entry_tags"> 13699 <ul class="entry_tags"> 13700 <li><a href="#tag_V1">V1</a></li> 13701 <li><a href="#tag_REPROC">REPROC</a></li> 13702 </ul> 13703 </td> 13704 13705 </tr> 13706 <tr class="entries_header"> 13707 <th class="th_details" colspan="5">Details</th> 13708 </tr> 13709 <tr class="entry_cont"> 13710 <td class="entry_details" colspan="5"> 13711 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p> 13712<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support 13713ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p> 13714<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p> 13715 </td> 13716 </tr> 13717 13718 <tr class="entries_header"> 13719 <th class="th_details" colspan="5">HAL Implementation Details</th> 13720 </tr> 13721 <tr class="entry_cont"> 13722 <td class="entry_details" colspan="5"> 13723 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available 13724on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 13725That is,<wbr/> if the highest quality implementation on the camera device does not slow down 13726capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 13727 </td> 13728 </tr> 13729 13730 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13731 <!-- end of entry --> 13732 13733 13734 13735 <!-- end of kind --> 13736 </tbody> 13737 <tr><td colspan="6" class="kind">dynamic</td></tr> 13738 13739 <thead class="entries_header"> 13740 <tr> 13741 <th class="th_name">Property Name</th> 13742 <th class="th_type">Type</th> 13743 <th class="th_description">Description</th> 13744 <th class="th_units">Units</th> 13745 <th class="th_range">Range</th> 13746 <th class="th_tags">Tags</th> 13747 </tr> 13748 </thead> 13749 13750 <tbody> 13751 13752 13753 13754 13755 13756 13757 13758 13759 13760 13761 <tr class="entry" id="dynamic_android.noiseReduction.mode"> 13762 <td class="entry_name 13763 " rowspan="5"> 13764 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 13765 </td> 13766 <td class="entry_type"> 13767 <span class="entry_type_name entry_type_name_enum">byte</span> 13768 13769 <span class="entry_type_visibility"> [public]</span> 13770 13771 13772 <span class="entry_type_hwlevel">[full] </span> 13773 13774 13775 13776 <ul class="entry_type_enum"> 13777 <li> 13778 <span class="entry_type_enum_name">OFF</span> 13779 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 13780 </li> 13781 <li> 13782 <span class="entry_type_enum_name">FAST</span> 13783 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 13784output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 13785relative to sensor.<wbr/></p></span> 13786 </li> 13787 <li> 13788 <span class="entry_type_enum_name">HIGH_QUALITY</span> 13789 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 13790rate relative to sensor output.<wbr/></p></span> 13791 </li> 13792 <li> 13793 <span class="entry_type_enum_name">MINIMAL</span> 13794 <span class="entry_type_enum_optional">[optional]</span> 13795 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 13796sensor output.<wbr/> </p></span> 13797 </li> 13798 <li> 13799 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 13800 <span class="entry_type_enum_optional">[optional]</span> 13801 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 13802based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have noise 13803reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no 13804noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction 13805for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality 13806is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/> 13807quality may improve from FAST).<wbr/></p> 13808<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 13809with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 13810high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 13811produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 13812high-resolution buffers must not have noise reduction applied to maximize efficiency of 13813preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 13814low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 13815applied for reasonable preview quality.<wbr/></p> 13816<p>This mode is guaranteed to be supported by devices that support either the 13817YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 13818(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 13819be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 13820 </li> 13821 </ul> 13822 13823 </td> <!-- entry_type --> 13824 13825 <td class="entry_description"> 13826 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 13827 </td> 13828 13829 <td class="entry_units"> 13830 </td> 13831 13832 <td class="entry_range"> 13833 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 13834 </td> 13835 13836 <td class="entry_tags"> 13837 <ul class="entry_tags"> 13838 <li><a href="#tag_V1">V1</a></li> 13839 <li><a href="#tag_REPROC">REPROC</a></li> 13840 </ul> 13841 </td> 13842 13843 </tr> 13844 <tr class="entries_header"> 13845 <th class="th_details" colspan="5">Details</th> 13846 </tr> 13847 <tr class="entry_cont"> 13848 <td class="entry_details" colspan="5"> 13849 <p>The noise reduction algorithm attempts to improve image quality by removing 13850excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 13851<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 13852YUV domain.<wbr/></p> 13853<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 13854demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 13855This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 13856<a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> before using it.<wbr/></p> 13857<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 13858will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 13859will use the highest-quality noise filtering algorithms,<wbr/> 13860even if it slows down capture rate.<wbr/> FAST means the camera device will not 13861slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 13862MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 13863Every output stream will have a similar amount of enhancement applied.<wbr/></p> 13864<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 13865buffer of high-resolution images during preview and reprocess image(s) from that buffer 13866into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 13867noise reduction to low-resolution streams (below maximum recording resolution) to maximize 13868preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 13869those will be reprocessed later if necessary.<wbr/></p> 13870<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 13871will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 13872may adjust the noise reduction parameters for best image quality based on the 13873<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 13874 </td> 13875 </tr> 13876 13877 <tr class="entries_header"> 13878 <th class="th_details" colspan="5">HAL Implementation Details</th> 13879 </tr> 13880 <tr class="entry_cont"> 13881 <td class="entry_details" colspan="5"> 13882 <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to 13883adjust the internal noise reduction parameters appropriately to get the best quality 13884images.<wbr/></p> 13885 </td> 13886 </tr> 13887 13888 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13889 <!-- end of entry --> 13890 13891 13892 13893 <!-- end of kind --> 13894 </tbody> 13895 13896 <!-- end of section --> 13897 <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr> 13898 13899 13900 <tr><td colspan="6" class="kind">static</td></tr> 13901 13902 <thead class="entries_header"> 13903 <tr> 13904 <th class="th_name">Property Name</th> 13905 <th class="th_type">Type</th> 13906 <th class="th_description">Description</th> 13907 <th class="th_units">Units</th> 13908 <th class="th_range">Range</th> 13909 <th class="th_tags">Tags</th> 13910 </tr> 13911 </thead> 13912 13913 <tbody> 13914 13915 13916 13917 13918 13919 13920 13921 13922 13923 13924 <tr class="entry" id="static_android.quirks.meteringCropRegion"> 13925 <td class="entry_name 13926 entry_name_deprecated 13927 " rowspan="3"> 13928 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region 13929 </td> 13930 <td class="entry_type"> 13931 <span class="entry_type_name">byte</span> 13932 13933 <span class="entry_type_visibility"> [system]</span> 13934 13935 13936 13937 <span class="entry_type_deprecated">[deprecated] </span> 13938 13939 13940 13941 </td> <!-- entry_type --> 13942 13943 <td class="entry_description"> 13944 <p>If set to 1,<wbr/> the camera service does not 13945scale 'normalized' coordinates with respect to the crop 13946region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region 13947and output (face rectangles).<wbr/></p> 13948 </td> 13949 13950 <td class="entry_units"> 13951 </td> 13952 13953 <td class="entry_range"> 13954 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13955 </td> 13956 13957 <td class="entry_tags"> 13958 </td> 13959 13960 </tr> 13961 <tr class="entries_header"> 13962 <th class="th_details" colspan="5">Details</th> 13963 </tr> 13964 <tr class="entry_cont"> 13965 <td class="entry_details" colspan="5"> 13966 <p>Normalized coordinates refer to those in the 13967(-1000,<wbr/>1000) range mentioned in the 13968android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 13969<p>HAL implementations should instead always use and emit 13970sensor array-relative coordinates for all region data.<wbr/> Does 13971not need to be listed in static metadata.<wbr/> Support will be 13972removed in future versions of camera service.<wbr/></p> 13973 </td> 13974 </tr> 13975 13976 13977 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13978 <!-- end of entry --> 13979 13980 13981 <tr class="entry" id="static_android.quirks.triggerAfWithAuto"> 13982 <td class="entry_name 13983 entry_name_deprecated 13984 " rowspan="3"> 13985 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto 13986 </td> 13987 <td class="entry_type"> 13988 <span class="entry_type_name">byte</span> 13989 13990 <span class="entry_type_visibility"> [system]</span> 13991 13992 13993 13994 <span class="entry_type_deprecated">[deprecated] </span> 13995 13996 13997 13998 </td> <!-- entry_type --> 13999 14000 <td class="entry_description"> 14001 <p>If set to 1,<wbr/> then the camera service always 14002switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF 14003trigger.<wbr/></p> 14004 </td> 14005 14006 <td class="entry_units"> 14007 </td> 14008 14009 <td class="entry_range"> 14010 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14011 </td> 14012 14013 <td class="entry_tags"> 14014 </td> 14015 14016 </tr> 14017 <tr class="entries_header"> 14018 <th class="th_details" colspan="5">Details</th> 14019 </tr> 14020 <tr class="entry_cont"> 14021 <td class="entry_details" colspan="5"> 14022 <p>HAL implementations should implement AF trigger 14023modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and 14024CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does 14025not need to be listed in static metadata.<wbr/> Support will be 14026removed in future versions of camera service</p> 14027 </td> 14028 </tr> 14029 14030 14031 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14032 <!-- end of entry --> 14033 14034 14035 <tr class="entry" id="static_android.quirks.useZslFormat"> 14036 <td class="entry_name 14037 entry_name_deprecated 14038 " rowspan="3"> 14039 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format 14040 </td> 14041 <td class="entry_type"> 14042 <span class="entry_type_name">byte</span> 14043 14044 <span class="entry_type_visibility"> [system]</span> 14045 14046 14047 14048 <span class="entry_type_deprecated">[deprecated] </span> 14049 14050 14051 14052 </td> <!-- entry_type --> 14053 14054 <td class="entry_description"> 14055 <p>If set to 1,<wbr/> the camera service uses 14056CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of 14057HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero 14058shutter lag stream</p> 14059 </td> 14060 14061 <td class="entry_units"> 14062 </td> 14063 14064 <td class="entry_range"> 14065 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14066 </td> 14067 14068 <td class="entry_tags"> 14069 </td> 14070 14071 </tr> 14072 <tr class="entries_header"> 14073 <th class="th_details" colspan="5">Details</th> 14074 </tr> 14075 <tr class="entry_cont"> 14076 <td class="entry_details" colspan="5"> 14077 <p>HAL implementations should use gralloc usage flags 14078to determine that a stream will be used for 14079zero-shutter-lag,<wbr/> instead of relying on an explicit 14080format setting.<wbr/> Does not need to be listed in static 14081metadata.<wbr/> Support will be removed in future versions of 14082camera service.<wbr/></p> 14083 </td> 14084 </tr> 14085 14086 14087 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14088 <!-- end of entry --> 14089 14090 14091 <tr class="entry" id="static_android.quirks.usePartialResult"> 14092 <td class="entry_name 14093 entry_name_deprecated 14094 " rowspan="5"> 14095 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result 14096 </td> 14097 <td class="entry_type"> 14098 <span class="entry_type_name">byte</span> 14099 14100 <span class="entry_type_visibility"> [hidden]</span> 14101 14102 14103 14104 <span class="entry_type_deprecated">[deprecated] </span> 14105 14106 14107 14108 </td> <!-- entry_type --> 14109 14110 <td class="entry_description"> 14111 <p>If set to 1,<wbr/> the HAL will always split result 14112metadata for a single capture into multiple buffers,<wbr/> 14113returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p> 14114 </td> 14115 14116 <td class="entry_units"> 14117 </td> 14118 14119 <td class="entry_range"> 14120 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14121 </td> 14122 14123 <td class="entry_tags"> 14124 </td> 14125 14126 </tr> 14127 <tr class="entries_header"> 14128 <th class="th_details" colspan="5">Details</th> 14129 </tr> 14130 <tr class="entry_cont"> 14131 <td class="entry_details" colspan="5"> 14132 <p>Does not need to be listed in static 14133metadata.<wbr/> Support for partial results will be reworked in 14134future versions of camera service.<wbr/> This quirk will stop 14135working at that point; DO NOT USE without careful 14136consideration of future support.<wbr/></p> 14137 </td> 14138 </tr> 14139 14140 <tr class="entries_header"> 14141 <th class="th_details" colspan="5">HAL Implementation Details</th> 14142 </tr> 14143 <tr class="entry_cont"> 14144 <td class="entry_details" colspan="5"> 14145 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 14146for information on how to implement partial results.<wbr/></p> 14147 </td> 14148 </tr> 14149 14150 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14151 <!-- end of entry --> 14152 14153 14154 14155 <!-- end of kind --> 14156 </tbody> 14157 <tr><td colspan="6" class="kind">dynamic</td></tr> 14158 14159 <thead class="entries_header"> 14160 <tr> 14161 <th class="th_name">Property Name</th> 14162 <th class="th_type">Type</th> 14163 <th class="th_description">Description</th> 14164 <th class="th_units">Units</th> 14165 <th class="th_range">Range</th> 14166 <th class="th_tags">Tags</th> 14167 </tr> 14168 </thead> 14169 14170 <tbody> 14171 14172 14173 14174 14175 14176 14177 14178 14179 14180 14181 <tr class="entry" id="dynamic_android.quirks.partialResult"> 14182 <td class="entry_name 14183 entry_name_deprecated 14184 " rowspan="5"> 14185 android.<wbr/>quirks.<wbr/>partial<wbr/>Result 14186 </td> 14187 <td class="entry_type"> 14188 <span class="entry_type_name entry_type_name_enum">byte</span> 14189 14190 <span class="entry_type_visibility"> [hidden as boolean]</span> 14191 14192 14193 14194 <span class="entry_type_deprecated">[deprecated] </span> 14195 14196 14197 <ul class="entry_type_enum"> 14198 <li> 14199 <span class="entry_type_enum_name">FINAL</span> 14200 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer 14201for this capture.<wbr/></p></span> 14202 </li> 14203 <li> 14204 <span class="entry_type_enum_name">PARTIAL</span> 14205 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this 14206capture.<wbr/> More result buffers for this capture will be sent 14207by the camera device,<wbr/> the last of which will be marked 14208FINAL.<wbr/></p></span> 14209 </li> 14210 </ul> 14211 14212 </td> <!-- entry_type --> 14213 14214 <td class="entry_description"> 14215 <p>Whether a result given to the framework is the 14216final one for the capture,<wbr/> or only a partial that contains a 14217subset of the full set of dynamic metadata 14218values.<wbr/></p> 14219 </td> 14220 14221 <td class="entry_units"> 14222 </td> 14223 14224 <td class="entry_range"> 14225 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14226 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p> 14227 </td> 14228 14229 <td class="entry_tags"> 14230 </td> 14231 14232 </tr> 14233 <tr class="entries_header"> 14234 <th class="th_details" colspan="5">Details</th> 14235 </tr> 14236 <tr class="entry_cont"> 14237 <td class="entry_details" colspan="5"> 14238 <p>The entries in the result metadata buffers for a 14239single capture may not overlap,<wbr/> except for this entry.<wbr/> The 14240FINAL buffers must retain FIFO ordering relative to the 14241requests that generate them,<wbr/> so the FINAL buffer for frame 3 must 14242always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and 14243before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned 14244in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given 14245capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may 14246only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p> 14247 </td> 14248 </tr> 14249 14250 <tr class="entries_header"> 14251 <th class="th_details" colspan="5">HAL Implementation Details</th> 14252 </tr> 14253 <tr class="entry_cont"> 14254 <td class="entry_details" colspan="5"> 14255 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 14256for information on how to implement partial results.<wbr/></p> 14257 </td> 14258 </tr> 14259 14260 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14261 <!-- end of entry --> 14262 14263 14264 14265 <!-- end of kind --> 14266 </tbody> 14267 14268 <!-- end of section --> 14269 <tr><td colspan="6" id="section_request" class="section">request</td></tr> 14270 14271 14272 <tr><td colspan="6" class="kind">controls</td></tr> 14273 14274 <thead class="entries_header"> 14275 <tr> 14276 <th class="th_name">Property Name</th> 14277 <th class="th_type">Type</th> 14278 <th class="th_description">Description</th> 14279 <th class="th_units">Units</th> 14280 <th class="th_range">Range</th> 14281 <th class="th_tags">Tags</th> 14282 </tr> 14283 </thead> 14284 14285 <tbody> 14286 14287 14288 14289 14290 14291 14292 14293 14294 14295 14296 <tr class="entry" id="controls_android.request.frameCount"> 14297 <td class="entry_name 14298 entry_name_deprecated 14299 " rowspan="1"> 14300 android.<wbr/>request.<wbr/>frame<wbr/>Count 14301 </td> 14302 <td class="entry_type"> 14303 <span class="entry_type_name">int32</span> 14304 14305 <span class="entry_type_visibility"> [system]</span> 14306 14307 14308 14309 <span class="entry_type_deprecated">[deprecated] </span> 14310 14311 14312 14313 </td> <!-- entry_type --> 14314 14315 <td class="entry_description"> 14316 <p>A frame counter set by the framework.<wbr/> Must 14317be maintained unchanged in output frame.<wbr/> This value monotonically 14318increases with every new result (that is,<wbr/> each new result has a unique 14319frameCount value).<wbr/></p> 14320 </td> 14321 14322 <td class="entry_units"> 14323 incrementing integer 14324 </td> 14325 14326 <td class="entry_range"> 14327 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14328 <p>Any int.<wbr/></p> 14329 </td> 14330 14331 <td class="entry_tags"> 14332 </td> 14333 14334 </tr> 14335 14336 14337 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14338 <!-- end of entry --> 14339 14340 14341 <tr class="entry" id="controls_android.request.id"> 14342 <td class="entry_name 14343 " rowspan="1"> 14344 android.<wbr/>request.<wbr/>id 14345 </td> 14346 <td class="entry_type"> 14347 <span class="entry_type_name">int32</span> 14348 14349 <span class="entry_type_visibility"> [hidden]</span> 14350 14351 14352 14353 14354 14355 14356 </td> <!-- entry_type --> 14357 14358 <td class="entry_description"> 14359 <p>An application-specified ID for the current 14360request.<wbr/> Must be maintained unchanged in output 14361frame</p> 14362 </td> 14363 14364 <td class="entry_units"> 14365 arbitrary integer assigned by application 14366 </td> 14367 14368 <td class="entry_range"> 14369 <p>Any int</p> 14370 </td> 14371 14372 <td class="entry_tags"> 14373 <ul class="entry_tags"> 14374 <li><a href="#tag_V1">V1</a></li> 14375 </ul> 14376 </td> 14377 14378 </tr> 14379 14380 14381 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14382 <!-- end of entry --> 14383 14384 14385 <tr class="entry" id="controls_android.request.inputStreams"> 14386 <td class="entry_name 14387 entry_name_deprecated 14388 " rowspan="3"> 14389 android.<wbr/>request.<wbr/>input<wbr/>Streams 14390 </td> 14391 <td class="entry_type"> 14392 <span class="entry_type_name">int32</span> 14393 <span class="entry_type_container">x</span> 14394 14395 <span class="entry_type_array"> 14396 n 14397 </span> 14398 <span class="entry_type_visibility"> [system]</span> 14399 14400 14401 14402 <span class="entry_type_deprecated">[deprecated] </span> 14403 14404 14405 14406 </td> <!-- entry_type --> 14407 14408 <td class="entry_description"> 14409 <p>List which camera reprocess stream is used 14410for the source of reprocessing data.<wbr/></p> 14411 </td> 14412 14413 <td class="entry_units"> 14414 List of camera reprocess stream IDs 14415 </td> 14416 14417 <td class="entry_range"> 14418 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14419 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p> 14420 </td> 14421 14422 <td class="entry_tags"> 14423 <ul class="entry_tags"> 14424 <li><a href="#tag_HAL2">HAL2</a></li> 14425 </ul> 14426 </td> 14427 14428 </tr> 14429 <tr class="entries_header"> 14430 <th class="th_details" colspan="5">Details</th> 14431 </tr> 14432 <tr class="entry_cont"> 14433 <td class="entry_details" colspan="5"> 14434 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> == 14435REPROCESS.<wbr/> Ignored otherwise</p> 14436 </td> 14437 </tr> 14438 14439 14440 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14441 <!-- end of entry --> 14442 14443 14444 <tr class="entry" id="controls_android.request.metadataMode"> 14445 <td class="entry_name 14446 " rowspan="1"> 14447 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 14448 </td> 14449 <td class="entry_type"> 14450 <span class="entry_type_name entry_type_name_enum">byte</span> 14451 14452 <span class="entry_type_visibility"> [system]</span> 14453 14454 14455 14456 14457 14458 <ul class="entry_type_enum"> 14459 <li> 14460 <span class="entry_type_enum_name">NONE</span> 14461 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 14462for application-bound buffer data.<wbr/> If no 14463application-bound streams exist,<wbr/> no frame should be 14464placed in the output frame queue.<wbr/> If such streams 14465exist,<wbr/> a frame should be placed on the output queue 14466with null metadata but with the necessary output buffer 14467information.<wbr/> Timestamp information should still be 14468included with any output stream buffers</p></span> 14469 </li> 14470 <li> 14471 <span class="entry_type_enum_name">FULL</span> 14472 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 14473only be produced if they are separately 14474enabled</p></span> 14475 </li> 14476 </ul> 14477 14478 </td> <!-- entry_type --> 14479 14480 <td class="entry_description"> 14481 <p>How much metadata to produce on 14482output</p> 14483 </td> 14484 14485 <td class="entry_units"> 14486 </td> 14487 14488 <td class="entry_range"> 14489 </td> 14490 14491 <td class="entry_tags"> 14492 <ul class="entry_tags"> 14493 <li><a href="#tag_FUTURE">FUTURE</a></li> 14494 </ul> 14495 </td> 14496 14497 </tr> 14498 14499 14500 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14501 <!-- end of entry --> 14502 14503 14504 <tr class="entry" id="controls_android.request.outputStreams"> 14505 <td class="entry_name 14506 entry_name_deprecated 14507 " rowspan="3"> 14508 android.<wbr/>request.<wbr/>output<wbr/>Streams 14509 </td> 14510 <td class="entry_type"> 14511 <span class="entry_type_name">int32</span> 14512 <span class="entry_type_container">x</span> 14513 14514 <span class="entry_type_array"> 14515 n 14516 </span> 14517 <span class="entry_type_visibility"> [system]</span> 14518 14519 14520 14521 <span class="entry_type_deprecated">[deprecated] </span> 14522 14523 14524 14525 </td> <!-- entry_type --> 14526 14527 <td class="entry_description"> 14528 <p>Lists which camera output streams image data 14529from this capture must be sent to</p> 14530 </td> 14531 14532 <td class="entry_units"> 14533 List of camera stream IDs 14534 </td> 14535 14536 <td class="entry_range"> 14537 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14538 <p>List must only include streams that have been 14539created</p> 14540 </td> 14541 14542 <td class="entry_tags"> 14543 <ul class="entry_tags"> 14544 <li><a href="#tag_HAL2">HAL2</a></li> 14545 </ul> 14546 </td> 14547 14548 </tr> 14549 <tr class="entries_header"> 14550 <th class="th_details" colspan="5">Details</th> 14551 </tr> 14552 <tr class="entry_cont"> 14553 <td class="entry_details" colspan="5"> 14554 <p>If no output streams are listed,<wbr/> then the image 14555data should simply be discarded.<wbr/> The image data must 14556still be captured for metadata and statistics production,<wbr/> 14557and the lens and flash must operate as requested.<wbr/></p> 14558 </td> 14559 </tr> 14560 14561 14562 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14563 <!-- end of entry --> 14564 14565 14566 <tr class="entry" id="controls_android.request.type"> 14567 <td class="entry_name 14568 entry_name_deprecated 14569 " rowspan="1"> 14570 android.<wbr/>request.<wbr/>type 14571 </td> 14572 <td class="entry_type"> 14573 <span class="entry_type_name entry_type_name_enum">byte</span> 14574 14575 <span class="entry_type_visibility"> [system]</span> 14576 14577 14578 14579 <span class="entry_type_deprecated">[deprecated] </span> 14580 14581 14582 <ul class="entry_type_enum"> 14583 <li> 14584 <span class="entry_type_enum_name">CAPTURE</span> 14585 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/> 14586and process it according to the 14587settings</p></span> 14588 </li> 14589 <li> 14590 <span class="entry_type_enum_name">REPROCESS</span> 14591 <span class="entry_type_enum_notes"><p>Process previously captured data; the 14592<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the 14593source reprocessing stream.<wbr/> TODO: Mark dynamic metadata 14594needed for reprocessing with [RP]</p></span> 14595 </li> 14596 </ul> 14597 14598 </td> <!-- entry_type --> 14599 14600 <td class="entry_description"> 14601 <p>The type of the request; either CAPTURE or 14602REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p> 14603 </td> 14604 14605 <td class="entry_units"> 14606 </td> 14607 14608 <td class="entry_range"> 14609 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14610 </td> 14611 14612 <td class="entry_tags"> 14613 <ul class="entry_tags"> 14614 <li><a href="#tag_HAL2">HAL2</a></li> 14615 </ul> 14616 </td> 14617 14618 </tr> 14619 14620 14621 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14622 <!-- end of entry --> 14623 14624 14625 14626 <!-- end of kind --> 14627 </tbody> 14628 <tr><td colspan="6" class="kind">static</td></tr> 14629 14630 <thead class="entries_header"> 14631 <tr> 14632 <th class="th_name">Property Name</th> 14633 <th class="th_type">Type</th> 14634 <th class="th_description">Description</th> 14635 <th class="th_units">Units</th> 14636 <th class="th_range">Range</th> 14637 <th class="th_tags">Tags</th> 14638 </tr> 14639 </thead> 14640 14641 <tbody> 14642 14643 14644 14645 14646 14647 14648 14649 14650 14651 14652 <tr class="entry" id="static_android.request.maxNumOutputStreams"> 14653 <td class="entry_name 14654 " rowspan="3"> 14655 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams 14656 </td> 14657 <td class="entry_type"> 14658 <span class="entry_type_name">int32</span> 14659 <span class="entry_type_container">x</span> 14660 14661 <span class="entry_type_array"> 14662 3 14663 </span> 14664 <span class="entry_type_visibility"> [hidden]</span> 14665 14666 14667 <span class="entry_type_hwlevel">[legacy] </span> 14668 14669 14670 14671 14672 </td> <!-- entry_type --> 14673 14674 <td class="entry_description"> 14675 <p>The maximum numbers of different types of output streams 14676that can be configured and used simultaneously by a camera device.<wbr/></p> 14677 </td> 14678 14679 <td class="entry_units"> 14680 </td> 14681 14682 <td class="entry_range"> 14683 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p> 14684<p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p> 14685<p>For processed (but not stalling) format streams,<wbr/> >= 3 14686for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 14687>= 2 for LIMITED mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>).<wbr/></p> 14688 </td> 14689 14690 <td class="entry_tags"> 14691 <ul class="entry_tags"> 14692 <li><a href="#tag_BC">BC</a></li> 14693 </ul> 14694 </td> 14695 14696 </tr> 14697 <tr class="entries_header"> 14698 <th class="th_details" colspan="5">Details</th> 14699 </tr> 14700 <tr class="entry_cont"> 14701 <td class="entry_details" colspan="5"> 14702 <p>This is a 3 element tuple that contains the max number of output simultaneous 14703streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling) 14704formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and 14705stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams 14706number is 3,<wbr/> and max JPEG stream number is 2,<wbr/> then this tuple should be <code>(1,<wbr/> 3,<wbr/> 2)</code>.<wbr/></p> 14707<p>This lists the upper bound of the number of output streams supported by 14708the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14709CPU resources that will consume more power.<wbr/> The image format for an output stream can 14710be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 14711The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized 14712into the 3 stream types as below:</p> 14713<ul> 14714<li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/> 14715 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li> 14716<li>Raw formats: <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a>,<wbr/> or <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li> 14717<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> 14718 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/> 14719 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or 14720 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li> 14721</ul> 14722 </td> 14723 </tr> 14724 14725 14726 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14727 <!-- end of entry --> 14728 14729 14730 <tr class="entry" id="static_android.request.maxNumOutputRaw"> 14731 <td class="entry_name 14732 " rowspan="3"> 14733 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw 14734 </td> 14735 <td class="entry_type"> 14736 <span class="entry_type_name">int32</span> 14737 14738 <span class="entry_type_visibility"> [public]</span> 14739 14740 <span class="entry_type_synthetic">[synthetic] </span> 14741 14742 <span class="entry_type_hwlevel">[legacy] </span> 14743 14744 14745 14746 14747 </td> <!-- entry_type --> 14748 14749 <td class="entry_description"> 14750 <p>The maximum numbers of different types of output streams 14751that can be configured and used simultaneously by a camera device 14752for any <code>RAW</code> formats.<wbr/></p> 14753 </td> 14754 14755 <td class="entry_units"> 14756 </td> 14757 14758 <td class="entry_range"> 14759 <p>>= 0</p> 14760 </td> 14761 14762 <td class="entry_tags"> 14763 </td> 14764 14765 </tr> 14766 <tr class="entries_header"> 14767 <th class="th_details" colspan="5">Details</th> 14768 </tr> 14769 <tr class="entry_cont"> 14770 <td class="entry_details" colspan="5"> 14771 <p>This value contains the max number of output simultaneous 14772streams from the raw sensor.<wbr/></p> 14773<p>This lists the upper bound of the number of output streams supported by 14774the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14775CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 14776be any <code>RAW</code> and supported format provided by <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p> 14777<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p> 14778<ul> 14779<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li> 14780<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li> 14781<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li> 14782</ul> 14783<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY) 14784never support raw streams.<wbr/></p> 14785 </td> 14786 </tr> 14787 14788 14789 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14790 <!-- end of entry --> 14791 14792 14793 <tr class="entry" id="static_android.request.maxNumOutputProc"> 14794 <td class="entry_name 14795 " rowspan="3"> 14796 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc 14797 </td> 14798 <td class="entry_type"> 14799 <span class="entry_type_name">int32</span> 14800 14801 <span class="entry_type_visibility"> [public]</span> 14802 14803 <span class="entry_type_synthetic">[synthetic] </span> 14804 14805 <span class="entry_type_hwlevel">[legacy] </span> 14806 14807 14808 14809 14810 </td> <!-- entry_type --> 14811 14812 <td class="entry_description"> 14813 <p>The maximum numbers of different types of output streams 14814that can be configured and used simultaneously by a camera device 14815for any processed (but not-stalling) formats.<wbr/></p> 14816 </td> 14817 14818 <td class="entry_units"> 14819 </td> 14820 14821 <td class="entry_range"> 14822 <p>>= 3 14823for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 14824>= 2 for LIMITED mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>).<wbr/></p> 14825 </td> 14826 14827 <td class="entry_tags"> 14828 </td> 14829 14830 </tr> 14831 <tr class="entries_header"> 14832 <th class="th_details" colspan="5">Details</th> 14833 </tr> 14834 <tr class="entry_cont"> 14835 <td class="entry_details" colspan="5"> 14836 <p>This value contains the max number of output simultaneous 14837streams for any processed (but not-stalling) formats.<wbr/></p> 14838<p>This lists the upper bound of the number of output streams supported by 14839the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14840CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 14841be any non-<code>RAW</code> and supported format provided by <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p> 14842<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/> 14843Typically:</p> 14844<ul> 14845<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li> 14846<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li> 14847<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li> 14848<li>Implementation-defined formats,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#isOutputSupportedFor(Class)">StreamConfigurationMap#isOutputSupportedFor(Class)</a></li> 14849</ul> 14850<p>For full guarantees,<wbr/> query <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> with a 14851processed format -- it will return 0 for a non-stalling stream.<wbr/></p> 14852<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p> 14853 </td> 14854 </tr> 14855 14856 14857 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14858 <!-- end of entry --> 14859 14860 14861 <tr class="entry" id="static_android.request.maxNumOutputProcStalling"> 14862 <td class="entry_name 14863 " rowspan="3"> 14864 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling 14865 </td> 14866 <td class="entry_type"> 14867 <span class="entry_type_name">int32</span> 14868 14869 <span class="entry_type_visibility"> [public]</span> 14870 14871 <span class="entry_type_synthetic">[synthetic] </span> 14872 14873 <span class="entry_type_hwlevel">[legacy] </span> 14874 14875 14876 14877 14878 </td> <!-- entry_type --> 14879 14880 <td class="entry_description"> 14881 <p>The maximum numbers of different types of output streams 14882that can be configured and used simultaneously by a camera device 14883for any processed (and stalling) formats.<wbr/></p> 14884 </td> 14885 14886 <td class="entry_units"> 14887 </td> 14888 14889 <td class="entry_range"> 14890 <p>>= 1</p> 14891 </td> 14892 14893 <td class="entry_tags"> 14894 </td> 14895 14896 </tr> 14897 <tr class="entries_header"> 14898 <th class="th_details" colspan="5">Details</th> 14899 </tr> 14900 <tr class="entry_cont"> 14901 <td class="entry_details" colspan="5"> 14902 <p>This value contains the max number of output simultaneous 14903streams for any processed (but not-stalling) formats.<wbr/></p> 14904<p>This lists the upper bound of the number of output streams supported by 14905the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14906CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 14907be any non-<code>RAW</code> and supported format provided by <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p> 14908<p>A processed and stalling format is defined as any non-RAW format with a stallDurations 14909> 0.<wbr/> Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a 14910stalling format.<wbr/></p> 14911<p>For full guarantees,<wbr/> query <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> with a 14912processed format -- it will return a non-0 value for a stalling stream.<wbr/></p> 14913<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p> 14914 </td> 14915 </tr> 14916 14917 14918 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14919 <!-- end of entry --> 14920 14921 14922 <tr class="entry" id="static_android.request.maxNumReprocessStreams"> 14923 <td class="entry_name 14924 entry_name_deprecated 14925 " rowspan="3"> 14926 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams 14927 </td> 14928 <td class="entry_type"> 14929 <span class="entry_type_name">int32</span> 14930 <span class="entry_type_container">x</span> 14931 14932 <span class="entry_type_array"> 14933 1 14934 </span> 14935 <span class="entry_type_visibility"> [system]</span> 14936 14937 14938 14939 <span class="entry_type_deprecated">[deprecated] </span> 14940 14941 14942 14943 </td> <!-- entry_type --> 14944 14945 <td class="entry_description"> 14946 <p>How many reprocessing streams of any type 14947can be allocated at the same time.<wbr/></p> 14948 </td> 14949 14950 <td class="entry_units"> 14951 </td> 14952 14953 <td class="entry_range"> 14954 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14955 <p>>= 0</p> 14956 </td> 14957 14958 <td class="entry_tags"> 14959 <ul class="entry_tags"> 14960 <li><a href="#tag_HAL2">HAL2</a></li> 14961 </ul> 14962 </td> 14963 14964 </tr> 14965 <tr class="entries_header"> 14966 <th class="th_details" colspan="5">Details</th> 14967 </tr> 14968 <tr class="entry_cont"> 14969 <td class="entry_details" colspan="5"> 14970 <p>Only used by HAL2.<wbr/>x.<wbr/></p> 14971<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p> 14972 </td> 14973 </tr> 14974 14975 14976 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14977 <!-- end of entry --> 14978 14979 14980 <tr class="entry" id="static_android.request.maxNumInputStreams"> 14981 <td class="entry_name 14982 " rowspan="5"> 14983 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams 14984 </td> 14985 <td class="entry_type"> 14986 <span class="entry_type_name">int32</span> 14987 14988 <span class="entry_type_visibility"> [public]</span> 14989 14990 14991 <span class="entry_type_hwlevel">[full] </span> 14992 14993 14994 14995 14996 </td> <!-- entry_type --> 14997 14998 <td class="entry_description"> 14999 <p>The maximum numbers of any type of input streams 15000that can be configured and used simultaneously by a camera device.<wbr/></p> 15001 </td> 15002 15003 <td class="entry_units"> 15004 </td> 15005 15006 <td class="entry_range"> 15007 <p>0 or 1.<wbr/></p> 15008 </td> 15009 15010 <td class="entry_tags"> 15011 <ul class="entry_tags"> 15012 <li><a href="#tag_REPROC">REPROC</a></li> 15013 </ul> 15014 </td> 15015 15016 </tr> 15017 <tr class="entries_header"> 15018 <th class="th_details" colspan="5">Details</th> 15019 </tr> 15020 <tr class="entry_cont"> 15021 <td class="entry_details" colspan="5"> 15022 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p> 15023<p>The image format for a input stream can be any supported format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/> When using an 15024input stream,<wbr/> there must be at least one output stream configured to to receive the 15025reprocessed images.<wbr/></p> 15026<p>When an input stream and some output streams are used in a reprocessing request,<wbr/> 15027only the input buffer will be used to produce these output stream buffers,<wbr/> and a 15028new sensor image will not be captured.<wbr/></p> 15029<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input 15030stream image format will be PRIVATE,<wbr/> the associated output stream image format 15031should be JPEG.<wbr/></p> 15032 </td> 15033 </tr> 15034 15035 <tr class="entries_header"> 15036 <th class="th_details" colspan="5">HAL Implementation Details</th> 15037 </tr> 15038 <tr class="entry_cont"> 15039 <td class="entry_details" colspan="5"> 15040 <p>For the reprocessing flow and controls,<wbr/> see 15041hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p> 15042 </td> 15043 </tr> 15044 15045 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15046 <!-- end of entry --> 15047 15048 15049 <tr class="entry" id="static_android.request.pipelineMaxDepth"> 15050 <td class="entry_name 15051 " rowspan="5"> 15052 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth 15053 </td> 15054 <td class="entry_type"> 15055 <span class="entry_type_name">byte</span> 15056 15057 <span class="entry_type_visibility"> [public]</span> 15058 15059 15060 <span class="entry_type_hwlevel">[legacy] </span> 15061 15062 15063 15064 15065 </td> <!-- entry_type --> 15066 15067 <td class="entry_description"> 15068 <p>Specifies the number of maximum pipeline stages a frame 15069has to go through from when it's exposed to when it's available 15070to the framework.<wbr/></p> 15071 </td> 15072 15073 <td class="entry_units"> 15074 </td> 15075 15076 <td class="entry_range"> 15077 </td> 15078 15079 <td class="entry_tags"> 15080 </td> 15081 15082 </tr> 15083 <tr class="entries_header"> 15084 <th class="th_details" colspan="5">Details</th> 15085 </tr> 15086 <tr class="entry_cont"> 15087 <td class="entry_details" colspan="5"> 15088 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/> 15089one stage to readout) from the sensor.<wbr/> The ISP then usually adds 15090its own stages to do custom HW processing.<wbr/> Further stages may be 15091added by SW processing.<wbr/></p> 15092<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what 15093processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline 15094depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than 15095the max pipeline depth.<wbr/></p> 15096<p>A pipeline depth of X stages is equivalent to a pipeline latency of 15097X frame intervals.<wbr/></p> 15098<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/> 15099the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p> 15100 </td> 15101 </tr> 15102 15103 <tr class="entries_header"> 15104 <th class="th_details" colspan="5">HAL Implementation Details</th> 15105 </tr> 15106 <tr class="entry_cont"> 15107 <td class="entry_details" colspan="5"> 15108 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the 15109max batch sizes may be larger than 1.<wbr/></p> 15110 </td> 15111 </tr> 15112 15113 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15114 <!-- end of entry --> 15115 15116 15117 <tr class="entry" id="static_android.request.partialResultCount"> 15118 <td class="entry_name 15119 " rowspan="3"> 15120 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count 15121 </td> 15122 <td class="entry_type"> 15123 <span class="entry_type_name">int32</span> 15124 15125 <span class="entry_type_visibility"> [public]</span> 15126 15127 15128 15129 15130 15131 15132 </td> <!-- entry_type --> 15133 15134 <td class="entry_description"> 15135 <p>Defines how many sub-components 15136a result will be composed of.<wbr/></p> 15137 </td> 15138 15139 <td class="entry_units"> 15140 </td> 15141 15142 <td class="entry_range"> 15143 <p>>= 1</p> 15144 </td> 15145 15146 <td class="entry_tags"> 15147 </td> 15148 15149 </tr> 15150 <tr class="entries_header"> 15151 <th class="th_details" colspan="5">Details</th> 15152 </tr> 15153 <tr class="entry_cont"> 15154 <td class="entry_details" colspan="5"> 15155 <p>In order to combat the pipeline latency,<wbr/> partial results 15156may be delivered to the application layer from the camera device as 15157soon as they are available.<wbr/></p> 15158<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial 15159results are not supported,<wbr/> and only the final TotalCaptureResult will 15160be produced by the camera device.<wbr/></p> 15161<p>A typical use case for this might be: after requesting an 15162auto-focus (AF) lock the new AF state might be available 50% 15163of the way through the pipeline.<wbr/> The camera device could 15164then immediately dispatch this state via a partial result to 15165the application,<wbr/> and the rest of the metadata via later 15166partial results.<wbr/></p> 15167 </td> 15168 </tr> 15169 15170 15171 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15172 <!-- end of entry --> 15173 15174 15175 <tr class="entry" id="static_android.request.availableCapabilities"> 15176 <td class="entry_name 15177 " rowspan="5"> 15178 android.<wbr/>request.<wbr/>available<wbr/>Capabilities 15179 </td> 15180 <td class="entry_type"> 15181 <span class="entry_type_name entry_type_name_enum">byte</span> 15182 <span class="entry_type_container">x</span> 15183 15184 <span class="entry_type_array"> 15185 n 15186 </span> 15187 <span class="entry_type_visibility"> [public]</span> 15188 15189 15190 <span class="entry_type_hwlevel">[legacy] </span> 15191 15192 15193 15194 <ul class="entry_type_enum"> 15195 <li> 15196 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span> 15197 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera 15198device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>) 15199supports.<wbr/></p> 15200<p>This capability is listed by all normal devices,<wbr/> and 15201indicates that the camera device has a feature set 15202that's comparable to the baseline requirements for the 15203older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 15204<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this 15205capability,<wbr/> indicating that they support only depth measurement,<wbr/> 15206not standard color output.<wbr/></p></span> 15207 </li> 15208 <li> 15209 <span class="entry_type_enum_name">MANUAL_SENSOR</span> 15210 <span class="entry_type_enum_optional">[optional]</span> 15211 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such 15212as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/> 15213The camera device supports basic manual control of the sensor image 15214acquisition related stages.<wbr/> This means the following controls are 15215guaranteed to be supported:</p> 15216<ul> 15217<li>Manual frame duration control<ul> 15218<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li> 15219<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> 15220</ul> 15221</li> 15222<li>Manual exposure control<ul> 15223<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 15224<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 15225</ul> 15226</li> 15227<li>Manual sensitivity control<ul> 15228<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 15229<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> 15230</ul> 15231</li> 15232<li>Manual lens control (if the lens is adjustable)<ul> 15233<li>android.<wbr/>lens.<wbr/>*</li> 15234</ul> 15235</li> 15236<li>Manual flash control (if a flash unit is present)<ul> 15237<li>android.<wbr/>flash.<wbr/>*</li> 15238</ul> 15239</li> 15240<li>Manual black level locking<ul> 15241<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li> 15242</ul> 15243</li> 15244<li>Auto exposure lock<ul> 15245<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 15246</ul> 15247</li> 15248</ul> 15249<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera 15250device will accurately report the values applied by 3A in the 15251result.<wbr/></p> 15252<p>A given camera device may also support additional manual sensor controls,<wbr/> 15253but this capability only covers the above list of controls.<wbr/></p> 15254<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will 15255additionally return a min frame duration that is greater than 15256zero for each supported size-format combination.<wbr/></p></span> 15257 </li> 15258 <li> 15259 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span> 15260 <span class="entry_type_enum_optional">[optional]</span> 15261 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/> 15262The camera device supports basic manual control of the image post-processing 15263stages.<wbr/> This means the following controls are guaranteed to be supported:</p> 15264<ul> 15265<li> 15266<p>Manual tonemap control</p> 15267<ul> 15268<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li> 15269<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li> 15270<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li> 15271<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li> 15272<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li> 15273</ul> 15274</li> 15275<li> 15276<p>Manual white balance control</p> 15277<ul> 15278<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li> 15279<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li> 15280</ul> 15281</li> 15282<li>Manual lens shading map control<ul> 15283<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li> 15284<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li> 15285<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li> 15286<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li> 15287</ul> 15288</li> 15289<li>Manual aberration correction control (if aberration correction is supported)<ul> 15290<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li> 15291<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li> 15292</ul> 15293</li> 15294<li>Auto white balance lock<ul> 15295<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 15296</ul> 15297</li> 15298</ul> 15299<p>If auto white balance is enabled,<wbr/> then the camera device 15300will accurately report the values applied by AWB in the result.<wbr/></p> 15301<p>A given camera device may also support additional post-processing 15302controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span> 15303 </li> 15304 <li> 15305 <span class="entry_type_enum_name">RAW</span> 15306 <span class="entry_type_enum_optional">[optional]</span> 15307 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and 15308metadata for interpreting them.<wbr/></p> 15309<p>Devices supporting the RAW capability allow both for 15310saving DNG files,<wbr/> and for direct application processing of 15311raw sensor images.<wbr/></p> 15312<ul> 15313<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li> 15314<li>The maximum available resolution for RAW_<wbr/>SENSOR streams 15315 will match either the value in 15316 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or 15317 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 15318<li>All DNG-related optional metadata entries are provided 15319 by the camera device.<wbr/></li> 15320</ul></span> 15321 </li> 15322 <li> 15323 <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span> 15324 <span class="entry_type_enum_optional">[optional]</span> 15325 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p> 15326<ul> 15327<li>One input stream is supported,<wbr/> that is,<wbr/> <code><a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> == 1</code>.<wbr/></li> 15328<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is supported as an output/<wbr/>input format,<wbr/> 15329 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of 15330 formats returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li> 15331<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 15332 returns non empty int[] for each supported input format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/></li> 15333<li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">getInputSizes(ImageFormat.<wbr/>PRIVATE)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">getOutputSizes(ImageFormat.<wbr/>PRIVATE)</a></li> 15334<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop 15335 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 15336<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both 15337 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and 15338 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li> 15339<li>The maximum available resolution for PRIVATE streams 15340 (both input/<wbr/>output) will match the maximum available 15341 resolution of JPEG streams.<wbr/></li> 15342<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 15343<li>Only below controls are effective for reprocessing requests and 15344 will be present in capture results,<wbr/> other controls in reprocess 15345 requests will be ignored by the camera device.<wbr/><ul> 15346<li>android.<wbr/>jpeg.<wbr/>*</li> 15347<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 15348<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 15349</ul> 15350</li> 15351<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 15352 <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a> will both list ZERO_<wbr/>SHUTTER_<wbr/>LAG as a supported mode.<wbr/></li> 15353</ul></span> 15354 </li> 15355 <li> 15356 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span> 15357 <span class="entry_type_enum_optional">[optional]</span> 15358 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of 15359the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows 15360reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p> 15361<p>The values reported for the following controls are guaranteed to be available 15362in the CaptureResult,<wbr/> including when 3A is enabled:</p> 15363<ul> 15364<li>Exposure control<ul> 15365<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 15366</ul> 15367</li> 15368<li>Sensitivity control<ul> 15369<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 15370</ul> 15371</li> 15372<li>Lens controls (if the lens is adjustable)<ul> 15373<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li> 15374<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li> 15375</ul> 15376</li> 15377</ul> 15378<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will 15379always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span> 15380 </li> 15381 <li> 15382 <span class="entry_type_enum_name">BURST_CAPTURE</span> 15383 <span class="entry_type_enum_optional">[optional]</span> 15384 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per 15385second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set 15386to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at >= 10 frames 15387per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum 15388resolution of the device,<wbr/> whichever is smaller.<wbr/></p> 15389<p>More specifically,<wbr/> this means that a size matching the camera device's active array 15390size is listed as a supported size for the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> format in either <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> or <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/> 15391with a minimum frame duration for that format and size of either <= 1/<wbr/>20 s,<wbr/> or 15392<= 1/<wbr/>10 s,<wbr/> respectively; and the <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> entry 15393lists at least one FPS range where the minimum FPS is >= 1 /<wbr/> minimumFrameDuration 15394for the maximum-size YUV_<wbr/>420_<wbr/>888 format.<wbr/> If that maximum size is listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/> 15395then the list of resolutions for YUV_<wbr/>420_<wbr/>888 from <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> contains at 15396least one resolution >= 8 megapixels,<wbr/> with a minimum frame duration of <= 1/<wbr/>20 15397s.<wbr/></p> 15398<p>If the device supports the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a>,<wbr/> then those can also be captured at the same rate 15399as the maximum-size YUV_<wbr/>420_<wbr/>888 resolution is.<wbr/></p> 15400<p>If the device supports the PRIVATE_<wbr/>REPROCESSING capability,<wbr/> then the same guarantees 15401as for the YUV_<wbr/>420_<wbr/>888 format also apply to the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> format.<wbr/></p> 15402<p>In addition,<wbr/> the <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> field is guaranted to have a value between 0 15403and 4,<wbr/> inclusive.<wbr/> <a href="#static_android.control.aeLockAvailable">android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available</a> and <a href="#static_android.control.awbLockAvailable">android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available</a> 15404are also guaranteed to be <code>true</code> so burst capture with these two locks ON yields 15405consistent image output.<wbr/></p></span> 15406 </li> 15407 <li> 15408 <span class="entry_type_enum_name">YUV_REPROCESSING</span> 15409 <span class="entry_type_enum_optional">[optional]</span> 15410 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as 15411PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the 15412following:</p> 15413<ul> 15414<li>One input stream is supported,<wbr/> that is,<wbr/> <code><a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> == 1</code>.<wbr/></li> 15415<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> is supported as an output/<wbr/>input format,<wbr/> that is,<wbr/> 15416 YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by 15417 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and 15418 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li> 15419<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 15420 returns non-empty int[] for each supported input format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/></li> 15421<li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">get<wbr/>Input<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">get<wbr/>Output<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</a></li> 15422<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> does not cause a frame rate drop 15423 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 15424<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> will be reprocessable into both 15425 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li> 15426<li>The maximum available resolution for <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> streams (both input/<wbr/>output) will match the 15427 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li> 15428<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 15429<li>Only the below controls are effective for reprocessing requests and will be present 15430 in capture results.<wbr/> The reprocess requests are from the original capture results that 15431 are associated with the intermediate <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> 15432 output buffers.<wbr/> All other controls in the reprocess requests will be ignored by the 15433 camera device.<wbr/><ul> 15434<li>android.<wbr/>jpeg.<wbr/>*</li> 15435<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 15436<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 15437<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li> 15438</ul> 15439</li> 15440<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 15441 <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a> will both list ZERO_<wbr/>SHUTTER_<wbr/>LAG as a supported mode.<wbr/></li> 15442</ul></span> 15443 </li> 15444 <li> 15445 <span class="entry_type_enum_name">DEPTH_OUTPUT</span> 15446 <span class="entry_type_enum_optional">[optional]</span> 15447 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p> 15448<p>This capability requires the camera device to support the following:</p> 15449<ul> 15450<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li> 15451<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH_POINT_CLOUD">Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD</a> is optionally supported as an 15452 output format.<wbr/></li> 15453<li>This camera device,<wbr/> and all camera devices with the same <a href="#static_android.lens.facing">android.<wbr/>lens.<wbr/>facing</a>,<wbr/> 15454 will list the following calibration entries in both 15455 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and 15456 <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul> 15457<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 15458<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 15459<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 15460<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li> 15461</ul> 15462</li> 15463<li>The <a href="#static_android.depth.depthIsExclusive">android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive</a> entry is listed by this device.<wbr/></li> 15464<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support 15465 normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16 15466 format.<wbr/></li> 15467</ul> 15468<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/> 15469so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that 15470should be accounted for (see 15471<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/> 15472On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/> 15473using a repeating burst is recommended,<wbr/> where a depth-output target is only included 15474once every N frames,<wbr/> where N is the ratio between preview output rate and depth output 15475rate,<wbr/> including depth stall time.<wbr/></p></span> 15476 </li> 15477 <li> 15478 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span> 15479 <span class="entry_type_enum_optional">[optional]</span> 15480 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) 15481use case.<wbr/> The camera device will support high speed capture session created by 15482<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which 15483only accepts high speed request lists created by 15484<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p> 15485<p>A camera device can still support high speed video streaming by advertising the high speed 15486FPS ranges in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a>.<wbr/> For this case,<wbr/> all normal 15487capture request per frame control and synchronization requirements will apply to 15488the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability describes 15489the capability of a specialized operating mode with many limitations (see below),<wbr/> which 15490is only targeted at high speed video recording.<wbr/></p> 15491<p>The supported high speed video sizes and fps ranges are specified in 15492<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/> 15493To get desired output frame rates,<wbr/> the application is only allowed to select video size 15494and FPS range combinations provided by 15495<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/> 15496The fps range can be controlled via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 15497<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 15498ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 15499controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 15500and post-processing parameters is possible.<wbr/> All other controls operate the 15501same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 15502android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 15503<ul> 15504<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 15505<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 15506<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 15507<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 15508<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 15509<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 15510<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 15511<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 15512<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 15513<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 15514</ul> 15515<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 15516<ul> 15517<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not 15518work since aeMode is ON)</li> 15519<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 15520<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 15521<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li> 15522</ul> 15523<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 15524be lower than what camera can output,<wbr/> depending on the destination Surfaces for 15525the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 15526the application need check if the video encoder is capable of supporting the 15527high frame rate for a given video size,<wbr/> or it will end up with lower recording 15528frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame 15529rate will be bounded by the screen refresh rate.<wbr/></p> 15530<p>The camera device will only support up to 2 high speed simultaneous output surfaces 15531(preview and recording surfaces) 15532in this mode.<wbr/> Above controls will be effective only if all of below conditions are true:</p> 15533<ul> 15534<li>The application creates a camera capture session with no more than 2 surfaces via 15535<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The 15536targeted surfaces must be preview surface (either from 15537<a href="https://developer.android.com/reference/android/view/SurfaceView.html">SurfaceView</a> or <a href="https://developer.android.com/reference/android/graphics/SurfaceTexture.html">SurfaceTexture</a>) or 15538recording surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or 15539<a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li> 15540<li>The stream sizes are selected from the sizes reported by 15541<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li> 15542<li>The FPS ranges are selected from 15543<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li> 15544</ul> 15545<p>When above conditions are NOT satistied,<wbr/> 15546<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a> 15547will fail.<wbr/></p> 15548<p>Switching to a FPS range that has different maximum FPS may trigger some camera device 15549reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 15550the application avoids unnecessary maximum target FPS changes as much as possible 15551during high speed streaming.<wbr/></p></span> 15552 </li> 15553 </ul> 15554 15555 </td> <!-- entry_type --> 15556 15557 <td class="entry_description"> 15558 <p>List of capabilities that this camera device 15559advertises as fully supporting.<wbr/></p> 15560 </td> 15561 15562 <td class="entry_units"> 15563 </td> 15564 15565 <td class="entry_range"> 15566 </td> 15567 15568 <td class="entry_tags"> 15569 </td> 15570 15571 </tr> 15572 <tr class="entries_header"> 15573 <th class="th_details" colspan="5">Details</th> 15574 </tr> 15575 <tr class="entry_cont"> 15576 <td class="entry_details" colspan="5"> 15577 <p>A capability is a contract that the camera device makes in order 15578to be able to satisfy one or more use cases.<wbr/></p> 15579<p>Listing a capability guarantees that the whole set of features 15580required to support a common use will all be available.<wbr/></p> 15581<p>Using a subset of the functionality provided by an unsupported 15582capability may be possible on a specific camera device implementation; 15583to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/> 15584<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/> 15585<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p> 15586<p>The following capabilities are guaranteed to be available on 15587<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p> 15588<ul> 15589<li>MANUAL_<wbr/>SENSOR</li> 15590<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li> 15591</ul> 15592<p>Other capabilities may be available on either FULL or LIMITED 15593devices,<wbr/> but the application should query this key to be sure.<wbr/></p> 15594 </td> 15595 </tr> 15596 15597 <tr class="entries_header"> 15598 <th class="th_details" colspan="5">HAL Implementation Details</th> 15599 </tr> 15600 <tr class="entry_cont"> 15601 <td class="entry_details" colspan="5"> 15602 <p>Additional constraint details per-capability will be available 15603in the Compatibility Test Suite.<wbr/></p> 15604<p>Minimum baseline requirements required for the 15605BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/> 15606Instead refer to "BC" tags and the camera CTS tests in the 15607android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p> 15608<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/> 15609<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the 15610request and the result in order to be considered to be 15611capability-compliant.<wbr/></p> 15612<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/> 15613then exposure time must be configurable via the request <em>and</em> 15614the actual exposure applied must be available via 15615the result.<wbr/></p> 15616<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the 15617<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p> 15618<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see 15619hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p> 15620<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the 15621CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p> 15622<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the 15623YUV_<wbr/>REPROCESSING capability must support the 15624CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p> 15625<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys 15626<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/> 15627<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> 15628<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in 15629addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT 15630enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available 15631if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace 15632DEPTH).<wbr/></p> 15633 </td> 15634 </tr> 15635 15636 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15637 <!-- end of entry --> 15638 15639 15640 <tr class="entry" id="static_android.request.availableRequestKeys"> 15641 <td class="entry_name 15642 " rowspan="5"> 15643 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys 15644 </td> 15645 <td class="entry_type"> 15646 <span class="entry_type_name">int32</span> 15647 <span class="entry_type_container">x</span> 15648 15649 <span class="entry_type_array"> 15650 n 15651 </span> 15652 <span class="entry_type_visibility"> [hidden]</span> 15653 15654 15655 <span class="entry_type_hwlevel">[legacy] </span> 15656 15657 15658 15659 15660 </td> <!-- entry_type --> 15661 15662 <td class="entry_description"> 15663 <p>A list of all keys that the camera device has available 15664to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p> 15665 </td> 15666 15667 <td class="entry_units"> 15668 </td> 15669 15670 <td class="entry_range"> 15671 </td> 15672 15673 <td class="entry_tags"> 15674 </td> 15675 15676 </tr> 15677 <tr class="entries_header"> 15678 <th class="th_details" colspan="5">Details</th> 15679 </tr> 15680 <tr class="entry_cont"> 15681 <td class="entry_details" colspan="5"> 15682 <p>Attempting to set a key into a CaptureRequest that is not 15683listed here will result in an invalid request and will be rejected 15684by the camera device.<wbr/></p> 15685<p>This field can be used to query the feature set of a camera device 15686at a more granular level than capabilities.<wbr/> This is especially 15687important for optional keys that are not listed under any capability 15688in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 15689 </td> 15690 </tr> 15691 15692 <tr class="entries_header"> 15693 <th class="th_details" colspan="5">HAL Implementation Details</th> 15694 </tr> 15695 <tr class="entry_cont"> 15696 <td class="entry_details" colspan="5"> 15697 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 15698extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 15699<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 15700vendor extensions API and not against this field.<wbr/></p> 15701<p>The HAL must not consume any request tags that are not listed either 15702here or in the vendor tag list.<wbr/></p> 15703<p>The public camera2 API will always make the vendor tags visible 15704via 15705<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> 15706 </td> 15707 </tr> 15708 15709 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15710 <!-- end of entry --> 15711 15712 15713 <tr class="entry" id="static_android.request.availableResultKeys"> 15714 <td class="entry_name 15715 " rowspan="5"> 15716 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys 15717 </td> 15718 <td class="entry_type"> 15719 <span class="entry_type_name">int32</span> 15720 <span class="entry_type_container">x</span> 15721 15722 <span class="entry_type_array"> 15723 n 15724 </span> 15725 <span class="entry_type_visibility"> [hidden]</span> 15726 15727 15728 <span class="entry_type_hwlevel">[legacy] </span> 15729 15730 15731 15732 15733 </td> <!-- entry_type --> 15734 15735 <td class="entry_description"> 15736 <p>A list of all keys that the camera device has available 15737to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p> 15738 </td> 15739 15740 <td class="entry_units"> 15741 </td> 15742 15743 <td class="entry_range"> 15744 </td> 15745 15746 <td class="entry_tags"> 15747 </td> 15748 15749 </tr> 15750 <tr class="entries_header"> 15751 <th class="th_details" colspan="5">Details</th> 15752 </tr> 15753 <tr class="entry_cont"> 15754 <td class="entry_details" colspan="5"> 15755 <p>Attempting to get a key from a CaptureResult that is not 15756listed here will always return a <code>null</code> value.<wbr/> Getting a key from 15757a CaptureResult that is listed here will generally never return a <code>null</code> 15758value.<wbr/></p> 15759<p>The following keys may return <code>null</code> unless they are enabled:</p> 15760<ul> 15761<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> (non-null iff <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> == ON)</li> 15762</ul> 15763<p>(Those sometimes-null keys will nevertheless be listed here 15764if they are available.<wbr/>)</p> 15765<p>This field can be used to query the feature set of a camera device 15766at a more granular level than capabilities.<wbr/> This is especially 15767important for optional keys that are not listed under any capability 15768in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 15769 </td> 15770 </tr> 15771 15772 <tr class="entries_header"> 15773 <th class="th_details" colspan="5">HAL Implementation Details</th> 15774 </tr> 15775 <tr class="entry_cont"> 15776 <td class="entry_details" colspan="5"> 15777 <p>Tags listed here must always have an entry in the result metadata,<wbr/> 15778even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 15779matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 15780<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 15781extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 15782<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 15783vendor extensions API and not against this field.<wbr/></p> 15784<p>The HAL must not produce any result tags that are not listed either 15785here or in the vendor tag list.<wbr/></p> 15786<p>The public camera2 API will always make the vendor tags visible via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p> 15787 </td> 15788 </tr> 15789 15790 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15791 <!-- end of entry --> 15792 15793 15794 <tr class="entry" id="static_android.request.availableCharacteristicsKeys"> 15795 <td class="entry_name 15796 " rowspan="5"> 15797 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys 15798 </td> 15799 <td class="entry_type"> 15800 <span class="entry_type_name">int32</span> 15801 <span class="entry_type_container">x</span> 15802 15803 <span class="entry_type_array"> 15804 n 15805 </span> 15806 <span class="entry_type_visibility"> [hidden]</span> 15807 15808 15809 <span class="entry_type_hwlevel">[legacy] </span> 15810 15811 15812 15813 15814 </td> <!-- entry_type --> 15815 15816 <td class="entry_description"> 15817 <p>A list of all keys that the camera device has available 15818to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p> 15819 </td> 15820 15821 <td class="entry_units"> 15822 </td> 15823 15824 <td class="entry_range"> 15825 </td> 15826 15827 <td class="entry_tags"> 15828 </td> 15829 15830 </tr> 15831 <tr class="entries_header"> 15832 <th class="th_details" colspan="5">Details</th> 15833 </tr> 15834 <tr class="entry_cont"> 15835 <td class="entry_details" colspan="5"> 15836 <p>This entry follows the same rules as 15837<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for 15838CameraCharacteristics instead of CaptureResult).<wbr/> See above for more 15839details.<wbr/></p> 15840 </td> 15841 </tr> 15842 15843 <tr class="entries_header"> 15844 <th class="th_details" colspan="5">HAL Implementation Details</th> 15845 </tr> 15846 <tr class="entry_cont"> 15847 <td class="entry_details" colspan="5"> 15848 <p>Keys listed here must always have an entry in the static info metadata,<wbr/> 15849even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 15850matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 15851<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 15852extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 15853<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 15854vendor extensions API and not against this field.<wbr/></p> 15855<p>The HAL must not have any tags in its static info that are not listed 15856either here or in the vendor tag list.<wbr/></p> 15857<p>The public camera2 API will always make the vendor tags visible 15858via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p> 15859 </td> 15860 </tr> 15861 15862 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15863 <!-- end of entry --> 15864 15865 15866 15867 <!-- end of kind --> 15868 </tbody> 15869 <tr><td colspan="6" class="kind">dynamic</td></tr> 15870 15871 <thead class="entries_header"> 15872 <tr> 15873 <th class="th_name">Property Name</th> 15874 <th class="th_type">Type</th> 15875 <th class="th_description">Description</th> 15876 <th class="th_units">Units</th> 15877 <th class="th_range">Range</th> 15878 <th class="th_tags">Tags</th> 15879 </tr> 15880 </thead> 15881 15882 <tbody> 15883 15884 15885 15886 15887 15888 15889 15890 15891 15892 15893 <tr class="entry" id="dynamic_android.request.frameCount"> 15894 <td class="entry_name 15895 entry_name_deprecated 15896 " rowspan="3"> 15897 android.<wbr/>request.<wbr/>frame<wbr/>Count 15898 </td> 15899 <td class="entry_type"> 15900 <span class="entry_type_name">int32</span> 15901 15902 <span class="entry_type_visibility"> [hidden]</span> 15903 15904 15905 15906 <span class="entry_type_deprecated">[deprecated] </span> 15907 15908 15909 15910 </td> <!-- entry_type --> 15911 15912 <td class="entry_description"> 15913 <p>A frame counter set by the framework.<wbr/> This value monotonically 15914increases with every new result (that is,<wbr/> each new result has a unique 15915frameCount value).<wbr/></p> 15916 </td> 15917 15918 <td class="entry_units"> 15919 count of frames 15920 </td> 15921 15922 <td class="entry_range"> 15923 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15924 <p>> 0</p> 15925 </td> 15926 15927 <td class="entry_tags"> 15928 </td> 15929 15930 </tr> 15931 <tr class="entries_header"> 15932 <th class="th_details" colspan="5">Details</th> 15933 </tr> 15934 <tr class="entry_cont"> 15935 <td class="entry_details" colspan="5"> 15936 <p>Reset on release()</p> 15937 </td> 15938 </tr> 15939 15940 15941 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15942 <!-- end of entry --> 15943 15944 15945 <tr class="entry" id="dynamic_android.request.id"> 15946 <td class="entry_name 15947 " rowspan="1"> 15948 android.<wbr/>request.<wbr/>id 15949 </td> 15950 <td class="entry_type"> 15951 <span class="entry_type_name">int32</span> 15952 15953 <span class="entry_type_visibility"> [hidden]</span> 15954 15955 15956 15957 15958 15959 15960 </td> <!-- entry_type --> 15961 15962 <td class="entry_description"> 15963 <p>An application-specified ID for the current 15964request.<wbr/> Must be maintained unchanged in output 15965frame</p> 15966 </td> 15967 15968 <td class="entry_units"> 15969 arbitrary integer assigned by application 15970 </td> 15971 15972 <td class="entry_range"> 15973 <p>Any int</p> 15974 </td> 15975 15976 <td class="entry_tags"> 15977 <ul class="entry_tags"> 15978 <li><a href="#tag_V1">V1</a></li> 15979 </ul> 15980 </td> 15981 15982 </tr> 15983 15984 15985 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15986 <!-- end of entry --> 15987 15988 15989 <tr class="entry" id="dynamic_android.request.metadataMode"> 15990 <td class="entry_name 15991 " rowspan="1"> 15992 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 15993 </td> 15994 <td class="entry_type"> 15995 <span class="entry_type_name entry_type_name_enum">byte</span> 15996 15997 <span class="entry_type_visibility"> [system]</span> 15998 15999 16000 16001 16002 16003 <ul class="entry_type_enum"> 16004 <li> 16005 <span class="entry_type_enum_name">NONE</span> 16006 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 16007for application-bound buffer data.<wbr/> If no 16008application-bound streams exist,<wbr/> no frame should be 16009placed in the output frame queue.<wbr/> If such streams 16010exist,<wbr/> a frame should be placed on the output queue 16011with null metadata but with the necessary output buffer 16012information.<wbr/> Timestamp information should still be 16013included with any output stream buffers</p></span> 16014 </li> 16015 <li> 16016 <span class="entry_type_enum_name">FULL</span> 16017 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 16018only be produced if they are separately 16019enabled</p></span> 16020 </li> 16021 </ul> 16022 16023 </td> <!-- entry_type --> 16024 16025 <td class="entry_description"> 16026 <p>How much metadata to produce on 16027output</p> 16028 </td> 16029 16030 <td class="entry_units"> 16031 </td> 16032 16033 <td class="entry_range"> 16034 </td> 16035 16036 <td class="entry_tags"> 16037 <ul class="entry_tags"> 16038 <li><a href="#tag_FUTURE">FUTURE</a></li> 16039 </ul> 16040 </td> 16041 16042 </tr> 16043 16044 16045 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16046 <!-- end of entry --> 16047 16048 16049 <tr class="entry" id="dynamic_android.request.outputStreams"> 16050 <td class="entry_name 16051 entry_name_deprecated 16052 " rowspan="3"> 16053 android.<wbr/>request.<wbr/>output<wbr/>Streams 16054 </td> 16055 <td class="entry_type"> 16056 <span class="entry_type_name">int32</span> 16057 <span class="entry_type_container">x</span> 16058 16059 <span class="entry_type_array"> 16060 n 16061 </span> 16062 <span class="entry_type_visibility"> [system]</span> 16063 16064 16065 16066 <span class="entry_type_deprecated">[deprecated] </span> 16067 16068 16069 16070 </td> <!-- entry_type --> 16071 16072 <td class="entry_description"> 16073 <p>Lists which camera output streams image data 16074from this capture must be sent to</p> 16075 </td> 16076 16077 <td class="entry_units"> 16078 List of camera stream IDs 16079 </td> 16080 16081 <td class="entry_range"> 16082 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16083 <p>List must only include streams that have been 16084created</p> 16085 </td> 16086 16087 <td class="entry_tags"> 16088 <ul class="entry_tags"> 16089 <li><a href="#tag_HAL2">HAL2</a></li> 16090 </ul> 16091 </td> 16092 16093 </tr> 16094 <tr class="entries_header"> 16095 <th class="th_details" colspan="5">Details</th> 16096 </tr> 16097 <tr class="entry_cont"> 16098 <td class="entry_details" colspan="5"> 16099 <p>If no output streams are listed,<wbr/> then the image 16100data should simply be discarded.<wbr/> The image data must 16101still be captured for metadata and statistics production,<wbr/> 16102and the lens and flash must operate as requested.<wbr/></p> 16103 </td> 16104 </tr> 16105 16106 16107 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16108 <!-- end of entry --> 16109 16110 16111 <tr class="entry" id="dynamic_android.request.pipelineDepth"> 16112 <td class="entry_name 16113 " rowspan="5"> 16114 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth 16115 </td> 16116 <td class="entry_type"> 16117 <span class="entry_type_name">byte</span> 16118 16119 <span class="entry_type_visibility"> [public]</span> 16120 16121 16122 <span class="entry_type_hwlevel">[legacy] </span> 16123 16124 16125 16126 16127 </td> <!-- entry_type --> 16128 16129 <td class="entry_description"> 16130 <p>Specifies the number of pipeline stages the frame went 16131through from when it was exposed to when the final completed result 16132was available to the framework.<wbr/></p> 16133 </td> 16134 16135 <td class="entry_units"> 16136 </td> 16137 16138 <td class="entry_range"> 16139 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p> 16140 </td> 16141 16142 <td class="entry_tags"> 16143 </td> 16144 16145 </tr> 16146 <tr class="entries_header"> 16147 <th class="th_details" colspan="5">Details</th> 16148 </tr> 16149 <tr class="entry_cont"> 16150 <td class="entry_details" colspan="5"> 16151 <p>Depending on what settings are used in the request,<wbr/> and 16152what streams are configured,<wbr/> the data may undergo less processing,<wbr/> 16153and some pipeline stages skipped.<wbr/></p> 16154<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p> 16155 </td> 16156 </tr> 16157 16158 <tr class="entries_header"> 16159 <th class="th_details" colspan="5">HAL Implementation Details</th> 16160 </tr> 16161 <tr class="entry_cont"> 16162 <td class="entry_details" colspan="5"> 16163 <p>This value must always represent the accurate count of how many 16164pipeline stages were actually used.<wbr/></p> 16165 </td> 16166 </tr> 16167 16168 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16169 <!-- end of entry --> 16170 16171 16172 16173 <!-- end of kind --> 16174 </tbody> 16175 16176 <!-- end of section --> 16177 <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr> 16178 16179 16180 <tr><td colspan="6" class="kind">controls</td></tr> 16181 16182 <thead class="entries_header"> 16183 <tr> 16184 <th class="th_name">Property Name</th> 16185 <th class="th_type">Type</th> 16186 <th class="th_description">Description</th> 16187 <th class="th_units">Units</th> 16188 <th class="th_range">Range</th> 16189 <th class="th_tags">Tags</th> 16190 </tr> 16191 </thead> 16192 16193 <tbody> 16194 16195 16196 16197 16198 16199 16200 16201 16202 16203 16204 <tr class="entry" id="controls_android.scaler.cropRegion"> 16205 <td class="entry_name 16206 " rowspan="5"> 16207 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 16208 </td> 16209 <td class="entry_type"> 16210 <span class="entry_type_name">int32</span> 16211 <span class="entry_type_container">x</span> 16212 16213 <span class="entry_type_array"> 16214 4 16215 </span> 16216 <span class="entry_type_visibility"> [public as rectangle]</span> 16217 16218 16219 <span class="entry_type_hwlevel">[legacy] </span> 16220 16221 16222 16223 16224 </td> <!-- entry_type --> 16225 16226 <td class="entry_description"> 16227 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 16228 </td> 16229 16230 <td class="entry_units"> 16231 Pixel coordinates relative to 16232 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 16233 </td> 16234 16235 <td class="entry_range"> 16236 </td> 16237 16238 <td class="entry_tags"> 16239 <ul class="entry_tags"> 16240 <li><a href="#tag_BC">BC</a></li> 16241 </ul> 16242 </td> 16243 16244 </tr> 16245 <tr class="entries_header"> 16246 <th class="th_details" colspan="5">Details</th> 16247 </tr> 16248 <tr class="entry_cont"> 16249 <td class="entry_details" colspan="5"> 16250 <p>This control can be used to implement digital zoom.<wbr/></p> 16251<p>The crop region coordinate system is based off 16252<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/> 0)</code> being the 16253top-left corner of the sensor active array.<wbr/></p> 16254<p>Output streams use this rectangle to produce their output,<wbr/> 16255cropping to a smaller region if necessary to maintain the 16256stream's aspect ratio,<wbr/> then scaling the sensor input to 16257match the output's configured resolution.<wbr/></p> 16258<p>The crop region is applied after the RAW to other color 16259space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 16260(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 16261croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 16262<p>For non-raw streams,<wbr/> any additional per-stream cropping will 16263be done to maximize the final pixel area of the stream.<wbr/></p> 16264<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 16265ratio,<wbr/> then 4:3 streams will use the exact crop 16266region.<wbr/> 16:9 streams will further crop vertically 16267(letterbox).<wbr/></p> 16268<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 16269outputs will crop horizontally (pillarbox),<wbr/> and 16:9 16270streams will match exactly.<wbr/> These additional crops will 16271be centered within the crop region.<wbr/></p> 16272<p>The width and height of the crop region cannot 16273be set to be smaller than 16274<code>floor( activeArraySize.<wbr/>width /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code> and 16275<code>floor( activeArraySize.<wbr/>height /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>,<wbr/> respectively.<wbr/></p> 16276<p>The camera device may adjust the crop region to account 16277for rounding and other hardware requirements; the final 16278crop region used will be included in the output capture 16279result.<wbr/></p> 16280 </td> 16281 </tr> 16282 16283 <tr class="entries_header"> 16284 <th class="th_details" colspan="5">HAL Implementation Details</th> 16285 </tr> 16286 <tr class="entry_cont"> 16287 <td class="entry_details" colspan="5"> 16288 <p>The output streams must maintain square pixels at all 16289times,<wbr/> no matter what the relative aspect ratios of the 16290crop region and the stream are.<wbr/> Negative values for 16291corner are allowed for raw output if full pixel array is 16292larger than active pixel array.<wbr/> Width and height may be 16293rounded to nearest larger supportable width,<wbr/> especially 16294for raw output,<wbr/> where only a few fixed scales may be 16295possible.<wbr/></p> 16296<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller 16297size than active array size,<wbr/> the HAL need follow below cropping rules:</p> 16298<ul> 16299<li> 16300<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active 16301array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from 16302<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p> 16303<ol> 16304<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor 16305cropped pixel area by (tx,<wbr/> ty),<wbr/> 16306where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code> 16307and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The 16308(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the 16309<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 16310<li>Scale the width and height of requested cropRegion with scaling factor of 16311sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height 16312respectively.<wbr/> 16313Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image 16314with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need 16315follow the general cropping rule for this new cropRegion and effective active 16316array size.<wbr/></li> 16317</ol> 16318</li> 16319<li> 16320<p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/> 16321The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/> 16322The reported cropRegion may be slightly different with the requested cropRegion since 16323the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other 16324hardware limitations.<wbr/></p> 16325</li> 16326</ul> 16327<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 16328 </td> 16329 </tr> 16330 16331 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16332 <!-- end of entry --> 16333 16334 16335 16336 <!-- end of kind --> 16337 </tbody> 16338 <tr><td colspan="6" class="kind">static</td></tr> 16339 16340 <thead class="entries_header"> 16341 <tr> 16342 <th class="th_name">Property Name</th> 16343 <th class="th_type">Type</th> 16344 <th class="th_description">Description</th> 16345 <th class="th_units">Units</th> 16346 <th class="th_range">Range</th> 16347 <th class="th_tags">Tags</th> 16348 </tr> 16349 </thead> 16350 16351 <tbody> 16352 16353 16354 16355 16356 16357 16358 16359 16360 16361 16362 <tr class="entry" id="static_android.scaler.availableFormats"> 16363 <td class="entry_name 16364 entry_name_deprecated 16365 " rowspan="5"> 16366 android.<wbr/>scaler.<wbr/>available<wbr/>Formats 16367 </td> 16368 <td class="entry_type"> 16369 <span class="entry_type_name entry_type_name_enum">int32</span> 16370 <span class="entry_type_container">x</span> 16371 16372 <span class="entry_type_array"> 16373 n 16374 </span> 16375 <span class="entry_type_visibility"> [hidden as imageFormat]</span> 16376 16377 16378 16379 <span class="entry_type_deprecated">[deprecated] </span> 16380 16381 16382 <ul class="entry_type_enum"> 16383 <li> 16384 <span class="entry_type_enum_name">RAW16</span> 16385 <span class="entry_type_enum_optional">[optional]</span> 16386 <span class="entry_type_enum_value">0x20</span> 16387 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image 16388buffers with 16-bit pixels.<wbr/></p> 16389<p>Buffers of this format are typically expected to have a 16390Bayer Color Filter Array (CFA) layout,<wbr/> which is given in 16391<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with 16392CFAs that are not representable by a format in 16393<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not 16394use this format.<wbr/></p> 16395<p>Buffers of this format will also follow the constraints given for 16396RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p> 16397<p>This format is intended to give users access to the full contents 16398of the buffers coming directly from the image sensor prior to any 16399cropping or scaling operations,<wbr/> and all coordinate systems for 16400metadata used for this format are relative to the size of the 16401active region of the image sensor before any geometric distortion 16402correction has been applied (i.<wbr/>e.<wbr/> 16403<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>).<wbr/> Supported 16404dimensions for this format are limited to the full dimensions of 16405the sensor (e.<wbr/>g.<wbr/> either <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or 16406<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> will be the 16407only supported output size).<wbr/></p> 16408<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for 16409the full set of performance guarantees.<wbr/></p></span> 16410 </li> 16411 <li> 16412 <span class="entry_type_enum_name">RAW_OPAQUE</span> 16413 <span class="entry_type_enum_optional">[optional]</span> 16414 <span class="entry_type_enum_value">0x24</span> 16415 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE is a format for raw image buffers coming from an 16416image sensor.<wbr/></p> 16417<p>The actual structure of buffers of this format is 16418platform-specific,<wbr/> but must follow several constraints:</p> 16419<ol> 16420<li>No image post-processing operations may have been applied to 16421buffers of this type.<wbr/> These buffers contain raw image data coming 16422directly from the image sensor.<wbr/></li> 16423<li>If a buffer of this format is passed to the camera device for 16424reprocessing,<wbr/> the resulting images will be identical to the images 16425produced if the buffer had come directly from the sensor and was 16426processed with the same settings.<wbr/></li> 16427</ol> 16428<p>The intended use for this format is to allow access to the native 16429raw format buffers coming directly from the camera sensor without 16430any additional conversions or decrease in framerate.<wbr/></p> 16431<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for the full set of 16432performance guarantees.<wbr/></p></span> 16433 </li> 16434 <li> 16435 <span class="entry_type_enum_name">YV12</span> 16436 <span class="entry_type_enum_optional">[optional]</span> 16437 <span class="entry_type_enum_value">0x32315659</span> 16438 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span> 16439 </li> 16440 <li> 16441 <span class="entry_type_enum_name">YCrCb_420_SP</span> 16442 <span class="entry_type_enum_optional">[optional]</span> 16443 <span class="entry_type_enum_value">0x11</span> 16444 <span class="entry_type_enum_notes"><p>NV21</p></span> 16445 </li> 16446 <li> 16447 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span> 16448 <span class="entry_type_enum_value">0x22</span> 16449 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span> 16450 </li> 16451 <li> 16452 <span class="entry_type_enum_name">YCbCr_420_888</span> 16453 <span class="entry_type_enum_value">0x23</span> 16454 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span> 16455 </li> 16456 <li> 16457 <span class="entry_type_enum_name">BLOB</span> 16458 <span class="entry_type_enum_value">0x21</span> 16459 <span class="entry_type_enum_notes"><p>JPEG format</p></span> 16460 </li> 16461 </ul> 16462 16463 </td> <!-- entry_type --> 16464 16465 <td class="entry_description"> 16466 <p>The list of image formats that are supported by this 16467camera device for output streams.<wbr/></p> 16468 </td> 16469 16470 <td class="entry_units"> 16471 </td> 16472 16473 <td class="entry_range"> 16474 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16475 </td> 16476 16477 <td class="entry_tags"> 16478 <ul class="entry_tags"> 16479 <li><a href="#tag_BC">BC</a></li> 16480 </ul> 16481 </td> 16482 16483 </tr> 16484 <tr class="entries_header"> 16485 <th class="th_details" colspan="5">Details</th> 16486 </tr> 16487 <tr class="entry_cont"> 16488 <td class="entry_details" colspan="5"> 16489 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p> 16490<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p> 16491 </td> 16492 </tr> 16493 16494 <tr class="entries_header"> 16495 <th class="th_details" colspan="5">HAL Implementation Details</th> 16496 </tr> 16497 <tr class="entry_cont"> 16498 <td class="entry_details" colspan="5"> 16499 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 16500system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> 16501<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform 16502gralloc module will select a format based on the usage flags provided 16503by the camera HAL device and the other endpoint of the stream.<wbr/> It is 16504usually used by preview and recording streams,<wbr/> where the application doesn't 16505need access the image data.<wbr/></p> 16506<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream 16507needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p> 16508<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p> 16509<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly 16510recommended that any information used by the camera device when 16511processing images is fully expressed by the result metadata 16512for that image buffer.<wbr/></p> 16513 </td> 16514 </tr> 16515 16516 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16517 <!-- end of entry --> 16518 16519 16520 <tr class="entry" id="static_android.scaler.availableJpegMinDurations"> 16521 <td class="entry_name 16522 entry_name_deprecated 16523 " rowspan="3"> 16524 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations 16525 </td> 16526 <td class="entry_type"> 16527 <span class="entry_type_name">int64</span> 16528 <span class="entry_type_container">x</span> 16529 16530 <span class="entry_type_array"> 16531 n 16532 </span> 16533 <span class="entry_type_visibility"> [hidden]</span> 16534 16535 16536 16537 <span class="entry_type_deprecated">[deprecated] </span> 16538 16539 16540 16541 </td> <!-- entry_type --> 16542 16543 <td class="entry_description"> 16544 <p>The minimum frame duration that is supported 16545for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p> 16546 </td> 16547 16548 <td class="entry_units"> 16549 Nanoseconds 16550 </td> 16551 16552 <td class="entry_range"> 16553 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16554 <p>TODO: Remove property.<wbr/></p> 16555 </td> 16556 16557 <td class="entry_tags"> 16558 <ul class="entry_tags"> 16559 <li><a href="#tag_BC">BC</a></li> 16560 </ul> 16561 </td> 16562 16563 </tr> 16564 <tr class="entries_header"> 16565 <th class="th_details" colspan="5">Details</th> 16566 </tr> 16567 <tr class="entry_cont"> 16568 <td class="entry_details" colspan="5"> 16569 <p>This corresponds to the minimum steady-state frame duration when only 16570that JPEG stream is active and captured in a burst,<wbr/> with all 16571processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> 16572<p>When multiple streams are configured,<wbr/> the minimum 16573frame duration will be >= max(individual stream min 16574durations)</p> 16575 </td> 16576 </tr> 16577 16578 16579 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16580 <!-- end of entry --> 16581 16582 16583 <tr class="entry" id="static_android.scaler.availableJpegSizes"> 16584 <td class="entry_name 16585 entry_name_deprecated 16586 " rowspan="5"> 16587 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes 16588 </td> 16589 <td class="entry_type"> 16590 <span class="entry_type_name">int32</span> 16591 <span class="entry_type_container">x</span> 16592 16593 <span class="entry_type_array"> 16594 n x 2 16595 </span> 16596 <span class="entry_type_visibility"> [hidden as size]</span> 16597 16598 16599 16600 <span class="entry_type_deprecated">[deprecated] </span> 16601 16602 16603 16604 </td> <!-- entry_type --> 16605 16606 <td class="entry_description"> 16607 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p> 16608 </td> 16609 16610 <td class="entry_units"> 16611 </td> 16612 16613 <td class="entry_range"> 16614 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16615 <p>TODO: Remove property.<wbr/></p> 16616 </td> 16617 16618 <td class="entry_tags"> 16619 <ul class="entry_tags"> 16620 <li><a href="#tag_BC">BC</a></li> 16621 </ul> 16622 </td> 16623 16624 </tr> 16625 <tr class="entries_header"> 16626 <th class="th_details" colspan="5">Details</th> 16627 </tr> 16628 <tr class="entry_cont"> 16629 <td class="entry_details" colspan="5"> 16630 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support 16631sensor maximum resolution (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> 16632 </td> 16633 </tr> 16634 16635 <tr class="entries_header"> 16636 <th class="th_details" colspan="5">HAL Implementation Details</th> 16637 </tr> 16638 <tr class="entry_cont"> 16639 <td class="entry_details" colspan="5"> 16640 <p>The HAL must include sensor maximum resolution 16641(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/> 16642and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p> 16643 </td> 16644 </tr> 16645 16646 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16647 <!-- end of entry --> 16648 16649 16650 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom"> 16651 <td class="entry_name 16652 " rowspan="3"> 16653 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom 16654 </td> 16655 <td class="entry_type"> 16656 <span class="entry_type_name">float</span> 16657 16658 <span class="entry_type_visibility"> [public]</span> 16659 16660 16661 <span class="entry_type_hwlevel">[legacy] </span> 16662 16663 16664 16665 16666 </td> <!-- entry_type --> 16667 16668 <td class="entry_description"> 16669 <p>The maximum ratio between both active area width 16670and crop region width,<wbr/> and active area height and 16671crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 16672 </td> 16673 16674 <td class="entry_units"> 16675 Zoom scale factor 16676 </td> 16677 16678 <td class="entry_range"> 16679 <p>>=1</p> 16680 </td> 16681 16682 <td class="entry_tags"> 16683 <ul class="entry_tags"> 16684 <li><a href="#tag_BC">BC</a></li> 16685 </ul> 16686 </td> 16687 16688 </tr> 16689 <tr class="entries_header"> 16690 <th class="th_details" colspan="5">Details</th> 16691 </tr> 16692 <tr class="entry_cont"> 16693 <td class="entry_details" colspan="5"> 16694 <p>This represents the maximum amount of zooming possible by 16695the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping 16696window size.<wbr/></p> 16697<p>Crop regions that have a width or height that is smaller 16698than this ratio allows will be rounded up to the minimum 16699allowed size by the camera device.<wbr/></p> 16700 </td> 16701 </tr> 16702 16703 16704 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16705 <!-- end of entry --> 16706 16707 16708 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations"> 16709 <td class="entry_name 16710 entry_name_deprecated 16711 " rowspan="3"> 16712 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations 16713 </td> 16714 <td class="entry_type"> 16715 <span class="entry_type_name">int64</span> 16716 <span class="entry_type_container">x</span> 16717 16718 <span class="entry_type_array"> 16719 n 16720 </span> 16721 <span class="entry_type_visibility"> [hidden]</span> 16722 16723 16724 16725 <span class="entry_type_deprecated">[deprecated] </span> 16726 16727 16728 16729 </td> <!-- entry_type --> 16730 16731 <td class="entry_description"> 16732 <p>For each available processed output size (defined in 16733<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the 16734minimum supportable frame duration for that size.<wbr/></p> 16735 </td> 16736 16737 <td class="entry_units"> 16738 Nanoseconds 16739 </td> 16740 16741 <td class="entry_range"> 16742 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16743 </td> 16744 16745 <td class="entry_tags"> 16746 <ul class="entry_tags"> 16747 <li><a href="#tag_BC">BC</a></li> 16748 </ul> 16749 </td> 16750 16751 </tr> 16752 <tr class="entries_header"> 16753 <th class="th_details" colspan="5">Details</th> 16754 </tr> 16755 <tr class="entry_cont"> 16756 <td class="entry_details" colspan="5"> 16757 <p>This should correspond to the frame duration when only that processed 16758stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 16759set to FAST.<wbr/></p> 16760<p>When multiple streams are configured,<wbr/> the minimum frame duration will 16761be >= max(individual stream min durations).<wbr/></p> 16762 </td> 16763 </tr> 16764 16765 16766 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16767 <!-- end of entry --> 16768 16769 16770 <tr class="entry" id="static_android.scaler.availableProcessedSizes"> 16771 <td class="entry_name 16772 entry_name_deprecated 16773 " rowspan="5"> 16774 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes 16775 </td> 16776 <td class="entry_type"> 16777 <span class="entry_type_name">int32</span> 16778 <span class="entry_type_container">x</span> 16779 16780 <span class="entry_type_array"> 16781 n x 2 16782 </span> 16783 <span class="entry_type_visibility"> [hidden as size]</span> 16784 16785 16786 16787 <span class="entry_type_deprecated">[deprecated] </span> 16788 16789 16790 16791 </td> <!-- entry_type --> 16792 16793 <td class="entry_description"> 16794 <p>The resolutions available for use with 16795processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and 16796platform opaque YUV/<wbr/>RGB streams to the GPU or video 16797encoders.<wbr/></p> 16798 </td> 16799 16800 <td class="entry_units"> 16801 </td> 16802 16803 <td class="entry_range"> 16804 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16805 </td> 16806 16807 <td class="entry_tags"> 16808 <ul class="entry_tags"> 16809 <li><a href="#tag_BC">BC</a></li> 16810 </ul> 16811 </td> 16812 16813 </tr> 16814 <tr class="entries_header"> 16815 <th class="th_details" colspan="5">Details</th> 16816 </tr> 16817 <tr class="entry_cont"> 16818 <td class="entry_details" colspan="5"> 16819 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p> 16820<p>For a given use case,<wbr/> the actual maximum supported resolution 16821may be lower than what is listed here,<wbr/> depending on the destination 16822Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 16823the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 16824smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 16825can provide.<wbr/></p> 16826<p>Please reference the documentation for the image data destination to 16827check if it limits the maximum size for image data.<wbr/></p> 16828 </td> 16829 </tr> 16830 16831 <tr class="entries_header"> 16832 <th class="th_details" colspan="5">HAL Implementation Details</th> 16833 </tr> 16834 <tr class="entry_cont"> 16835 <td class="entry_details" colspan="5"> 16836 <p>For FULL capability devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>),<wbr/> 16837the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a> 16838and each below resolution if it is smaller than or equal to the sensor 16839maximum resolution (if they are not listed in JPEG sizes already):</p> 16840<ul> 16841<li>240p (320 x 240)</li> 16842<li>480p (640 x 480)</li> 16843<li>720p (1280 x 720)</li> 16844<li>1080p (1920 x 1080)</li> 16845</ul> 16846<p>For LIMITED capability devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 16847the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p> 16848 </td> 16849 </tr> 16850 16851 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16852 <!-- end of entry --> 16853 16854 16855 <tr class="entry" id="static_android.scaler.availableRawMinDurations"> 16856 <td class="entry_name 16857 entry_name_deprecated 16858 " rowspan="3"> 16859 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations 16860 </td> 16861 <td class="entry_type"> 16862 <span class="entry_type_name">int64</span> 16863 <span class="entry_type_container">x</span> 16864 16865 <span class="entry_type_array"> 16866 n 16867 </span> 16868 <span class="entry_type_visibility"> [system]</span> 16869 16870 16871 16872 <span class="entry_type_deprecated">[deprecated] </span> 16873 16874 16875 16876 </td> <!-- entry_type --> 16877 16878 <td class="entry_description"> 16879 <p>For each available raw output size (defined in 16880<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum 16881supportable frame duration for that size.<wbr/></p> 16882 </td> 16883 16884 <td class="entry_units"> 16885 Nanoseconds 16886 </td> 16887 16888 <td class="entry_range"> 16889 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16890 </td> 16891 16892 <td class="entry_tags"> 16893 <ul class="entry_tags"> 16894 <li><a href="#tag_BC">BC</a></li> 16895 </ul> 16896 </td> 16897 16898 </tr> 16899 <tr class="entries_header"> 16900 <th class="th_details" colspan="5">Details</th> 16901 </tr> 16902 <tr class="entry_cont"> 16903 <td class="entry_details" colspan="5"> 16904 <p>Should correspond to the frame duration when only the raw stream is 16905active.<wbr/></p> 16906<p>When multiple streams are configured,<wbr/> the minimum 16907frame duration will be >= max(individual stream min 16908durations)</p> 16909 </td> 16910 </tr> 16911 16912 16913 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16914 <!-- end of entry --> 16915 16916 16917 <tr class="entry" id="static_android.scaler.availableRawSizes"> 16918 <td class="entry_name 16919 entry_name_deprecated 16920 " rowspan="1"> 16921 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes 16922 </td> 16923 <td class="entry_type"> 16924 <span class="entry_type_name">int32</span> 16925 <span class="entry_type_container">x</span> 16926 16927 <span class="entry_type_array"> 16928 n x 2 16929 </span> 16930 <span class="entry_type_visibility"> [system as size]</span> 16931 16932 16933 16934 <span class="entry_type_deprecated">[deprecated] </span> 16935 16936 16937 16938 </td> <!-- entry_type --> 16939 16940 <td class="entry_description"> 16941 <p>The resolutions available for use with raw 16942sensor output streams,<wbr/> listed as width,<wbr/> 16943height</p> 16944 </td> 16945 16946 <td class="entry_units"> 16947 </td> 16948 16949 <td class="entry_range"> 16950 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16951 </td> 16952 16953 <td class="entry_tags"> 16954 </td> 16955 16956 </tr> 16957 16958 16959 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16960 <!-- end of entry --> 16961 16962 16963 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap"> 16964 <td class="entry_name 16965 " rowspan="5"> 16966 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map 16967 </td> 16968 <td class="entry_type"> 16969 <span class="entry_type_name">int32</span> 16970 16971 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span> 16972 16973 16974 16975 16976 16977 16978 </td> <!-- entry_type --> 16979 16980 <td class="entry_description"> 16981 <p>The mapping of image formats that are supported by this 16982camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> 16983 </td> 16984 16985 <td class="entry_units"> 16986 </td> 16987 16988 <td class="entry_range"> 16989 </td> 16990 16991 <td class="entry_tags"> 16992 <ul class="entry_tags"> 16993 <li><a href="#tag_REPROC">REPROC</a></li> 16994 </ul> 16995 </td> 16996 16997 </tr> 16998 <tr class="entries_header"> 16999 <th class="th_details" colspan="5">Details</th> 17000 </tr> 17001 <tr class="entry_cont"> 17002 <td class="entry_details" colspan="5"> 17003 <p>All camera devices with at least 1 17004<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one 17005available input format.<wbr/></p> 17006<p>The camera device will support the following map of formats,<wbr/> 17007if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p> 17008<table> 17009<thead> 17010<tr> 17011<th align="left">Input Format</th> 17012<th align="left">Output Format</th> 17013<th align="left">Capability</th> 17014</tr> 17015</thead> 17016<tbody> 17017<tr> 17018<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 17019<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17020<td align="left">PRIVATE_<wbr/>REPROCESSING</td> 17021</tr> 17022<tr> 17023<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 17024<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 17025<td align="left">PRIVATE_<wbr/>REPROCESSING</td> 17026</tr> 17027<tr> 17028<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 17029<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17030<td align="left">YUV_<wbr/>REPROCESSING</td> 17031</tr> 17032<tr> 17033<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 17034<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 17035<td align="left">YUV_<wbr/>REPROCESSING</td> 17036</tr> 17037</tbody> 17038</table> 17039<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A 17040PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a> 17041with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p> 17042<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input 17043or output will never hurt maximum frame rate (i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">getOutputStallDuration(ImageFormat.<wbr/>PRIVATE,<wbr/> size)</a> is always 0),<wbr/></p> 17044<p>Attempting to configure an input stream with output streams not 17045listed as available in this map is not valid.<wbr/></p> 17046 </td> 17047 </tr> 17048 17049 <tr class="entries_header"> 17050 <th class="th_details" colspan="5">HAL Implementation Details</th> 17051 </tr> 17052 <tr class="entry_cont"> 17053 <td class="entry_details" colspan="5"> 17054 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition 17055of the image format enumerations.<wbr/> The PRIVATE format refers to the 17056HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine 17057the actual format by using the gralloc usage flags.<wbr/> 17058For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially 17059processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/> 17060See camera3.<wbr/>h for more details.<wbr/></p> 17061<p>This value is encoded as a variable-size array-of-arrays.<wbr/> 17062The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where 17063<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another 17064inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p> 17065<p>A code sample to read/<wbr/>write this encoding (with a device that 17066supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/> 17067and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p> 17068<pre><code>//<wbr/> reading 17069int32_<wbr/>t* contents = &entry.<wbr/>i32[0]; 17070for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) { 17071 int32_<wbr/>t format = contents[i++]; 17072 int32_<wbr/>t length = contents[i++]; 17073 int32_<wbr/>t output_<wbr/>formats[length]; 17074 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/> 17075 length * sizeof(int32_<wbr/>t)); 17076 i += length; 17077} 17078 17079//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING) 17080int32_<wbr/>t[] contents = { 17081 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 17082 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 17083}; 17084update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/> 17085 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry); 17086</code></pre> 17087<p>If the HAL claims to support any of the capabilities listed in the 17088above details,<wbr/> then it must also support all the input-output 17089combinations listed for that capability.<wbr/> It can optionally support 17090additional formats if it so chooses.<wbr/></p> 17091 </td> 17092 </tr> 17093 17094 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17095 <!-- end of entry --> 17096 17097 17098 <tr class="entry" id="static_android.scaler.availableStreamConfigurations"> 17099 <td class="entry_name 17100 " rowspan="5"> 17101 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations 17102 </td> 17103 <td class="entry_type"> 17104 <span class="entry_type_name entry_type_name_enum">int32</span> 17105 <span class="entry_type_container">x</span> 17106 17107 <span class="entry_type_array"> 17108 n x 4 17109 </span> 17110 <span class="entry_type_visibility"> [hidden as streamConfiguration]</span> 17111 17112 17113 <span class="entry_type_hwlevel">[legacy] </span> 17114 17115 17116 17117 <ul class="entry_type_enum"> 17118 <li> 17119 <span class="entry_type_enum_name">OUTPUT</span> 17120 </li> 17121 <li> 17122 <span class="entry_type_enum_name">INPUT</span> 17123 </li> 17124 </ul> 17125 17126 </td> <!-- entry_type --> 17127 17128 <td class="entry_description"> 17129 <p>The available stream configurations that this 17130camera device supports 17131(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 17132 </td> 17133 17134 <td class="entry_units"> 17135 </td> 17136 17137 <td class="entry_range"> 17138 </td> 17139 17140 <td class="entry_tags"> 17141 </td> 17142 17143 </tr> 17144 <tr class="entries_header"> 17145 <th class="th_details" colspan="5">Details</th> 17146 </tr> 17147 <tr class="entry_cont"> 17148 <td class="entry_details" colspan="5"> 17149 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> 17150tuples.<wbr/></p> 17151<p>For a given use case,<wbr/> the actual maximum supported resolution 17152may be lower than what is listed here,<wbr/> depending on the destination 17153Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 17154the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 17155smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 17156can provide.<wbr/></p> 17157<p>Please reference the documentation for the image data destination to 17158check if it limits the maximum size for image data.<wbr/></p> 17159<p>Not all output formats may be supported in a configuration with 17160an input stream of a particular format.<wbr/> For more details,<wbr/> see 17161<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 17162<p>The following table describes the minimum required output stream 17163configurations based on the hardware level 17164(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 17165<table> 17166<thead> 17167<tr> 17168<th align="center">Format</th> 17169<th align="center">Size</th> 17170<th align="center">Hardware Level</th> 17171<th align="center">Notes</th> 17172</tr> 17173</thead> 17174<tbody> 17175<tr> 17176<td align="center">JPEG</td> 17177<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 17178<td align="center">Any</td> 17179<td align="center"></td> 17180</tr> 17181<tr> 17182<td align="center">JPEG</td> 17183<td align="center">1920x1080 (1080p)</td> 17184<td align="center">Any</td> 17185<td align="center">if 1080p <= activeArraySize</td> 17186</tr> 17187<tr> 17188<td align="center">JPEG</td> 17189<td align="center">1280x720 (720)</td> 17190<td align="center">Any</td> 17191<td align="center">if 720p <= activeArraySize</td> 17192</tr> 17193<tr> 17194<td align="center">JPEG</td> 17195<td align="center">640x480 (480p)</td> 17196<td align="center">Any</td> 17197<td align="center">if 480p <= activeArraySize</td> 17198</tr> 17199<tr> 17200<td align="center">JPEG</td> 17201<td align="center">320x240 (240p)</td> 17202<td align="center">Any</td> 17203<td align="center">if 240p <= activeArraySize</td> 17204</tr> 17205<tr> 17206<td align="center">YUV_<wbr/>420_<wbr/>888</td> 17207<td align="center">all output sizes available for JPEG</td> 17208<td align="center">FULL</td> 17209<td align="center"></td> 17210</tr> 17211<tr> 17212<td align="center">YUV_<wbr/>420_<wbr/>888</td> 17213<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 17214<td align="center">LIMITED</td> 17215<td align="center"></td> 17216</tr> 17217<tr> 17218<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> 17219<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 17220<td align="center">Any</td> 17221<td align="center"></td> 17222</tr> 17223</tbody> 17224</table> 17225<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional 17226mandatory stream configurations on a per-capability basis.<wbr/></p> 17227 </td> 17228 </tr> 17229 17230 <tr class="entries_header"> 17231 <th class="th_details" colspan="5">HAL Implementation Details</th> 17232 </tr> 17233 <tr class="entry_cont"> 17234 <td class="entry_details" colspan="5"> 17235 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 17236of sensor maximum resolution for JPEG formats (regardless of hardware 17237level).<wbr/></p> 17238<p>(The following is a rewording of the above required table):</p> 17239<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 17240<ul> 17241<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 17242(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 17243(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>) has an aspect ratio other than these,<wbr/> 17244it does not have to be included in the supported JPEG sizes.<wbr/></li> 17245<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 17246the dimensions being a multiple of 16.<wbr/></li> 17247</ul> 17248<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 17249However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum 17250resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 17251additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 17252if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 17253ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 172543264x2448.<wbr/></p> 17255<p>For FULL capability devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>),<wbr/> 17256the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 17257here as output streams.<wbr/></p> 17258<p>It must also include each below resolution if it is smaller than or 17259equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 17260formats),<wbr/> as output streams:</p> 17261<ul> 17262<li>240p (320 x 240)</li> 17263<li>480p (640 x 480)</li> 17264<li>720p (1280 x 720)</li> 17265<li>1080p (1920 x 1080)</li> 17266</ul> 17267<p>For LIMITED capability devices 17268(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 17269the HAL only has to list up to the maximum video size 17270supported by the device.<wbr/></p> 17271<p>Regardless of hardware level,<wbr/> every output resolution available for 17272YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 17273<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 17274<ul> 17275<li>availableFormats</li> 17276<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 17277</ul> 17278 </td> 17279 </tr> 17280 17281 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17282 <!-- end of entry --> 17283 17284 17285 <tr class="entry" id="static_android.scaler.availableMinFrameDurations"> 17286 <td class="entry_name 17287 " rowspan="3"> 17288 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations 17289 </td> 17290 <td class="entry_type"> 17291 <span class="entry_type_name">int64</span> 17292 <span class="entry_type_container">x</span> 17293 17294 <span class="entry_type_array"> 17295 4 x n 17296 </span> 17297 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 17298 17299 17300 <span class="entry_type_hwlevel">[legacy] </span> 17301 17302 17303 17304 17305 </td> <!-- entry_type --> 17306 17307 <td class="entry_description"> 17308 <p>This lists the minimum frame duration for each 17309format/<wbr/>size combination.<wbr/></p> 17310 </td> 17311 17312 <td class="entry_units"> 17313 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 17314 </td> 17315 17316 <td class="entry_range"> 17317 </td> 17318 17319 <td class="entry_tags"> 17320 <ul class="entry_tags"> 17321 <li><a href="#tag_V1">V1</a></li> 17322 </ul> 17323 </td> 17324 17325 </tr> 17326 <tr class="entries_header"> 17327 <th class="th_details" colspan="5">Details</th> 17328 </tr> 17329 <tr class="entry_cont"> 17330 <td class="entry_details" colspan="5"> 17331 <p>This should correspond to the frame duration when only that 17332stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 17333set to either OFF or FAST.<wbr/></p> 17334<p>When multiple streams are used in a request,<wbr/> the minimum frame 17335duration will be max(individual stream min durations).<wbr/></p> 17336<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 17337is the same regardless of whether the stream is input or output.<wbr/></p> 17338<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 17339<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 17340calculating the max frame rate.<wbr/></p> 17341<p>(Keep in sync with 17342<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p> 17343 </td> 17344 </tr> 17345 17346 17347 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17348 <!-- end of entry --> 17349 17350 17351 <tr class="entry" id="static_android.scaler.availableStallDurations"> 17352 <td class="entry_name 17353 " rowspan="5"> 17354 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations 17355 </td> 17356 <td class="entry_type"> 17357 <span class="entry_type_name">int64</span> 17358 <span class="entry_type_container">x</span> 17359 17360 <span class="entry_type_array"> 17361 4 x n 17362 </span> 17363 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 17364 17365 17366 <span class="entry_type_hwlevel">[legacy] </span> 17367 17368 17369 17370 17371 </td> <!-- entry_type --> 17372 17373 <td class="entry_description"> 17374 <p>This lists the maximum stall duration for each 17375output format/<wbr/>size combination.<wbr/></p> 17376 </td> 17377 17378 <td class="entry_units"> 17379 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 17380 </td> 17381 17382 <td class="entry_range"> 17383 </td> 17384 17385 <td class="entry_tags"> 17386 <ul class="entry_tags"> 17387 <li><a href="#tag_V1">V1</a></li> 17388 </ul> 17389 </td> 17390 17391 </tr> 17392 <tr class="entries_header"> 17393 <th class="th_details" colspan="5">Details</th> 17394 </tr> 17395 <tr class="entry_cont"> 17396 <td class="entry_details" colspan="5"> 17397 <p>A stall duration is how much extra time would get added 17398to the normal minimum frame duration for a repeating request 17399that has streams with non-zero stall.<wbr/></p> 17400<p>For example,<wbr/> consider JPEG captures which have the following 17401characteristics:</p> 17402<ul> 17403<li>JPEG streams act like processed YUV streams in requests for which 17404they are not included; in requests in which they are directly 17405referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a 17406JPEG stream requires the underlying YUV data to always be ready for 17407use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact 17408frame duration) on requests that actually reference a JPEG stream.<wbr/></li> 17409<li>The JPEG processor can run concurrently to the rest of the camera 17410pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> 17411</ul> 17412<p>In other words,<wbr/> using a repeating YUV request would result 17413in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single 17414JPEG request is submitted periodically,<wbr/> the frame rate will stay 17415at 30 FPS (as long as we wait for the previous JPEG to return each 17416time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then 17417the frame rate will drop from 30 FPS.<wbr/></p> 17418<p>In general,<wbr/> submitting a new request with a non-0 stall time 17419stream will <em>not</em> cause a frame rate drop unless there are still 17420outstanding buffers for that stream from previous requests.<wbr/></p> 17421<p>Submitting a repeating request with streams (call this <code>S</code>) 17422is the same as setting the minimum frame duration from 17423the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with 17424the maximum stall duration for <code>S</code>.<wbr/></p> 17425<p>If interleaving requests with and without a stall duration,<wbr/> 17426a request will stall by the maximum of the remaining times 17427for each can-stall stream with outstanding buffers.<wbr/></p> 17428<p>This means that a stalling request will not have an exposure start 17429until the stall has completed.<wbr/></p> 17430<p>This should correspond to the stall duration when only that stream is 17431active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST 17432or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY 17433effectively results in an indeterminate stall duration for all 17434streams in a request (the regular stall calculation rules are 17435ignored).<wbr/></p> 17436<p>The following formats may always have a stall duration:</p> 17437<ul> 17438<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li> 17439<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li> 17440</ul> 17441<p>The following formats will never have a stall duration:</p> 17442<ul> 17443<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></li> 17444<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li> 17445</ul> 17446<p>All other formats may or may not have an allowed stall duration on 17447a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 17448for more details.<wbr/></p> 17449<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about 17450calculating the max frame rate (absent stalls).<wbr/></p> 17451<p>(Keep up to date with 17452<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p> 17453 </td> 17454 </tr> 17455 17456 <tr class="entries_header"> 17457 <th class="th_details" colspan="5">HAL Implementation Details</th> 17458 </tr> 17459 <tr class="entry_cont"> 17460 <td class="entry_details" colspan="5"> 17461 <p>If possible,<wbr/> it is recommended that all non-JPEG formats 17462(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE 17463and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p> 17464 </td> 17465 </tr> 17466 17467 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17468 <!-- end of entry --> 17469 17470 17471 <tr class="entry" id="static_android.scaler.streamConfigurationMap"> 17472 <td class="entry_name 17473 " rowspan="5"> 17474 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map 17475 </td> 17476 <td class="entry_type"> 17477 <span class="entry_type_name">int32</span> 17478 17479 <span class="entry_type_visibility"> [public as streamConfigurationMap]</span> 17480 17481 <span class="entry_type_synthetic">[synthetic] </span> 17482 17483 <span class="entry_type_hwlevel">[legacy] </span> 17484 17485 17486 17487 17488 </td> <!-- entry_type --> 17489 17490 <td class="entry_description"> 17491 <p>The available stream configurations that this 17492camera device supports; also includes the minimum frame durations 17493and the stall durations for each format/<wbr/>size combination.<wbr/></p> 17494 </td> 17495 17496 <td class="entry_units"> 17497 </td> 17498 17499 <td class="entry_range"> 17500 </td> 17501 17502 <td class="entry_tags"> 17503 </td> 17504 17505 </tr> 17506 <tr class="entries_header"> 17507 <th class="th_details" colspan="5">Details</th> 17508 </tr> 17509 <tr class="entry_cont"> 17510 <td class="entry_details" colspan="5"> 17511 <p>All camera devices will support sensor maximum resolution (defined by 17512<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>) for the JPEG format.<wbr/></p> 17513<p>For a given use case,<wbr/> the actual maximum supported resolution 17514may be lower than what is listed here,<wbr/> depending on the destination 17515Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 17516the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 17517smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 17518can provide.<wbr/></p> 17519<p>Please reference the documentation for the image data destination to 17520check if it limits the maximum size for image data.<wbr/></p> 17521<p>The following table describes the minimum required output stream 17522configurations based on the hardware level 17523(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 17524<table> 17525<thead> 17526<tr> 17527<th align="center">Format</th> 17528<th align="center">Size</th> 17529<th align="center">Hardware Level</th> 17530<th align="center">Notes</th> 17531</tr> 17532</thead> 17533<tbody> 17534<tr> 17535<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17536<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td> 17537<td align="center">Any</td> 17538<td align="center"></td> 17539</tr> 17540<tr> 17541<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17542<td align="center">1920x1080 (1080p)</td> 17543<td align="center">Any</td> 17544<td align="center">if 1080p <= activeArraySize</td> 17545</tr> 17546<tr> 17547<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17548<td align="center">1280x720 (720p)</td> 17549<td align="center">Any</td> 17550<td align="center">if 720p <= activeArraySize</td> 17551</tr> 17552<tr> 17553<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17554<td align="center">640x480 (480p)</td> 17555<td align="center">Any</td> 17556<td align="center">if 480p <= activeArraySize</td> 17557</tr> 17558<tr> 17559<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17560<td align="center">320x240 (240p)</td> 17561<td align="center">Any</td> 17562<td align="center">if 240p <= activeArraySize</td> 17563</tr> 17564<tr> 17565<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 17566<td align="center">all output sizes available for JPEG</td> 17567<td align="center">FULL</td> 17568<td align="center"></td> 17569</tr> 17570<tr> 17571<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 17572<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 17573<td align="center">LIMITED</td> 17574<td align="center"></td> 17575</tr> 17576<tr> 17577<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 17578<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 17579<td align="center">Any</td> 17580<td align="center"></td> 17581</tr> 17582</tbody> 17583</table> 17584<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for additional mandatory 17585stream configurations on a per-capability basis.<wbr/></p> 17586<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 17587<ul> 17588<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 17589(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 17590(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>) has an aspect ratio other than these,<wbr/> 17591it does not have to be included in the supported JPEG sizes.<wbr/></li> 17592<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 17593the dimensions being a multiple of 16.<wbr/> 17594Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 17595However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum 17596resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 17597additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 17598if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 17599ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 176003264x2448.<wbr/></li> 17601</ul> 17602 </td> 17603 </tr> 17604 17605 <tr class="entries_header"> 17606 <th class="th_details" colspan="5">HAL Implementation Details</th> 17607 </tr> 17608 <tr class="entry_cont"> 17609 <td class="entry_details" colspan="5"> 17610 <p>Do not set this property directly 17611(it is synthetic and will not be available at the HAL layer); 17612set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p> 17613<p>Not all output formats may be supported in a configuration with 17614an input stream of a particular format.<wbr/> For more details,<wbr/> see 17615<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 17616<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 17617of sensor maximum resolution for JPEG formats (regardless of hardware 17618level).<wbr/></p> 17619<p>(The following is a rewording of the above required table):</p> 17620<p>The HAL must include sensor maximum resolution (defined by 17621<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> 17622<p>For FULL capability devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>),<wbr/> 17623the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 17624here as output streams.<wbr/></p> 17625<p>It must also include each below resolution if it is smaller than or 17626equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 17627formats),<wbr/> as output streams:</p> 17628<ul> 17629<li>240p (320 x 240)</li> 17630<li>480p (640 x 480)</li> 17631<li>720p (1280 x 720)</li> 17632<li>1080p (1920 x 1080)</li> 17633</ul> 17634<p>For LIMITED capability devices 17635(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 17636the HAL only has to list up to the maximum video size 17637supported by the device.<wbr/></p> 17638<p>Regardless of hardware level,<wbr/> every output resolution available for 17639YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 17640<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 17641<ul> 17642<li>availableFormats</li> 17643<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 17644</ul> 17645 </td> 17646 </tr> 17647 17648 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17649 <!-- end of entry --> 17650 17651 17652 <tr class="entry" id="static_android.scaler.croppingType"> 17653 <td class="entry_name 17654 " rowspan="3"> 17655 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type 17656 </td> 17657 <td class="entry_type"> 17658 <span class="entry_type_name entry_type_name_enum">byte</span> 17659 17660 <span class="entry_type_visibility"> [public]</span> 17661 17662 17663 <span class="entry_type_hwlevel">[legacy] </span> 17664 17665 17666 17667 <ul class="entry_type_enum"> 17668 <li> 17669 <span class="entry_type_enum_name">CENTER_ONLY</span> 17670 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span> 17671 </li> 17672 <li> 17673 <span class="entry_type_enum_name">FREEFORM</span> 17674 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span> 17675 </li> 17676 </ul> 17677 17678 </td> <!-- entry_type --> 17679 17680 <td class="entry_description"> 17681 <p>The crop type that this camera device supports.<wbr/></p> 17682 </td> 17683 17684 <td class="entry_units"> 17685 </td> 17686 17687 <td class="entry_range"> 17688 </td> 17689 17690 <td class="entry_tags"> 17691 </td> 17692 17693 </tr> 17694 <tr class="entries_header"> 17695 <th class="th_details" colspan="5">Details</th> 17696 </tr> 17697 <tr class="entry_cont"> 17698 <td class="entry_details" colspan="5"> 17699 <p>When passing a non-centered crop region (<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>) to a camera 17700device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the 17701crop region to the center of the sensor active array (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>) 17702and keep the crop region width and height unchanged.<wbr/> The camera device will return the 17703final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 17704<p>Camera devices that support FREEFORM cropping will support any crop region that 17705is inside of the active array.<wbr/> The camera device will apply the same crop region and 17706return the final used crop region in capture result metadata <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 17707<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p> 17708 </td> 17709 </tr> 17710 17711 17712 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17713 <!-- end of entry --> 17714 17715 17716 17717 <!-- end of kind --> 17718 </tbody> 17719 <tr><td colspan="6" class="kind">dynamic</td></tr> 17720 17721 <thead class="entries_header"> 17722 <tr> 17723 <th class="th_name">Property Name</th> 17724 <th class="th_type">Type</th> 17725 <th class="th_description">Description</th> 17726 <th class="th_units">Units</th> 17727 <th class="th_range">Range</th> 17728 <th class="th_tags">Tags</th> 17729 </tr> 17730 </thead> 17731 17732 <tbody> 17733 17734 17735 17736 17737 17738 17739 17740 17741 17742 17743 <tr class="entry" id="dynamic_android.scaler.cropRegion"> 17744 <td class="entry_name 17745 " rowspan="5"> 17746 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 17747 </td> 17748 <td class="entry_type"> 17749 <span class="entry_type_name">int32</span> 17750 <span class="entry_type_container">x</span> 17751 17752 <span class="entry_type_array"> 17753 4 17754 </span> 17755 <span class="entry_type_visibility"> [public as rectangle]</span> 17756 17757 17758 <span class="entry_type_hwlevel">[legacy] </span> 17759 17760 17761 17762 17763 </td> <!-- entry_type --> 17764 17765 <td class="entry_description"> 17766 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 17767 </td> 17768 17769 <td class="entry_units"> 17770 Pixel coordinates relative to 17771 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 17772 </td> 17773 17774 <td class="entry_range"> 17775 </td> 17776 17777 <td class="entry_tags"> 17778 <ul class="entry_tags"> 17779 <li><a href="#tag_BC">BC</a></li> 17780 </ul> 17781 </td> 17782 17783 </tr> 17784 <tr class="entries_header"> 17785 <th class="th_details" colspan="5">Details</th> 17786 </tr> 17787 <tr class="entry_cont"> 17788 <td class="entry_details" colspan="5"> 17789 <p>This control can be used to implement digital zoom.<wbr/></p> 17790<p>The crop region coordinate system is based off 17791<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/> 0)</code> being the 17792top-left corner of the sensor active array.<wbr/></p> 17793<p>Output streams use this rectangle to produce their output,<wbr/> 17794cropping to a smaller region if necessary to maintain the 17795stream's aspect ratio,<wbr/> then scaling the sensor input to 17796match the output's configured resolution.<wbr/></p> 17797<p>The crop region is applied after the RAW to other color 17798space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 17799(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 17800croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 17801<p>For non-raw streams,<wbr/> any additional per-stream cropping will 17802be done to maximize the final pixel area of the stream.<wbr/></p> 17803<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 17804ratio,<wbr/> then 4:3 streams will use the exact crop 17805region.<wbr/> 16:9 streams will further crop vertically 17806(letterbox).<wbr/></p> 17807<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 17808outputs will crop horizontally (pillarbox),<wbr/> and 16:9 17809streams will match exactly.<wbr/> These additional crops will 17810be centered within the crop region.<wbr/></p> 17811<p>The width and height of the crop region cannot 17812be set to be smaller than 17813<code>floor( activeArraySize.<wbr/>width /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code> and 17814<code>floor( activeArraySize.<wbr/>height /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>,<wbr/> respectively.<wbr/></p> 17815<p>The camera device may adjust the crop region to account 17816for rounding and other hardware requirements; the final 17817crop region used will be included in the output capture 17818result.<wbr/></p> 17819 </td> 17820 </tr> 17821 17822 <tr class="entries_header"> 17823 <th class="th_details" colspan="5">HAL Implementation Details</th> 17824 </tr> 17825 <tr class="entry_cont"> 17826 <td class="entry_details" colspan="5"> 17827 <p>The output streams must maintain square pixels at all 17828times,<wbr/> no matter what the relative aspect ratios of the 17829crop region and the stream are.<wbr/> Negative values for 17830corner are allowed for raw output if full pixel array is 17831larger than active pixel array.<wbr/> Width and height may be 17832rounded to nearest larger supportable width,<wbr/> especially 17833for raw output,<wbr/> where only a few fixed scales may be 17834possible.<wbr/></p> 17835<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller 17836size than active array size,<wbr/> the HAL need follow below cropping rules:</p> 17837<ul> 17838<li> 17839<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active 17840array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from 17841<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p> 17842<ol> 17843<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor 17844cropped pixel area by (tx,<wbr/> ty),<wbr/> 17845where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code> 17846and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The 17847(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the 17848<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 17849<li>Scale the width and height of requested cropRegion with scaling factor of 17850sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height 17851respectively.<wbr/> 17852Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image 17853with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need 17854follow the general cropping rule for this new cropRegion and effective active 17855array size.<wbr/></li> 17856</ol> 17857</li> 17858<li> 17859<p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/> 17860The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/> 17861The reported cropRegion may be slightly different with the requested cropRegion since 17862the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other 17863hardware limitations.<wbr/></p> 17864</li> 17865</ul> 17866<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 17867 </td> 17868 </tr> 17869 17870 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17871 <!-- end of entry --> 17872 17873 17874 17875 <!-- end of kind --> 17876 </tbody> 17877 17878 <!-- end of section --> 17879 <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr> 17880 17881 17882 <tr><td colspan="6" class="kind">controls</td></tr> 17883 17884 <thead class="entries_header"> 17885 <tr> 17886 <th class="th_name">Property Name</th> 17887 <th class="th_type">Type</th> 17888 <th class="th_description">Description</th> 17889 <th class="th_units">Units</th> 17890 <th class="th_range">Range</th> 17891 <th class="th_tags">Tags</th> 17892 </tr> 17893 </thead> 17894 17895 <tbody> 17896 17897 17898 17899 17900 17901 17902 17903 17904 17905 17906 <tr class="entry" id="controls_android.sensor.exposureTime"> 17907 <td class="entry_name 17908 " rowspan="3"> 17909 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 17910 </td> 17911 <td class="entry_type"> 17912 <span class="entry_type_name">int64</span> 17913 17914 <span class="entry_type_visibility"> [public]</span> 17915 17916 17917 <span class="entry_type_hwlevel">[full] </span> 17918 17919 17920 17921 17922 </td> <!-- entry_type --> 17923 17924 <td class="entry_description"> 17925 <p>Duration each pixel is exposed to 17926light.<wbr/></p> 17927 </td> 17928 17929 <td class="entry_units"> 17930 Nanoseconds 17931 </td> 17932 17933 <td class="entry_range"> 17934 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 17935 </td> 17936 17937 <td class="entry_tags"> 17938 <ul class="entry_tags"> 17939 <li><a href="#tag_V1">V1</a></li> 17940 </ul> 17941 </td> 17942 17943 </tr> 17944 <tr class="entries_header"> 17945 <th class="th_details" colspan="5">Details</th> 17946 </tr> 17947 <tr class="entry_cont"> 17948 <td class="entry_details" colspan="5"> 17949 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 17950duration exposed to the nearest possible value (rather than expose longer).<wbr/> 17951The final exposure time used will be available in the output capture result.<wbr/></p> 17952<p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to 17953OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 17954 </td> 17955 </tr> 17956 17957 17958 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17959 <!-- end of entry --> 17960 17961 17962 <tr class="entry" id="controls_android.sensor.frameDuration"> 17963 <td class="entry_name 17964 " rowspan="5"> 17965 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 17966 </td> 17967 <td class="entry_type"> 17968 <span class="entry_type_name">int64</span> 17969 17970 <span class="entry_type_visibility"> [public]</span> 17971 17972 17973 <span class="entry_type_hwlevel">[full] </span> 17974 17975 17976 17977 17978 </td> <!-- entry_type --> 17979 17980 <td class="entry_description"> 17981 <p>Duration from start of frame exposure to 17982start of next frame exposure.<wbr/></p> 17983 </td> 17984 17985 <td class="entry_units"> 17986 Nanoseconds 17987 </td> 17988 17989 <td class="entry_range"> 17990 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 17991<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration 17992is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 17993 </td> 17994 17995 <td class="entry_tags"> 17996 <ul class="entry_tags"> 17997 <li><a href="#tag_V1">V1</a></li> 17998 </ul> 17999 </td> 18000 18001 </tr> 18002 <tr class="entries_header"> 18003 <th class="th_details" colspan="5">Details</th> 18004 </tr> 18005 <tr class="entry_cont"> 18006 <td class="entry_details" colspan="5"> 18007 <p>The maximum frame rate that can be supported by a camera subsystem is 18008a function of many factors:</p> 18009<ul> 18010<li>Requested resolutions of output image streams</li> 18011<li>Availability of binning /<wbr/> skipping modes on the imager</li> 18012<li>The bandwidth of the imager interface</li> 18013<li>The bandwidth of the various ISP processing blocks</li> 18014</ul> 18015<p>Since these factors can vary greatly between different ISPs and 18016sensors,<wbr/> the camera abstraction tries to represent the bandwidth 18017restrictions with as simple a model as possible.<wbr/></p> 18018<p>The model presented has the following characteristics:</p> 18019<ul> 18020<li>The image sensor is always configured to output the smallest 18021resolution possible given the application's requested output stream 18022sizes.<wbr/> The smallest resolution is defined as being at least as large 18023as the largest requested output stream size; the camera pipeline must 18024never digitally upsample sensor data when the crop region covers the 18025whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 18026resolutions are configured,<wbr/> the sensor can provide a higher frame 18027rate.<wbr/></li> 18028<li>Since any request may use any or all the currently configured 18029output streams,<wbr/> the sensor and ISP must be configured to support 18030scaling a single capture to all the streams at the same time.<wbr/> This 18031means the camera pipeline must be ready to produce the largest 18032requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 18033frame rate of a given configured stream set is governed only by the 18034largest requested stream resolution.<wbr/></li> 18035<li>Using more than one output stream in a request does not affect the 18036frame duration.<wbr/></li> 18037<li>Certain format-streams may need to do additional background processing 18038before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 18039can run concurrently to the rest of the camera pipeline,<wbr/> but 18040cannot process more than 1 capture at a time.<wbr/></li> 18041</ul> 18042<p>The necessary information for the application,<wbr/> given the model above,<wbr/> 18043is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using 18044<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 18045These are used to determine the maximum frame rate /<wbr/> minimum frame 18046duration that is possible for a given stream configuration.<wbr/></p> 18047<p>Specifically,<wbr/> the application can use the following rules to 18048determine the minimum frame duration it can request from the camera 18049device:</p> 18050<ol> 18051<li>Let the set of currently configured input/<wbr/>output streams 18052be called <code>S</code>.<wbr/></li> 18053<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking 18054it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> 18055(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be 18056called <code>F</code>.<wbr/></li> 18057<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 18058for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 18059used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 18060</ol> 18061<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> 18062using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> 18063determines the steady state frame rate that the application will get 18064if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of 18065request be called <code>Rsimple</code>.<wbr/></p> 18066<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 18067by a single capture of a new request <code>Rstall</code> (which has at least 18068one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 18069same minimum frame duration this will not cause a frame rate loss 18070if all buffers from the previous <code>Rstall</code> have already been 18071delivered.<wbr/></p> 18072<p>For more details about stalling,<wbr/> see 18073<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p> 18074<p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to 18075OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 18076 </td> 18077 </tr> 18078 18079 <tr class="entries_header"> 18080 <th class="th_details" colspan="5">HAL Implementation Details</th> 18081 </tr> 18082 <tr class="entry_cont"> 18083 <td class="entry_details" colspan="5"> 18084 <p>For more details about stalling,<wbr/> see 18085<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 18086 </td> 18087 </tr> 18088 18089 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18090 <!-- end of entry --> 18091 18092 18093 <tr class="entry" id="controls_android.sensor.sensitivity"> 18094 <td class="entry_name 18095 " rowspan="5"> 18096 android.<wbr/>sensor.<wbr/>sensitivity 18097 </td> 18098 <td class="entry_type"> 18099 <span class="entry_type_name">int32</span> 18100 18101 <span class="entry_type_visibility"> [public]</span> 18102 18103 18104 <span class="entry_type_hwlevel">[full] </span> 18105 18106 18107 18108 18109 </td> <!-- entry_type --> 18110 18111 <td class="entry_description"> 18112 <p>The amount of gain applied to sensor data 18113before processing.<wbr/></p> 18114 </td> 18115 18116 <td class="entry_units"> 18117 ISO arithmetic units 18118 </td> 18119 18120 <td class="entry_range"> 18121 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 18122 </td> 18123 18124 <td class="entry_tags"> 18125 <ul class="entry_tags"> 18126 <li><a href="#tag_V1">V1</a></li> 18127 </ul> 18128 </td> 18129 18130 </tr> 18131 <tr class="entries_header"> 18132 <th class="th_details" colspan="5">Details</th> 18133 </tr> 18134 <tr class="entry_cont"> 18135 <td class="entry_details" colspan="5"> 18136 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 18137as defined in ISO 12232:2006.<wbr/></p> 18138<p>The sensitivity must be within <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a>,<wbr/> and 18139if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 18140is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 18141<p>If the camera device cannot apply the exact sensitivity 18142requested,<wbr/> it will reduce the gain to the nearest supported 18143value.<wbr/> The final sensitivity used will be available in the 18144output capture result.<wbr/></p> 18145 </td> 18146 </tr> 18147 18148 <tr class="entries_header"> 18149 <th class="th_details" colspan="5">HAL Implementation Details</th> 18150 </tr> 18151 <tr class="entry_cont"> 18152 <td class="entry_details" colspan="5"> 18153 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 18154 </td> 18155 </tr> 18156 18157 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18158 <!-- end of entry --> 18159 18160 18161 <tr class="entry" id="controls_android.sensor.testPatternData"> 18162 <td class="entry_name 18163 " rowspan="5"> 18164 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 18165 </td> 18166 <td class="entry_type"> 18167 <span class="entry_type_name">int32</span> 18168 <span class="entry_type_container">x</span> 18169 18170 <span class="entry_type_array"> 18171 4 18172 </span> 18173 <span class="entry_type_visibility"> [public]</span> 18174 18175 18176 18177 18178 18179 18180 </td> <!-- entry_type --> 18181 18182 <td class="entry_description"> 18183 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 18184when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 18185 </td> 18186 18187 <td class="entry_units"> 18188 </td> 18189 18190 <td class="entry_range"> 18191 </td> 18192 18193 <td class="entry_tags"> 18194 </td> 18195 18196 </tr> 18197 <tr class="entries_header"> 18198 <th class="th_details" colspan="5">Details</th> 18199 </tr> 18200 <tr class="entry_cont"> 18201 <td class="entry_details" colspan="5"> 18202 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 18203The camera device then uses the most significant X bits 18204that correspond to how many bits are in its Bayer raw sensor 18205output.<wbr/></p> 18206<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 1820710 most significant bits from each color channel.<wbr/></p> 18208 </td> 18209 </tr> 18210 18211 <tr class="entries_header"> 18212 <th class="th_details" colspan="5">HAL Implementation Details</th> 18213 </tr> 18214 <tr class="entry_cont"> 18215 <td class="entry_details" colspan="5"> 18216 18217 </td> 18218 </tr> 18219 18220 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18221 <!-- end of entry --> 18222 18223 18224 <tr class="entry" id="controls_android.sensor.testPatternMode"> 18225 <td class="entry_name 18226 " rowspan="5"> 18227 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 18228 </td> 18229 <td class="entry_type"> 18230 <span class="entry_type_name entry_type_name_enum">int32</span> 18231 18232 <span class="entry_type_visibility"> [public]</span> 18233 18234 18235 18236 18237 18238 <ul class="entry_type_enum"> 18239 <li> 18240 <span class="entry_type_enum_name">OFF</span> 18241 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 18242device returns captures from the image sensor.<wbr/></p> 18243<p>This is the default if the key is not set.<wbr/></p></span> 18244 </li> 18245 <li> 18246 <span class="entry_type_enum_name">SOLID_COLOR</span> 18247 <span class="entry_type_enum_notes"><p>Each pixel in <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> is replaced by its 18248respective color channel provided in 18249<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 18250<p>For example:</p> 18251<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 18252</code></pre> 18253<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 18254<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 18255</code></pre> 18256<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 18257are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 18258 </li> 18259 <li> 18260 <span class="entry_type_enum_name">COLOR_BARS</span> 18261 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 18262<p>The vertical bars (left-to-right) are as follows:</p> 18263<ul> 18264<li>100% white</li> 18265<li>yellow</li> 18266<li>cyan</li> 18267<li>green</li> 18268<li>magenta</li> 18269<li>red</li> 18270<li>blue</li> 18271<li>black</li> 18272</ul> 18273<p>In general the image would look like the following:</p> 18274<pre><code>W Y C G M R B K 18275W Y C G M R B K 18276W Y C G M R B K 18277W Y C G M R B K 18278W Y C G M R B K 18279.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 18280.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 18281.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 18282 18283(B = Blue,<wbr/> K = Black) 18284</code></pre> 18285<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 18286When this is not possible,<wbr/> the bar size should be rounded 18287down to the nearest integer and the pattern can repeat 18288on the right side.<wbr/></p> 18289<p>Each bar's height must always take up the full sensor 18290pixel array height.<wbr/></p> 18291<p>Each pixel in this test pattern must be set to either 182920% intensity or 100% intensity.<wbr/></p></span> 18293 </li> 18294 <li> 18295 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 18296 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 18297each bar should start at its specified color at the top,<wbr/> 18298and fade to gray at the bottom.<wbr/></p> 18299<p>Furthermore each bar is further subdivided into a left and 18300right half.<wbr/> The left half should have a smooth gradient,<wbr/> 18301and the right half should have a quantized gradient.<wbr/></p> 18302<p>In particular,<wbr/> the right half's should consist of blocks of the 18303same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 18304<p>The least significant bits in the quantized gradient should 18305be copied from the most significant bits of the smooth gradient.<wbr/></p> 18306<p>The height of each bar should always be a multiple of 128.<wbr/> 18307When this is not the case,<wbr/> the pattern should repeat at the bottom 18308of the image.<wbr/></p></span> 18309 </li> 18310 <li> 18311 <span class="entry_type_enum_name">PN9</span> 18312 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 18313generated from a PN9 512-bit sequence (typically implemented 18314in hardware with a linear feedback shift register).<wbr/></p> 18315<p>The generator should be reset at the beginning of each frame,<wbr/> 18316and thus each subsequent raw frame with this test pattern should 18317be exactly the same as the last.<wbr/></p></span> 18318 </li> 18319 <li> 18320 <span class="entry_type_enum_name">CUSTOM1</span> 18321 <span class="entry_type_enum_value">256</span> 18322 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 18323available only on this camera device are at least this numeric 18324value.<wbr/></p> 18325<p>All of the custom test patterns will be static 18326(that is the raw image must not vary from frame to frame).<wbr/></p></span> 18327 </li> 18328 </ul> 18329 18330 </td> <!-- entry_type --> 18331 18332 <td class="entry_description"> 18333 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 18334doing a real exposure from the camera.<wbr/></p> 18335 </td> 18336 18337 <td class="entry_units"> 18338 </td> 18339 18340 <td class="entry_range"> 18341 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 18342 </td> 18343 18344 <td class="entry_tags"> 18345 </td> 18346 18347 </tr> 18348 <tr class="entries_header"> 18349 <th class="th_details" colspan="5">Details</th> 18350 </tr> 18351 <tr class="entry_cont"> 18352 <td class="entry_details" colspan="5"> 18353 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 18354by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 18355work as normal.<wbr/></p> 18356<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 18357occur (and that the test pattern remain unmodified,<wbr/> since the flash 18358would not actually affect it).<wbr/></p> 18359<p>Defaults to OFF.<wbr/></p> 18360 </td> 18361 </tr> 18362 18363 <tr class="entries_header"> 18364 <th class="th_details" colspan="5">HAL Implementation Details</th> 18365 </tr> 18366 <tr class="entry_cont"> 18367 <td class="entry_details" colspan="5"> 18368 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 18369<p>The HAL may choose to substitute test patterns from the sensor 18370with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 18371indistinguishable to the ISP whether the data came from the 18372sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 18373 </td> 18374 </tr> 18375 18376 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18377 <!-- end of entry --> 18378 18379 18380 18381 <!-- end of kind --> 18382 </tbody> 18383 <tr><td colspan="6" class="kind">static</td></tr> 18384 18385 <thead class="entries_header"> 18386 <tr> 18387 <th class="th_name">Property Name</th> 18388 <th class="th_type">Type</th> 18389 <th class="th_description">Description</th> 18390 <th class="th_units">Units</th> 18391 <th class="th_range">Range</th> 18392 <th class="th_tags">Tags</th> 18393 </tr> 18394 </thead> 18395 18396 <tbody> 18397 18398 18399 18400 18401 18402 18403 18404 18405 18406 18407 18408 18409 <tr class="entry" id="static_android.sensor.info.activeArraySize"> 18410 <td class="entry_name 18411 " rowspan="5"> 18412 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 18413 </td> 18414 <td class="entry_type"> 18415 <span class="entry_type_name">int32</span> 18416 <span class="entry_type_container">x</span> 18417 18418 <span class="entry_type_array"> 18419 4 18420 </span> 18421 <span class="entry_type_visibility"> [public as rectangle]</span> 18422 18423 18424 <span class="entry_type_hwlevel">[legacy] </span> 18425 18426 18427 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 18428 18429 18430 </td> <!-- entry_type --> 18431 18432 <td class="entry_description"> 18433 <p>The area of the image sensor which corresponds to active pixels after any geometric 18434distortion correction has been applied.<wbr/></p> 18435 </td> 18436 18437 <td class="entry_units"> 18438 Pixel coordinates on the image sensor 18439 </td> 18440 18441 <td class="entry_range"> 18442 </td> 18443 18444 <td class="entry_tags"> 18445 <ul class="entry_tags"> 18446 <li><a href="#tag_RAW">RAW</a></li> 18447 </ul> 18448 </td> 18449 18450 </tr> 18451 <tr class="entries_header"> 18452 <th class="th_details" colspan="5">Details</th> 18453 </tr> 18454 <tr class="entry_cont"> 18455 <td class="entry_details" colspan="5"> 18456 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 18457the region that actually receives light from the scene) after any geometric correction 18458has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the 18459image output formats aside from the raw formats.<wbr/></p> 18460<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 18461the full pixel array,<wbr/> and the size of the full pixel array is given by 18462<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 18463<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including 18464<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> is defined relative to the active array rectangle given in 18465this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p> 18466<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may 18467include black calibration pixels or other inactive regions,<wbr/> and geometric correction 18468resulting in scaling or cropping may have been applied.<wbr/></p> 18469 </td> 18470 </tr> 18471 18472 <tr class="entries_header"> 18473 <th class="th_details" colspan="5">HAL Implementation Details</th> 18474 </tr> 18475 <tr class="entry_cont"> 18476 <td class="entry_details" colspan="5"> 18477 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 18478>= <code>(0,<wbr/>0)</code>.<wbr/> 18479The <code>(width,<wbr/> height)</code> must be <= <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p> 18480 </td> 18481 </tr> 18482 18483 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18484 <!-- end of entry --> 18485 18486 18487 <tr class="entry" id="static_android.sensor.info.sensitivityRange"> 18488 <td class="entry_name 18489 " rowspan="3"> 18490 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range 18491 </td> 18492 <td class="entry_type"> 18493 <span class="entry_type_name">int32</span> 18494 <span class="entry_type_container">x</span> 18495 18496 <span class="entry_type_array"> 18497 2 18498 </span> 18499 <span class="entry_type_visibility"> [public as rangeInt]</span> 18500 18501 18502 <span class="entry_type_hwlevel">[full] </span> 18503 18504 18505 <div class="entry_type_notes">Range of supported sensitivities</div> 18506 18507 18508 </td> <!-- entry_type --> 18509 18510 <td class="entry_description"> 18511 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this 18512camera device.<wbr/></p> 18513 </td> 18514 18515 <td class="entry_units"> 18516 </td> 18517 18518 <td class="entry_range"> 18519 <p>Min <= 100,<wbr/> Max >= 800</p> 18520 </td> 18521 18522 <td class="entry_tags"> 18523 <ul class="entry_tags"> 18524 <li><a href="#tag_BC">BC</a></li> 18525 <li><a href="#tag_V1">V1</a></li> 18526 </ul> 18527 </td> 18528 18529 </tr> 18530 <tr class="entries_header"> 18531 <th class="th_details" colspan="5">Details</th> 18532 </tr> 18533 <tr class="entry_cont"> 18534 <td class="entry_details" colspan="5"> 18535 <p>The values are the standard ISO sensitivity values,<wbr/> 18536as defined in ISO 12232:2006.<wbr/></p> 18537 </td> 18538 </tr> 18539 18540 18541 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18542 <!-- end of entry --> 18543 18544 18545 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement"> 18546 <td class="entry_name 18547 " rowspan="1"> 18548 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement 18549 </td> 18550 <td class="entry_type"> 18551 <span class="entry_type_name entry_type_name_enum">byte</span> 18552 18553 <span class="entry_type_visibility"> [public]</span> 18554 18555 18556 <span class="entry_type_hwlevel">[full] </span> 18557 18558 18559 18560 <ul class="entry_type_enum"> 18561 <li> 18562 <span class="entry_type_enum_name">RGGB</span> 18563 </li> 18564 <li> 18565 <span class="entry_type_enum_name">GRBG</span> 18566 </li> 18567 <li> 18568 <span class="entry_type_enum_name">GBRG</span> 18569 </li> 18570 <li> 18571 <span class="entry_type_enum_name">BGGR</span> 18572 </li> 18573 <li> 18574 <span class="entry_type_enum_name">RGB</span> 18575 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit 18576values for each pixel,<wbr/> instead of just 1 16-bit value 18577per pixel.<wbr/></p></span> 18578 </li> 18579 </ul> 18580 18581 </td> <!-- entry_type --> 18582 18583 <td class="entry_description"> 18584 <p>The arrangement of color filters on sensor; 18585represents the colors in the top-left 2x2 section of 18586the sensor,<wbr/> in reading order.<wbr/></p> 18587 </td> 18588 18589 <td class="entry_units"> 18590 </td> 18591 18592 <td class="entry_range"> 18593 </td> 18594 18595 <td class="entry_tags"> 18596 <ul class="entry_tags"> 18597 <li><a href="#tag_RAW">RAW</a></li> 18598 </ul> 18599 </td> 18600 18601 </tr> 18602 18603 18604 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18605 <!-- end of entry --> 18606 18607 18608 <tr class="entry" id="static_android.sensor.info.exposureTimeRange"> 18609 <td class="entry_name 18610 " rowspan="3"> 18611 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range 18612 </td> 18613 <td class="entry_type"> 18614 <span class="entry_type_name">int64</span> 18615 <span class="entry_type_container">x</span> 18616 18617 <span class="entry_type_array"> 18618 2 18619 </span> 18620 <span class="entry_type_visibility"> [public as rangeLong]</span> 18621 18622 18623 <span class="entry_type_hwlevel">[full] </span> 18624 18625 18626 <div class="entry_type_notes">nanoseconds</div> 18627 18628 18629 </td> <!-- entry_type --> 18630 18631 <td class="entry_description"> 18632 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported 18633by this camera device.<wbr/></p> 18634 </td> 18635 18636 <td class="entry_units"> 18637 Nanoseconds 18638 </td> 18639 18640 <td class="entry_range"> 18641 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL 18642capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 18643the maximum exposure time will be greater than 100ms.<wbr/></p> 18644 </td> 18645 18646 <td class="entry_tags"> 18647 <ul class="entry_tags"> 18648 <li><a href="#tag_V1">V1</a></li> 18649 </ul> 18650 </td> 18651 18652 </tr> 18653 18654 <tr class="entries_header"> 18655 <th class="th_details" colspan="5">HAL Implementation Details</th> 18656 </tr> 18657 <tr class="entry_cont"> 18658 <td class="entry_details" colspan="5"> 18659 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 18660The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least 18661100ms.<wbr/></p> 18662 </td> 18663 </tr> 18664 18665 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18666 <!-- end of entry --> 18667 18668 18669 <tr class="entry" id="static_android.sensor.info.maxFrameDuration"> 18670 <td class="entry_name 18671 " rowspan="5"> 18672 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration 18673 </td> 18674 <td class="entry_type"> 18675 <span class="entry_type_name">int64</span> 18676 18677 <span class="entry_type_visibility"> [public]</span> 18678 18679 18680 <span class="entry_type_hwlevel">[full] </span> 18681 18682 18683 18684 18685 </td> <!-- entry_type --> 18686 18687 <td class="entry_description"> 18688 <p>The maximum possible frame duration (minimum frame rate) for 18689<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p> 18690 </td> 18691 18692 <td class="entry_units"> 18693 Nanoseconds 18694 </td> 18695 18696 <td class="entry_range"> 18697 <p>For FULL capability devices 18698(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p> 18699 </td> 18700 18701 <td class="entry_tags"> 18702 <ul class="entry_tags"> 18703 <li><a href="#tag_V1">V1</a></li> 18704 </ul> 18705 </td> 18706 18707 </tr> 18708 <tr class="entries_header"> 18709 <th class="th_details" colspan="5">Details</th> 18710 </tr> 18711 <tr class="entry_cont"> 18712 <td class="entry_details" colspan="5"> 18713 <p>Attempting to use frame durations beyond the maximum will result in the frame 18714duration being clipped to the maximum.<wbr/> See that control for a full definition of frame 18715durations.<wbr/></p> 18716<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> 18717for the minimum frame duration values.<wbr/></p> 18718 </td> 18719 </tr> 18720 18721 <tr class="entries_header"> 18722 <th class="th_details" colspan="5">HAL Implementation Details</th> 18723 </tr> 18724 <tr class="entry_cont"> 18725 <td class="entry_details" colspan="5"> 18726 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 18727The maximum of the range SHOULD be at least 187281 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p> 18729<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or 18730equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max 18731value (since exposure time overrides frame duration).<wbr/></p> 18732<p>Available minimum frame durations for JPEG must be no greater 18733than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED 18734minimum frame durations (for that respective size).<wbr/></p> 18735<p>Since JPEG processing is considered offline and can take longer than 18736a single uncompressed capture,<wbr/> refer to 18737<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> 18738for details about encoding this scenario.<wbr/></p> 18739 </td> 18740 </tr> 18741 18742 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18743 <!-- end of entry --> 18744 18745 18746 <tr class="entry" id="static_android.sensor.info.physicalSize"> 18747 <td class="entry_name 18748 " rowspan="5"> 18749 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size 18750 </td> 18751 <td class="entry_type"> 18752 <span class="entry_type_name">float</span> 18753 <span class="entry_type_container">x</span> 18754 18755 <span class="entry_type_array"> 18756 2 18757 </span> 18758 <span class="entry_type_visibility"> [public as sizeF]</span> 18759 18760 18761 <span class="entry_type_hwlevel">[legacy] </span> 18762 18763 18764 <div class="entry_type_notes">width x height</div> 18765 18766 18767 </td> <!-- entry_type --> 18768 18769 <td class="entry_description"> 18770 <p>The physical dimensions of the full pixel 18771array.<wbr/></p> 18772 </td> 18773 18774 <td class="entry_units"> 18775 Millimeters 18776 </td> 18777 18778 <td class="entry_range"> 18779 </td> 18780 18781 <td class="entry_tags"> 18782 <ul class="entry_tags"> 18783 <li><a href="#tag_V1">V1</a></li> 18784 <li><a href="#tag_BC">BC</a></li> 18785 </ul> 18786 </td> 18787 18788 </tr> 18789 <tr class="entries_header"> 18790 <th class="th_details" colspan="5">Details</th> 18791 </tr> 18792 <tr class="entry_cont"> 18793 <td class="entry_details" colspan="5"> 18794 <p>This is the physical size of the sensor pixel 18795array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 18796 </td> 18797 </tr> 18798 18799 <tr class="entries_header"> 18800 <th class="th_details" colspan="5">HAL Implementation Details</th> 18801 </tr> 18802 <tr class="entry_cont"> 18803 <td class="entry_details" colspan="5"> 18804 <p>Needed for FOV calculation for old API</p> 18805 </td> 18806 </tr> 18807 18808 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18809 <!-- end of entry --> 18810 18811 18812 <tr class="entry" id="static_android.sensor.info.pixelArraySize"> 18813 <td class="entry_name 18814 " rowspan="3"> 18815 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size 18816 </td> 18817 <td class="entry_type"> 18818 <span class="entry_type_name">int32</span> 18819 <span class="entry_type_container">x</span> 18820 18821 <span class="entry_type_array"> 18822 2 18823 </span> 18824 <span class="entry_type_visibility"> [public as size]</span> 18825 18826 18827 <span class="entry_type_hwlevel">[legacy] </span> 18828 18829 18830 18831 18832 </td> <!-- entry_type --> 18833 18834 <td class="entry_description"> 18835 <p>Dimensions of the full pixel array,<wbr/> possibly 18836including black calibration pixels.<wbr/></p> 18837 </td> 18838 18839 <td class="entry_units"> 18840 Pixels 18841 </td> 18842 18843 <td class="entry_range"> 18844 </td> 18845 18846 <td class="entry_tags"> 18847 <ul class="entry_tags"> 18848 <li><a href="#tag_RAW">RAW</a></li> 18849 <li><a href="#tag_BC">BC</a></li> 18850 </ul> 18851 </td> 18852 18853 </tr> 18854 <tr class="entries_header"> 18855 <th class="th_details" colspan="5">Details</th> 18856 </tr> 18857 <tr class="entry_cont"> 18858 <td class="entry_details" colspan="5"> 18859 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers 18860<a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a> area.<wbr/> This represents the full pixel dimensions of 18861the raw buffers produced by this sensor.<wbr/></p> 18862<p>If a camera device supports raw sensor formats,<wbr/> either this or 18863<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> is the maximum dimensions for the raw 18864output formats listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> (this depends on 18865whether or not the image sensor returns buffers containing pixels that are not 18866part of the active array region for blacklevel calibration or other purposes).<wbr/></p> 18867<p>Some parts of the full pixel array may not receive light from the scene,<wbr/> 18868or be otherwise inactive.<wbr/> The <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> key 18869defines the rectangle of active pixels that will be included in processed image 18870formats.<wbr/></p> 18871 </td> 18872 </tr> 18873 18874 18875 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18876 <!-- end of entry --> 18877 18878 18879 <tr class="entry" id="static_android.sensor.info.whiteLevel"> 18880 <td class="entry_name 18881 " rowspan="5"> 18882 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level 18883 </td> 18884 <td class="entry_type"> 18885 <span class="entry_type_name">int32</span> 18886 18887 <span class="entry_type_visibility"> [public]</span> 18888 18889 18890 18891 18892 18893 18894 </td> <!-- entry_type --> 18895 18896 <td class="entry_description"> 18897 <p>Maximum raw value output by sensor.<wbr/></p> 18898 </td> 18899 18900 <td class="entry_units"> 18901 </td> 18902 18903 <td class="entry_range"> 18904 <p>> 255 (8-bit output)</p> 18905 </td> 18906 18907 <td class="entry_tags"> 18908 <ul class="entry_tags"> 18909 <li><a href="#tag_RAW">RAW</a></li> 18910 </ul> 18911 </td> 18912 18913 </tr> 18914 <tr class="entries_header"> 18915 <th class="th_details" colspan="5">Details</th> 18916 </tr> 18917 <tr class="entry_cont"> 18918 <td class="entry_details" colspan="5"> 18919 <p>This specifies the fully-saturated encoding level for the raw 18920sample values from the sensor.<wbr/> This is typically caused by the 18921sensor becoming highly non-linear or clipping.<wbr/> The minimum for 18922each channel is specified by the offset in the 18923<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p> 18924<p>The white level is typically determined either by sensor bit depth 18925(8-14 bits is expected),<wbr/> or by the point where the sensor response 18926becomes too non-linear to be useful.<wbr/> The default value for this is 18927maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p> 18928 </td> 18929 </tr> 18930 18931 <tr class="entries_header"> 18932 <th class="th_details" colspan="5">HAL Implementation Details</th> 18933 </tr> 18934 <tr class="entry_cont"> 18935 <td class="entry_details" colspan="5"> 18936 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 18937so the value for linear sensors should not be significantly lower 18938than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 18939 </td> 18940 </tr> 18941 18942 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18943 <!-- end of entry --> 18944 18945 18946 <tr class="entry" id="static_android.sensor.info.timestampSource"> 18947 <td class="entry_name 18948 " rowspan="3"> 18949 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source 18950 </td> 18951 <td class="entry_type"> 18952 <span class="entry_type_name entry_type_name_enum">byte</span> 18953 18954 <span class="entry_type_visibility"> [public]</span> 18955 18956 18957 <span class="entry_type_hwlevel">[legacy] </span> 18958 18959 18960 18961 <ul class="entry_type_enum"> 18962 <li> 18963 <span class="entry_type_enum_name">UNKNOWN</span> 18964 <span class="entry_type_enum_notes"><p>Timestamps from <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> are in nanoseconds and monotonic,<wbr/> 18965but can not be compared to timestamps from other subsystems 18966(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different 18967camera devices in the same system.<wbr/> Timestamps between streams and results for 18968a single camera instance are comparable,<wbr/> and the timestamps for all buffers 18969and the result metadata generated by a single capture are identical.<wbr/></p></span> 18970 </li> 18971 <li> 18972 <span class="entry_type_enum_name">REALTIME</span> 18973 <span class="entry_type_enum_notes"><p>Timestamps from <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> are in the same timebase as 18974<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/> 18975and they can be compared to other timestamps using that base.<wbr/></p></span> 18976 </li> 18977 </ul> 18978 18979 </td> <!-- entry_type --> 18980 18981 <td class="entry_description"> 18982 <p>The time base source for sensor capture start timestamps.<wbr/></p> 18983 </td> 18984 18985 <td class="entry_units"> 18986 </td> 18987 18988 <td class="entry_range"> 18989 </td> 18990 18991 <td class="entry_tags"> 18992 <ul class="entry_tags"> 18993 <li><a href="#tag_V1">V1</a></li> 18994 </ul> 18995 </td> 18996 18997 </tr> 18998 <tr class="entries_header"> 18999 <th class="th_details" colspan="5">Details</th> 19000 </tr> 19001 <tr class="entry_cont"> 19002 <td class="entry_details" colspan="5"> 19003 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but 19004may not based on a time source that can be compared to other system time sources.<wbr/></p> 19005<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they 19006can be compared against other system time sources/<wbr/>timestamps.<wbr/></p> 19007 </td> 19008 </tr> 19009 19010 19011 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19012 <!-- end of entry --> 19013 19014 19015 <tr class="entry" id="static_android.sensor.info.lensShadingApplied"> 19016 <td class="entry_name 19017 " rowspan="3"> 19018 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied 19019 </td> 19020 <td class="entry_type"> 19021 <span class="entry_type_name entry_type_name_enum">byte</span> 19022 19023 <span class="entry_type_visibility"> [public as boolean]</span> 19024 19025 19026 19027 19028 19029 <ul class="entry_type_enum"> 19030 <li> 19031 <span class="entry_type_enum_name">FALSE</span> 19032 </li> 19033 <li> 19034 <span class="entry_type_enum_name">TRUE</span> 19035 </li> 19036 </ul> 19037 19038 </td> <!-- entry_type --> 19039 19040 <td class="entry_description"> 19041 <p>Whether the RAW images output from this camera device are subject to 19042lens shading correction.<wbr/></p> 19043 </td> 19044 19045 <td class="entry_units"> 19046 </td> 19047 19048 <td class="entry_range"> 19049 </td> 19050 19051 <td class="entry_tags"> 19052 </td> 19053 19054 </tr> 19055 <tr class="entries_header"> 19056 <th class="th_details" colspan="5">Details</th> 19057 </tr> 19058 <tr class="entry_cont"> 19059 <td class="entry_details" colspan="5"> 19060 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will 19061have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will 19062not be adjusted for lens shading correction.<wbr/> 19063See <a href="#static_android.request.maxNumOutputRaw">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw</a> for a list of RAW image formats.<wbr/></p> 19064<p>This key will be <code>null</code> for all devices do not report this information.<wbr/> 19065Devices with RAW capability will always report this information in this key.<wbr/></p> 19066 </td> 19067 </tr> 19068 19069 19070 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19071 <!-- end of entry --> 19072 19073 19074 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize"> 19075 <td class="entry_name 19076 " rowspan="5"> 19077 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 19078 </td> 19079 <td class="entry_type"> 19080 <span class="entry_type_name">int32</span> 19081 <span class="entry_type_container">x</span> 19082 19083 <span class="entry_type_array"> 19084 4 19085 </span> 19086 <span class="entry_type_visibility"> [public as rectangle]</span> 19087 19088 19089 <span class="entry_type_hwlevel">[legacy] </span> 19090 19091 19092 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 19093 19094 19095 </td> <!-- entry_type --> 19096 19097 <td class="entry_description"> 19098 <p>The area of the image sensor which corresponds to active pixels prior to the 19099application of any geometric distortion correction.<wbr/></p> 19100 </td> 19101 19102 <td class="entry_units"> 19103 Pixel coordinates on the image sensor 19104 </td> 19105 19106 <td class="entry_range"> 19107 </td> 19108 19109 <td class="entry_tags"> 19110 <ul class="entry_tags"> 19111 <li><a href="#tag_RAW">RAW</a></li> 19112 </ul> 19113 </td> 19114 19115 </tr> 19116 <tr class="entries_header"> 19117 <th class="th_details" colspan="5">Details</th> 19118 </tr> 19119 <tr class="entry_cont"> 19120 <td class="entry_details" colspan="5"> 19121 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 19122the region that actually receives light from the scene) before any geometric correction 19123has been applied,<wbr/> and should be treated as the active region rectangle for any of the 19124raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading 19125correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as 19126the origin,<wbr/> (0,<wbr/>0).<wbr/></p> 19127<p>The size of this region determines the maximum field of view and the maximum number of 19128pixels that an image from this sensor can contain,<wbr/> prior to the application of 19129geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a 19130post-distortion-corrected image is given by the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> 19131field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image 19132can be calculated by applying the geometric distortion correction fields to this 19133rectangle,<wbr/> and cropping to the rectangle given in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19134<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the 19135dimensions in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> given the position of a pixel,<wbr/> 19136(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in 19137<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p> 19138<ol> 19139<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in 19140<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> otherwise this pixel is considered 19141to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li> 19142<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/> 19143(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw 19144buffers is defined relative to the top,<wbr/> left of the 19145<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> rectangle.<wbr/></li> 19146<li>If the resulting corrected pixel coordinate is within the region given in 19147<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> then the position of this pixel in the 19148processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/> 19149when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li> 19150</ol> 19151<p>Thus,<wbr/> for pixel x',<wbr/>y' = (25,<wbr/> 25) on a sensor where <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> 19152is (100,<wbr/>100),<wbr/> <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> is (10,<wbr/> 10,<wbr/> 100,<wbr/> 100),<wbr/> 19153<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> is (20,<wbr/> 20,<wbr/> 80,<wbr/> 80),<wbr/> and the geometric distortion 19154correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in 19155pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer 19156with dimensions given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>,<wbr/> and would be (5,<wbr/> 5) 19157relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in 19158<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19159<p>The currently supported fields that correct for geometric distortion are:</p> 19160<ol> 19161<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li> 19162</ol> 19163<p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same 19164as the post-distortion-corrected rectangle given in 19165<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19166<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 19167the full pixel array,<wbr/> and the size of the full pixel array is given by 19168<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19169<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the 19170full array may include black calibration pixels or other inactive regions.<wbr/></p> 19171 </td> 19172 </tr> 19173 19174 <tr class="entries_header"> 19175 <th class="th_details" colspan="5">HAL Implementation Details</th> 19176 </tr> 19177 <tr class="entry_cont"> 19178 <td class="entry_details" colspan="5"> 19179 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 19180>= <code>(0,<wbr/>0)</code>.<wbr/> 19181The <code>(width,<wbr/> height)</code> must be <= <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p> 19182<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is 19183the same as the post-correction active array region given in 19184<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19185 </td> 19186 </tr> 19187 19188 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19189 <!-- end of entry --> 19190 19191 19192 19193 19194 19195 <tr class="entry" id="static_android.sensor.referenceIlluminant1"> 19196 <td class="entry_name 19197 " rowspan="5"> 19198 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1 19199 </td> 19200 <td class="entry_type"> 19201 <span class="entry_type_name entry_type_name_enum">byte</span> 19202 19203 <span class="entry_type_visibility"> [public]</span> 19204 19205 19206 19207 19208 19209 <ul class="entry_type_enum"> 19210 <li> 19211 <span class="entry_type_enum_name">DAYLIGHT</span> 19212 <span class="entry_type_enum_value">1</span> 19213 </li> 19214 <li> 19215 <span class="entry_type_enum_name">FLUORESCENT</span> 19216 <span class="entry_type_enum_value">2</span> 19217 </li> 19218 <li> 19219 <span class="entry_type_enum_name">TUNGSTEN</span> 19220 <span class="entry_type_enum_value">3</span> 19221 <span class="entry_type_enum_notes"><p>Incandescent light</p></span> 19222 </li> 19223 <li> 19224 <span class="entry_type_enum_name">FLASH</span> 19225 <span class="entry_type_enum_value">4</span> 19226 </li> 19227 <li> 19228 <span class="entry_type_enum_name">FINE_WEATHER</span> 19229 <span class="entry_type_enum_value">9</span> 19230 </li> 19231 <li> 19232 <span class="entry_type_enum_name">CLOUDY_WEATHER</span> 19233 <span class="entry_type_enum_value">10</span> 19234 </li> 19235 <li> 19236 <span class="entry_type_enum_name">SHADE</span> 19237 <span class="entry_type_enum_value">11</span> 19238 </li> 19239 <li> 19240 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span> 19241 <span class="entry_type_enum_value">12</span> 19242 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span> 19243 </li> 19244 <li> 19245 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span> 19246 <span class="entry_type_enum_value">13</span> 19247 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span> 19248 </li> 19249 <li> 19250 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span> 19251 <span class="entry_type_enum_value">14</span> 19252 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span> 19253 </li> 19254 <li> 19255 <span class="entry_type_enum_name">WHITE_FLUORESCENT</span> 19256 <span class="entry_type_enum_value">15</span> 19257 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span> 19258 </li> 19259 <li> 19260 <span class="entry_type_enum_name">STANDARD_A</span> 19261 <span class="entry_type_enum_value">17</span> 19262 </li> 19263 <li> 19264 <span class="entry_type_enum_name">STANDARD_B</span> 19265 <span class="entry_type_enum_value">18</span> 19266 </li> 19267 <li> 19268 <span class="entry_type_enum_name">STANDARD_C</span> 19269 <span class="entry_type_enum_value">19</span> 19270 </li> 19271 <li> 19272 <span class="entry_type_enum_name">D55</span> 19273 <span class="entry_type_enum_value">20</span> 19274 </li> 19275 <li> 19276 <span class="entry_type_enum_name">D65</span> 19277 <span class="entry_type_enum_value">21</span> 19278 </li> 19279 <li> 19280 <span class="entry_type_enum_name">D75</span> 19281 <span class="entry_type_enum_value">22</span> 19282 </li> 19283 <li> 19284 <span class="entry_type_enum_name">D50</span> 19285 <span class="entry_type_enum_value">23</span> 19286 </li> 19287 <li> 19288 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span> 19289 <span class="entry_type_enum_value">24</span> 19290 </li> 19291 </ul> 19292 19293 </td> <!-- entry_type --> 19294 19295 <td class="entry_description"> 19296 <p>The standard reference illuminant used as the scene light source when 19297calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 19298<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 19299<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p> 19300 </td> 19301 19302 <td class="entry_units"> 19303 </td> 19304 19305 <td class="entry_range"> 19306 </td> 19307 19308 <td class="entry_tags"> 19309 <ul class="entry_tags"> 19310 <li><a href="#tag_RAW">RAW</a></li> 19311 </ul> 19312 </td> 19313 19314 </tr> 19315 <tr class="entries_header"> 19316 <th class="th_details" colspan="5">Details</th> 19317 </tr> 19318 <tr class="entry_cont"> 19319 <td class="entry_details" colspan="5"> 19320 <p>The values in this key correspond to the values defined for the 19321EXIF LightSource tag.<wbr/> These illuminants are standard light sources 19322that are often used calibrating camera devices.<wbr/></p> 19323<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 19324<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 19325<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p> 19326<p>Some devices may choose to provide a second set of calibration 19327information for improved quality,<wbr/> including 19328<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p> 19329 </td> 19330 </tr> 19331 19332 <tr class="entries_header"> 19333 <th class="th_details" colspan="5">HAL Implementation Details</th> 19334 </tr> 19335 <tr class="entry_cont"> 19336 <td class="entry_details" colspan="5"> 19337 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 19338and corresponding matrices must be present to support the RAW capability 19339and DNG output.<wbr/></p> 19340<p>When producing raw images with a color profile that has only been 19341calibrated against a single light source,<wbr/> it is valid to omit 19342<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the 19343<a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> 19344and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 19345<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be 19346chosen so that it is representative of typical scene lighting.<wbr/> In 19347general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p> 19348<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and 19349<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be 19350chosen to represent the typical range of scene lighting conditions.<wbr/> 19351In general,<wbr/> low color temperature illuminant such as Standard-A will 19352be chosen for the first reference illuminant and a higher color 19353temperature illuminant such as D65 will be chosen for the second 19354reference illuminant.<wbr/></p> 19355 </td> 19356 </tr> 19357 19358 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19359 <!-- end of entry --> 19360 19361 19362 <tr class="entry" id="static_android.sensor.referenceIlluminant2"> 19363 <td class="entry_name 19364 " rowspan="3"> 19365 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2 19366 </td> 19367 <td class="entry_type"> 19368 <span class="entry_type_name">byte</span> 19369 19370 <span class="entry_type_visibility"> [public]</span> 19371 19372 19373 19374 19375 19376 19377 </td> <!-- entry_type --> 19378 19379 <td class="entry_description"> 19380 <p>The standard reference illuminant used as the scene light source when 19381calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 19382<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 19383<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 19384 </td> 19385 19386 <td class="entry_units"> 19387 </td> 19388 19389 <td class="entry_range"> 19390 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p> 19391 </td> 19392 19393 <td class="entry_tags"> 19394 <ul class="entry_tags"> 19395 <li><a href="#tag_RAW">RAW</a></li> 19396 </ul> 19397 </td> 19398 19399 </tr> 19400 <tr class="entries_header"> 19401 <th class="th_details" colspan="5">Details</th> 19402 </tr> 19403 <tr class="entry_cont"> 19404 <td class="entry_details" colspan="5"> 19405 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p> 19406<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 19407<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 19408<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p> 19409 </td> 19410 </tr> 19411 19412 19413 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19414 <!-- end of entry --> 19415 19416 19417 <tr class="entry" id="static_android.sensor.calibrationTransform1"> 19418 <td class="entry_name 19419 " rowspan="3"> 19420 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1 19421 </td> 19422 <td class="entry_type"> 19423 <span class="entry_type_name">rational</span> 19424 <span class="entry_type_container">x</span> 19425 19426 <span class="entry_type_array"> 19427 3 x 3 19428 </span> 19429 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19430 19431 19432 19433 19434 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19435 19436 19437 </td> <!-- entry_type --> 19438 19439 <td class="entry_description"> 19440 <p>A per-device calibration transform matrix that maps from the 19441reference sensor colorspace to the actual device sensor colorspace.<wbr/></p> 19442 </td> 19443 19444 <td class="entry_units"> 19445 </td> 19446 19447 <td class="entry_range"> 19448 </td> 19449 19450 <td class="entry_tags"> 19451 <ul class="entry_tags"> 19452 <li><a href="#tag_RAW">RAW</a></li> 19453 </ul> 19454 </td> 19455 19456 </tr> 19457 <tr class="entries_header"> 19458 <th class="th_details" colspan="5">Details</th> 19459 </tr> 19460 <tr class="entry_cont"> 19461 <td class="entry_details" colspan="5"> 19462 <p>This matrix is used to correct for per-device variations in the 19463sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 19464<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19465contains a per-device calibration transform that maps colors 19466from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 19467colorspace) into this camera device's native sensor color 19468space under the first reference illuminant 19469(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 19470 </td> 19471 </tr> 19472 19473 19474 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19475 <!-- end of entry --> 19476 19477 19478 <tr class="entry" id="static_android.sensor.calibrationTransform2"> 19479 <td class="entry_name 19480 " rowspan="3"> 19481 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2 19482 </td> 19483 <td class="entry_type"> 19484 <span class="entry_type_name">rational</span> 19485 <span class="entry_type_container">x</span> 19486 19487 <span class="entry_type_array"> 19488 3 x 3 19489 </span> 19490 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19491 19492 19493 19494 19495 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19496 19497 19498 </td> <!-- entry_type --> 19499 19500 <td class="entry_description"> 19501 <p>A per-device calibration transform matrix that maps from the 19502reference sensor colorspace to the actual device sensor colorspace 19503(this is the colorspace of the raw buffer data).<wbr/></p> 19504 </td> 19505 19506 <td class="entry_units"> 19507 </td> 19508 19509 <td class="entry_range"> 19510 </td> 19511 19512 <td class="entry_tags"> 19513 <ul class="entry_tags"> 19514 <li><a href="#tag_RAW">RAW</a></li> 19515 </ul> 19516 </td> 19517 19518 </tr> 19519 <tr class="entries_header"> 19520 <th class="th_details" colspan="5">Details</th> 19521 </tr> 19522 <tr class="entry_cont"> 19523 <td class="entry_details" colspan="5"> 19524 <p>This matrix is used to correct for per-device variations in the 19525sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 19526<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19527contains a per-device calibration transform that maps colors 19528from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 19529colorspace) into this camera device's native sensor color 19530space under the second reference illuminant 19531(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 19532<p>This matrix will only be present if the second reference 19533illuminant is present.<wbr/></p> 19534 </td> 19535 </tr> 19536 19537 19538 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19539 <!-- end of entry --> 19540 19541 19542 <tr class="entry" id="static_android.sensor.colorTransform1"> 19543 <td class="entry_name 19544 " rowspan="3"> 19545 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1 19546 </td> 19547 <td class="entry_type"> 19548 <span class="entry_type_name">rational</span> 19549 <span class="entry_type_container">x</span> 19550 19551 <span class="entry_type_array"> 19552 3 x 3 19553 </span> 19554 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19555 19556 19557 19558 19559 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19560 19561 19562 </td> <!-- entry_type --> 19563 19564 <td class="entry_description"> 19565 <p>A matrix that transforms color values from CIE XYZ color space to 19566reference sensor color space.<wbr/></p> 19567 </td> 19568 19569 <td class="entry_units"> 19570 </td> 19571 19572 <td class="entry_range"> 19573 </td> 19574 19575 <td class="entry_tags"> 19576 <ul class="entry_tags"> 19577 <li><a href="#tag_RAW">RAW</a></li> 19578 </ul> 19579 </td> 19580 19581 </tr> 19582 <tr class="entries_header"> 19583 <th class="th_details" colspan="5">Details</th> 19584 </tr> 19585 <tr class="entry_cont"> 19586 <td class="entry_details" colspan="5"> 19587 <p>This matrix is used to convert from the standard CIE XYZ color 19588space to the reference sensor colorspace,<wbr/> and is used when processing 19589raw buffer data.<wbr/></p> 19590<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19591contains a color transform matrix that maps colors from the CIE 19592XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 19593"golden module" colorspace) under the first reference illuminant 19594(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 19595<p>The white points chosen in both the reference sensor color space 19596and the CIE XYZ colorspace when calculating this transform will 19597match the standard white point for the first reference illuminant 19598(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 19599 </td> 19600 </tr> 19601 19602 19603 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19604 <!-- end of entry --> 19605 19606 19607 <tr class="entry" id="static_android.sensor.colorTransform2"> 19608 <td class="entry_name 19609 " rowspan="3"> 19610 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2 19611 </td> 19612 <td class="entry_type"> 19613 <span class="entry_type_name">rational</span> 19614 <span class="entry_type_container">x</span> 19615 19616 <span class="entry_type_array"> 19617 3 x 3 19618 </span> 19619 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19620 19621 19622 19623 19624 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19625 19626 19627 </td> <!-- entry_type --> 19628 19629 <td class="entry_description"> 19630 <p>A matrix that transforms color values from CIE XYZ color space to 19631reference sensor color space.<wbr/></p> 19632 </td> 19633 19634 <td class="entry_units"> 19635 </td> 19636 19637 <td class="entry_range"> 19638 </td> 19639 19640 <td class="entry_tags"> 19641 <ul class="entry_tags"> 19642 <li><a href="#tag_RAW">RAW</a></li> 19643 </ul> 19644 </td> 19645 19646 </tr> 19647 <tr class="entries_header"> 19648 <th class="th_details" colspan="5">Details</th> 19649 </tr> 19650 <tr class="entry_cont"> 19651 <td class="entry_details" colspan="5"> 19652 <p>This matrix is used to convert from the standard CIE XYZ color 19653space to the reference sensor colorspace,<wbr/> and is used when processing 19654raw buffer data.<wbr/></p> 19655<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19656contains a color transform matrix that maps colors from the CIE 19657XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 19658"golden module" colorspace) under the second reference illuminant 19659(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 19660<p>The white points chosen in both the reference sensor color space 19661and the CIE XYZ colorspace when calculating this transform will 19662match the standard white point for the second reference illuminant 19663(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 19664<p>This matrix will only be present if the second reference 19665illuminant is present.<wbr/></p> 19666 </td> 19667 </tr> 19668 19669 19670 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19671 <!-- end of entry --> 19672 19673 19674 <tr class="entry" id="static_android.sensor.forwardMatrix1"> 19675 <td class="entry_name 19676 " rowspan="3"> 19677 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1 19678 </td> 19679 <td class="entry_type"> 19680 <span class="entry_type_name">rational</span> 19681 <span class="entry_type_container">x</span> 19682 19683 <span class="entry_type_array"> 19684 3 x 3 19685 </span> 19686 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19687 19688 19689 19690 19691 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19692 19693 19694 </td> <!-- entry_type --> 19695 19696 <td class="entry_description"> 19697 <p>A matrix that transforms white balanced camera colors from the reference 19698sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 19699 </td> 19700 19701 <td class="entry_units"> 19702 </td> 19703 19704 <td class="entry_range"> 19705 </td> 19706 19707 <td class="entry_tags"> 19708 <ul class="entry_tags"> 19709 <li><a href="#tag_RAW">RAW</a></li> 19710 </ul> 19711 </td> 19712 19713 </tr> 19714 <tr class="entries_header"> 19715 <th class="th_details" colspan="5">Details</th> 19716 </tr> 19717 <tr class="entry_cont"> 19718 <td class="entry_details" colspan="5"> 19719 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 19720is used when processing raw buffer data.<wbr/></p> 19721<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 19722a color transform matrix that maps white balanced colors from the 19723reference sensor color space to the CIE XYZ color space with a D50 white 19724point.<wbr/></p> 19725<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 19726this matrix is chosen so that the standard white point for this reference 19727illuminant in the reference sensor colorspace is mapped to D50 in the 19728CIE XYZ colorspace.<wbr/></p> 19729 </td> 19730 </tr> 19731 19732 19733 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19734 <!-- end of entry --> 19735 19736 19737 <tr class="entry" id="static_android.sensor.forwardMatrix2"> 19738 <td class="entry_name 19739 " rowspan="3"> 19740 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2 19741 </td> 19742 <td class="entry_type"> 19743 <span class="entry_type_name">rational</span> 19744 <span class="entry_type_container">x</span> 19745 19746 <span class="entry_type_array"> 19747 3 x 3 19748 </span> 19749 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19750 19751 19752 19753 19754 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19755 19756 19757 </td> <!-- entry_type --> 19758 19759 <td class="entry_description"> 19760 <p>A matrix that transforms white balanced camera colors from the reference 19761sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 19762 </td> 19763 19764 <td class="entry_units"> 19765 </td> 19766 19767 <td class="entry_range"> 19768 </td> 19769 19770 <td class="entry_tags"> 19771 <ul class="entry_tags"> 19772 <li><a href="#tag_RAW">RAW</a></li> 19773 </ul> 19774 </td> 19775 19776 </tr> 19777 <tr class="entries_header"> 19778 <th class="th_details" colspan="5">Details</th> 19779 </tr> 19780 <tr class="entry_cont"> 19781 <td class="entry_details" colspan="5"> 19782 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 19783is used when processing raw buffer data.<wbr/></p> 19784<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 19785a color transform matrix that maps white balanced colors from the 19786reference sensor color space to the CIE XYZ color space with a D50 white 19787point.<wbr/></p> 19788<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>) 19789this matrix is chosen so that the standard white point for this reference 19790illuminant in the reference sensor colorspace is mapped to D50 in the 19791CIE XYZ colorspace.<wbr/></p> 19792<p>This matrix will only be present if the second reference 19793illuminant is present.<wbr/></p> 19794 </td> 19795 </tr> 19796 19797 19798 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19799 <!-- end of entry --> 19800 19801 19802 <tr class="entry" id="static_android.sensor.baseGainFactor"> 19803 <td class="entry_name 19804 " rowspan="1"> 19805 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor 19806 </td> 19807 <td class="entry_type"> 19808 <span class="entry_type_name">rational</span> 19809 19810 <span class="entry_type_visibility"> [system]</span> 19811 19812 19813 19814 19815 19816 19817 </td> <!-- entry_type --> 19818 19819 <td class="entry_description"> 19820 <p>Gain factor from electrons to raw units when 19821ISO=100</p> 19822 </td> 19823 19824 <td class="entry_units"> 19825 </td> 19826 19827 <td class="entry_range"> 19828 </td> 19829 19830 <td class="entry_tags"> 19831 <ul class="entry_tags"> 19832 <li><a href="#tag_FUTURE">FUTURE</a></li> 19833 </ul> 19834 </td> 19835 19836 </tr> 19837 19838 19839 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19840 <!-- end of entry --> 19841 19842 19843 <tr class="entry" id="static_android.sensor.blackLevelPattern"> 19844 <td class="entry_name 19845 " rowspan="5"> 19846 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern 19847 </td> 19848 <td class="entry_type"> 19849 <span class="entry_type_name">int32</span> 19850 <span class="entry_type_container">x</span> 19851 19852 <span class="entry_type_array"> 19853 4 19854 </span> 19855 <span class="entry_type_visibility"> [public as blackLevelPattern]</span> 19856 19857 19858 19859 19860 <div class="entry_type_notes">2x2 raw count block</div> 19861 19862 19863 </td> <!-- entry_type --> 19864 19865 <td class="entry_description"> 19866 <p>A fixed black level offset for each of the color filter arrangement 19867(CFA) mosaic channels.<wbr/></p> 19868 </td> 19869 19870 <td class="entry_units"> 19871 </td> 19872 19873 <td class="entry_range"> 19874 <p>>= 0 for each.<wbr/></p> 19875 </td> 19876 19877 <td class="entry_tags"> 19878 <ul class="entry_tags"> 19879 <li><a href="#tag_RAW">RAW</a></li> 19880 </ul> 19881 </td> 19882 19883 </tr> 19884 <tr class="entries_header"> 19885 <th class="th_details" colspan="5">Details</th> 19886 </tr> 19887 <tr class="entry_cont"> 19888 <td class="entry_details" colspan="5"> 19889 <p>This key specifies the zero light value for each of the CFA mosaic 19890channels in the camera sensor.<wbr/> The maximal value output by the 19891sensor is represented by the value in <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>.<wbr/></p> 19892<p>The values are given in the same order as channels listed for the CFA 19893layout key (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>),<wbr/> i.<wbr/>e.<wbr/> the 19894nth value given corresponds to the black level offset for the nth 19895color channel listed in the CFA.<wbr/></p> 19896 </td> 19897 </tr> 19898 19899 <tr class="entries_header"> 19900 <th class="th_details" colspan="5">HAL Implementation Details</th> 19901 </tr> 19902 <tr class="entry_cont"> 19903 <td class="entry_details" colspan="5"> 19904 <p>The values are given in row-column scan order,<wbr/> with the first value 19905corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 19906 </td> 19907 </tr> 19908 19909 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19910 <!-- end of entry --> 19911 19912 19913 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity"> 19914 <td class="entry_name 19915 " rowspan="3"> 19916 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity 19917 </td> 19918 <td class="entry_type"> 19919 <span class="entry_type_name">int32</span> 19920 19921 <span class="entry_type_visibility"> [public]</span> 19922 19923 19924 <span class="entry_type_hwlevel">[full] </span> 19925 19926 19927 19928 19929 </td> <!-- entry_type --> 19930 19931 <td class="entry_description"> 19932 <p>Maximum sensitivity that is implemented 19933purely through analog gain.<wbr/></p> 19934 </td> 19935 19936 <td class="entry_units"> 19937 </td> 19938 19939 <td class="entry_range"> 19940 </td> 19941 19942 <td class="entry_tags"> 19943 <ul class="entry_tags"> 19944 <li><a href="#tag_V1">V1</a></li> 19945 <li><a href="#tag_FULL">FULL</a></li> 19946 </ul> 19947 </td> 19948 19949 </tr> 19950 <tr class="entries_header"> 19951 <th class="th_details" colspan="5">Details</th> 19952 </tr> 19953 <tr class="entry_cont"> 19954 <td class="entry_details" colspan="5"> 19955 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or 19956equal to this,<wbr/> all applied gain must be analog.<wbr/> For 19957values above this,<wbr/> the gain applied can be a mix of analog and 19958digital.<wbr/></p> 19959 </td> 19960 </tr> 19961 19962 19963 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19964 <!-- end of entry --> 19965 19966 19967 <tr class="entry" id="static_android.sensor.orientation"> 19968 <td class="entry_name 19969 " rowspan="3"> 19970 android.<wbr/>sensor.<wbr/>orientation 19971 </td> 19972 <td class="entry_type"> 19973 <span class="entry_type_name">int32</span> 19974 19975 <span class="entry_type_visibility"> [public]</span> 19976 19977 19978 <span class="entry_type_hwlevel">[legacy] </span> 19979 19980 19981 19982 19983 </td> <!-- entry_type --> 19984 19985 <td class="entry_description"> 19986 <p>Clockwise angle through which the output image needs to be rotated to be 19987upright on the device screen in its native orientation.<wbr/></p> 19988 </td> 19989 19990 <td class="entry_units"> 19991 Degrees of clockwise rotation; always a multiple of 19992 90 19993 </td> 19994 19995 <td class="entry_range"> 19996 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 19997 </td> 19998 19999 <td class="entry_tags"> 20000 <ul class="entry_tags"> 20001 <li><a href="#tag_BC">BC</a></li> 20002 </ul> 20003 </td> 20004 20005 </tr> 20006 <tr class="entries_header"> 20007 <th class="th_details" colspan="5">Details</th> 20008 </tr> 20009 <tr class="entry_cont"> 20010 <td class="entry_details" colspan="5"> 20011 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in 20012the sensor's coordinate system.<wbr/></p> 20013 </td> 20014 </tr> 20015 20016 20017 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20018 <!-- end of entry --> 20019 20020 20021 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions"> 20022 <td class="entry_name 20023 " rowspan="3"> 20024 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions 20025 </td> 20026 <td class="entry_type"> 20027 <span class="entry_type_name">int32</span> 20028 <span class="entry_type_container">x</span> 20029 20030 <span class="entry_type_array"> 20031 3 20032 </span> 20033 <span class="entry_type_visibility"> [system]</span> 20034 20035 20036 20037 20038 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div> 20039 20040 20041 </td> <!-- entry_type --> 20042 20043 <td class="entry_description"> 20044 <p>The number of input samples for each dimension of 20045<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p> 20046 </td> 20047 20048 <td class="entry_units"> 20049 </td> 20050 20051 <td class="entry_range"> 20052 <p>Hue >= 1,<wbr/> 20053Saturation >= 2,<wbr/> 20054Value >= 1</p> 20055 </td> 20056 20057 <td class="entry_tags"> 20058 <ul class="entry_tags"> 20059 <li><a href="#tag_RAW">RAW</a></li> 20060 </ul> 20061 </td> 20062 20063 </tr> 20064 <tr class="entries_header"> 20065 <th class="th_details" colspan="5">Details</th> 20066 </tr> 20067 <tr class="entry_cont"> 20068 <td class="entry_details" colspan="5"> 20069 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value 20070dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the 20071dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th 20072element.<wbr/></p> 20073 </td> 20074 </tr> 20075 20076 20077 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20078 <!-- end of entry --> 20079 20080 20081 <tr class="entry" id="static_android.sensor.availableTestPatternModes"> 20082 <td class="entry_name 20083 " rowspan="5"> 20084 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes 20085 </td> 20086 <td class="entry_type"> 20087 <span class="entry_type_name">int32</span> 20088 <span class="entry_type_container">x</span> 20089 20090 <span class="entry_type_array"> 20091 n 20092 </span> 20093 <span class="entry_type_visibility"> [public]</span> 20094 20095 20096 20097 20098 <div class="entry_type_notes">list of enums</div> 20099 20100 20101 </td> <!-- entry_type --> 20102 20103 <td class="entry_description"> 20104 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> 20105supported by this camera device.<wbr/></p> 20106 </td> 20107 20108 <td class="entry_units"> 20109 </td> 20110 20111 <td class="entry_range"> 20112 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p> 20113 </td> 20114 20115 <td class="entry_tags"> 20116 </td> 20117 20118 </tr> 20119 <tr class="entries_header"> 20120 <th class="th_details" colspan="5">Details</th> 20121 </tr> 20122 <tr class="entry_cont"> 20123 <td class="entry_details" colspan="5"> 20124 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p> 20125 </td> 20126 </tr> 20127 20128 <tr class="entries_header"> 20129 <th class="th_details" colspan="5">HAL Implementation Details</th> 20130 </tr> 20131 <tr class="entry_cont"> 20132 <td class="entry_details" colspan="5"> 20133 <p>All custom modes must be >= CUSTOM1.<wbr/></p> 20134 </td> 20135 </tr> 20136 20137 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20138 <!-- end of entry --> 20139 20140 20141 20142 <!-- end of kind --> 20143 </tbody> 20144 <tr><td colspan="6" class="kind">dynamic</td></tr> 20145 20146 <thead class="entries_header"> 20147 <tr> 20148 <th class="th_name">Property Name</th> 20149 <th class="th_type">Type</th> 20150 <th class="th_description">Description</th> 20151 <th class="th_units">Units</th> 20152 <th class="th_range">Range</th> 20153 <th class="th_tags">Tags</th> 20154 </tr> 20155 </thead> 20156 20157 <tbody> 20158 20159 20160 20161 20162 20163 20164 20165 20166 20167 20168 <tr class="entry" id="dynamic_android.sensor.exposureTime"> 20169 <td class="entry_name 20170 " rowspan="3"> 20171 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 20172 </td> 20173 <td class="entry_type"> 20174 <span class="entry_type_name">int64</span> 20175 20176 <span class="entry_type_visibility"> [public]</span> 20177 20178 20179 <span class="entry_type_hwlevel">[full] </span> 20180 20181 20182 20183 20184 </td> <!-- entry_type --> 20185 20186 <td class="entry_description"> 20187 <p>Duration each pixel is exposed to 20188light.<wbr/></p> 20189 </td> 20190 20191 <td class="entry_units"> 20192 Nanoseconds 20193 </td> 20194 20195 <td class="entry_range"> 20196 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 20197 </td> 20198 20199 <td class="entry_tags"> 20200 <ul class="entry_tags"> 20201 <li><a href="#tag_V1">V1</a></li> 20202 </ul> 20203 </td> 20204 20205 </tr> 20206 <tr class="entries_header"> 20207 <th class="th_details" colspan="5">Details</th> 20208 </tr> 20209 <tr class="entry_cont"> 20210 <td class="entry_details" colspan="5"> 20211 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 20212duration exposed to the nearest possible value (rather than expose longer).<wbr/> 20213The final exposure time used will be available in the output capture result.<wbr/></p> 20214<p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to 20215OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 20216 </td> 20217 </tr> 20218 20219 20220 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20221 <!-- end of entry --> 20222 20223 20224 <tr class="entry" id="dynamic_android.sensor.frameDuration"> 20225 <td class="entry_name 20226 " rowspan="5"> 20227 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 20228 </td> 20229 <td class="entry_type"> 20230 <span class="entry_type_name">int64</span> 20231 20232 <span class="entry_type_visibility"> [public]</span> 20233 20234 20235 <span class="entry_type_hwlevel">[full] </span> 20236 20237 20238 20239 20240 </td> <!-- entry_type --> 20241 20242 <td class="entry_description"> 20243 <p>Duration from start of frame exposure to 20244start of next frame exposure.<wbr/></p> 20245 </td> 20246 20247 <td class="entry_units"> 20248 Nanoseconds 20249 </td> 20250 20251 <td class="entry_range"> 20252 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 20253<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration 20254is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 20255 </td> 20256 20257 <td class="entry_tags"> 20258 <ul class="entry_tags"> 20259 <li><a href="#tag_V1">V1</a></li> 20260 </ul> 20261 </td> 20262 20263 </tr> 20264 <tr class="entries_header"> 20265 <th class="th_details" colspan="5">Details</th> 20266 </tr> 20267 <tr class="entry_cont"> 20268 <td class="entry_details" colspan="5"> 20269 <p>The maximum frame rate that can be supported by a camera subsystem is 20270a function of many factors:</p> 20271<ul> 20272<li>Requested resolutions of output image streams</li> 20273<li>Availability of binning /<wbr/> skipping modes on the imager</li> 20274<li>The bandwidth of the imager interface</li> 20275<li>The bandwidth of the various ISP processing blocks</li> 20276</ul> 20277<p>Since these factors can vary greatly between different ISPs and 20278sensors,<wbr/> the camera abstraction tries to represent the bandwidth 20279restrictions with as simple a model as possible.<wbr/></p> 20280<p>The model presented has the following characteristics:</p> 20281<ul> 20282<li>The image sensor is always configured to output the smallest 20283resolution possible given the application's requested output stream 20284sizes.<wbr/> The smallest resolution is defined as being at least as large 20285as the largest requested output stream size; the camera pipeline must 20286never digitally upsample sensor data when the crop region covers the 20287whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 20288resolutions are configured,<wbr/> the sensor can provide a higher frame 20289rate.<wbr/></li> 20290<li>Since any request may use any or all the currently configured 20291output streams,<wbr/> the sensor and ISP must be configured to support 20292scaling a single capture to all the streams at the same time.<wbr/> This 20293means the camera pipeline must be ready to produce the largest 20294requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 20295frame rate of a given configured stream set is governed only by the 20296largest requested stream resolution.<wbr/></li> 20297<li>Using more than one output stream in a request does not affect the 20298frame duration.<wbr/></li> 20299<li>Certain format-streams may need to do additional background processing 20300before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 20301can run concurrently to the rest of the camera pipeline,<wbr/> but 20302cannot process more than 1 capture at a time.<wbr/></li> 20303</ul> 20304<p>The necessary information for the application,<wbr/> given the model above,<wbr/> 20305is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using 20306<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 20307These are used to determine the maximum frame rate /<wbr/> minimum frame 20308duration that is possible for a given stream configuration.<wbr/></p> 20309<p>Specifically,<wbr/> the application can use the following rules to 20310determine the minimum frame duration it can request from the camera 20311device:</p> 20312<ol> 20313<li>Let the set of currently configured input/<wbr/>output streams 20314be called <code>S</code>.<wbr/></li> 20315<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking 20316it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> 20317(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be 20318called <code>F</code>.<wbr/></li> 20319<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 20320for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 20321used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 20322</ol> 20323<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> 20324using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> 20325determines the steady state frame rate that the application will get 20326if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of 20327request be called <code>Rsimple</code>.<wbr/></p> 20328<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 20329by a single capture of a new request <code>Rstall</code> (which has at least 20330one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 20331same minimum frame duration this will not cause a frame rate loss 20332if all buffers from the previous <code>Rstall</code> have already been 20333delivered.<wbr/></p> 20334<p>For more details about stalling,<wbr/> see 20335<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p> 20336<p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to 20337OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 20338 </td> 20339 </tr> 20340 20341 <tr class="entries_header"> 20342 <th class="th_details" colspan="5">HAL Implementation Details</th> 20343 </tr> 20344 <tr class="entry_cont"> 20345 <td class="entry_details" colspan="5"> 20346 <p>For more details about stalling,<wbr/> see 20347<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 20348 </td> 20349 </tr> 20350 20351 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20352 <!-- end of entry --> 20353 20354 20355 <tr class="entry" id="dynamic_android.sensor.sensitivity"> 20356 <td class="entry_name 20357 " rowspan="5"> 20358 android.<wbr/>sensor.<wbr/>sensitivity 20359 </td> 20360 <td class="entry_type"> 20361 <span class="entry_type_name">int32</span> 20362 20363 <span class="entry_type_visibility"> [public]</span> 20364 20365 20366 <span class="entry_type_hwlevel">[full] </span> 20367 20368 20369 20370 20371 </td> <!-- entry_type --> 20372 20373 <td class="entry_description"> 20374 <p>The amount of gain applied to sensor data 20375before processing.<wbr/></p> 20376 </td> 20377 20378 <td class="entry_units"> 20379 ISO arithmetic units 20380 </td> 20381 20382 <td class="entry_range"> 20383 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 20384 </td> 20385 20386 <td class="entry_tags"> 20387 <ul class="entry_tags"> 20388 <li><a href="#tag_V1">V1</a></li> 20389 </ul> 20390 </td> 20391 20392 </tr> 20393 <tr class="entries_header"> 20394 <th class="th_details" colspan="5">Details</th> 20395 </tr> 20396 <tr class="entry_cont"> 20397 <td class="entry_details" colspan="5"> 20398 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 20399as defined in ISO 12232:2006.<wbr/></p> 20400<p>The sensitivity must be within <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a>,<wbr/> and 20401if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 20402is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 20403<p>If the camera device cannot apply the exact sensitivity 20404requested,<wbr/> it will reduce the gain to the nearest supported 20405value.<wbr/> The final sensitivity used will be available in the 20406output capture result.<wbr/></p> 20407 </td> 20408 </tr> 20409 20410 <tr class="entries_header"> 20411 <th class="th_details" colspan="5">HAL Implementation Details</th> 20412 </tr> 20413 <tr class="entry_cont"> 20414 <td class="entry_details" colspan="5"> 20415 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 20416 </td> 20417 </tr> 20418 20419 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20420 <!-- end of entry --> 20421 20422 20423 <tr class="entry" id="dynamic_android.sensor.timestamp"> 20424 <td class="entry_name 20425 " rowspan="5"> 20426 android.<wbr/>sensor.<wbr/>timestamp 20427 </td> 20428 <td class="entry_type"> 20429 <span class="entry_type_name">int64</span> 20430 20431 <span class="entry_type_visibility"> [public]</span> 20432 20433 20434 <span class="entry_type_hwlevel">[legacy] </span> 20435 20436 20437 20438 20439 </td> <!-- entry_type --> 20440 20441 <td class="entry_description"> 20442 <p>Time at start of exposure of first 20443row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p> 20444 </td> 20445 20446 <td class="entry_units"> 20447 Nanoseconds 20448 </td> 20449 20450 <td class="entry_range"> 20451 <p>> 0</p> 20452 </td> 20453 20454 <td class="entry_tags"> 20455 <ul class="entry_tags"> 20456 <li><a href="#tag_BC">BC</a></li> 20457 </ul> 20458 </td> 20459 20460 </tr> 20461 <tr class="entries_header"> 20462 <th class="th_details" colspan="5">Details</th> 20463 </tr> 20464 <tr class="entry_cont"> 20465 <td class="entry_details" colspan="5"> 20466 <p>The timestamps are also included in all image 20467buffers produced for the same capture,<wbr/> and will be identical 20468on all the outputs.<wbr/></p> 20469<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/> 20470the timestamps measure time since an unspecified starting point,<wbr/> 20471and are monotonically increasing.<wbr/> They can be compared with the 20472timestamps for other captures from the same camera device,<wbr/> but are 20473not guaranteed to be comparable to any other time source.<wbr/></p> 20474<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the 20475timestamps measure time in the same timebase as <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/> and they can 20476be compared to other timestamps from other subsystems that 20477are using that base.<wbr/></p> 20478<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of 20479the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the 20480timestamp</a> in the TotalCaptureResult that was used to create the 20481reprocess capture request.<wbr/></p> 20482 </td> 20483 </tr> 20484 20485 <tr class="entries_header"> 20486 <th class="th_details" colspan="5">HAL Implementation Details</th> 20487 </tr> 20488 <tr class="entry_cont"> 20489 <td class="entry_details" colspan="5"> 20490 <p>All timestamps must be in reference to the kernel's 20491CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for 20492time spent asleep.<wbr/> This allows for synchronization with 20493sensors that continue to operate while the system is 20494otherwise asleep.<wbr/></p> 20495<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> 20496The timestamp must be synchronized with the timestamps from other 20497sensor subsystems that are using the same timebase.<wbr/></p> 20498<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up 20499with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the 20500capture request.<wbr/></p> 20501 </td> 20502 </tr> 20503 20504 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20505 <!-- end of entry --> 20506 20507 20508 <tr class="entry" id="dynamic_android.sensor.temperature"> 20509 <td class="entry_name 20510 " rowspan="1"> 20511 android.<wbr/>sensor.<wbr/>temperature 20512 </td> 20513 <td class="entry_type"> 20514 <span class="entry_type_name">float</span> 20515 20516 <span class="entry_type_visibility"> [system]</span> 20517 20518 20519 20520 20521 20522 20523 </td> <!-- entry_type --> 20524 20525 <td class="entry_description"> 20526 <p>The temperature of the sensor,<wbr/> sampled at the time 20527exposure began for this frame.<wbr/></p> 20528<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or 20529somewhere close to it.<wbr/></p> 20530 </td> 20531 20532 <td class="entry_units"> 20533 Celsius 20534 </td> 20535 20536 <td class="entry_range"> 20537 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p> 20538 </td> 20539 20540 <td class="entry_tags"> 20541 <ul class="entry_tags"> 20542 <li><a href="#tag_FUTURE">FUTURE</a></li> 20543 </ul> 20544 </td> 20545 20546 </tr> 20547 20548 20549 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20550 <!-- end of entry --> 20551 20552 20553 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint"> 20554 <td class="entry_name 20555 " rowspan="3"> 20556 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point 20557 </td> 20558 <td class="entry_type"> 20559 <span class="entry_type_name">rational</span> 20560 <span class="entry_type_container">x</span> 20561 20562 <span class="entry_type_array"> 20563 3 20564 </span> 20565 <span class="entry_type_visibility"> [public]</span> 20566 20567 20568 20569 20570 20571 20572 </td> <!-- entry_type --> 20573 20574 <td class="entry_description"> 20575 <p>The estimated camera neutral color in the native sensor colorspace at 20576the time of capture.<wbr/></p> 20577 </td> 20578 20579 <td class="entry_units"> 20580 </td> 20581 20582 <td class="entry_range"> 20583 </td> 20584 20585 <td class="entry_tags"> 20586 <ul class="entry_tags"> 20587 <li><a href="#tag_RAW">RAW</a></li> 20588 </ul> 20589 </td> 20590 20591 </tr> 20592 <tr class="entries_header"> 20593 <th class="th_details" colspan="5">Details</th> 20594 </tr> 20595 <tr class="entry_cont"> 20596 <td class="entry_details" colspan="5"> 20597 <p>This value gives the neutral color point encoded as an RGB value in the 20598native sensor color space.<wbr/> The neutral color point indicates the 20599currently estimated white point of the scene illumination.<wbr/> It can be 20600used to interpolate between the provided color transforms when 20601processing raw sensor data.<wbr/></p> 20602<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p> 20603 </td> 20604 </tr> 20605 20606 20607 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20608 <!-- end of entry --> 20609 20610 20611 <tr class="entry" id="dynamic_android.sensor.noiseProfile"> 20612 <td class="entry_name 20613 " rowspan="5"> 20614 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile 20615 </td> 20616 <td class="entry_type"> 20617 <span class="entry_type_name">double</span> 20618 <span class="entry_type_container">x</span> 20619 20620 <span class="entry_type_array"> 20621 2 x CFA Channels 20622 </span> 20623 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span> 20624 20625 20626 20627 20628 <div class="entry_type_notes">Pairs of noise model coefficients</div> 20629 20630 20631 </td> <!-- entry_type --> 20632 20633 <td class="entry_description"> 20634 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p> 20635 </td> 20636 20637 <td class="entry_units"> 20638 </td> 20639 20640 <td class="entry_range"> 20641 </td> 20642 20643 <td class="entry_tags"> 20644 <ul class="entry_tags"> 20645 <li><a href="#tag_RAW">RAW</a></li> 20646 </ul> 20647 </td> 20648 20649 </tr> 20650 <tr class="entries_header"> 20651 <th class="th_details" colspan="5">Details</th> 20652 </tr> 20653 <tr class="entry_cont"> 20654 <td class="entry_details" colspan="5"> 20655 <p>This key contains two noise model coefficients for each CFA channel 20656corresponding to the sensor amplification (S) and sensor readout 20657noise (O).<wbr/> These are given as pairs of coefficients for each channel 20658in the same order as channels listed for the CFA layout key 20659(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is 20660represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where 20661the first member of the Pair at index n is the S coefficient and the 20662second member is the O coefficient for the nth color channel in the CFA.<wbr/></p> 20663<p>These coefficients are used in a two parameter noise model to describe 20664the amount of noise present in the image for each CFA channel.<wbr/> The 20665noise model used here is:</p> 20666<p>N(x) = sqrt(Sx + O)</p> 20667<p>Where x represents the recorded signal of a CFA channel normalized to 20668the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for 20669that channel.<wbr/></p> 20670<p>A more detailed description of the noise model can be found in the 20671Adobe DNG specification for the NoiseProfile tag.<wbr/></p> 20672 </td> 20673 </tr> 20674 20675 <tr class="entries_header"> 20676 <th class="th_details" colspan="5">HAL Implementation Details</th> 20677 </tr> 20678 <tr class="entry_cont"> 20679 <td class="entry_details" colspan="5"> 20680 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as 20681an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients 20682for the red channel,<wbr/> S1 and O1 are the coefficients for the first green 20683channel,<wbr/> etc.<wbr/></p> 20684 </td> 20685 </tr> 20686 20687 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20688 <!-- end of entry --> 20689 20690 20691 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap"> 20692 <td class="entry_name 20693 " rowspan="3"> 20694 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map 20695 </td> 20696 <td class="entry_type"> 20697 <span class="entry_type_name">float</span> 20698 <span class="entry_type_container">x</span> 20699 20700 <span class="entry_type_array"> 20701 hue_samples x saturation_samples x value_samples x 3 20702 </span> 20703 <span class="entry_type_visibility"> [system]</span> 20704 20705 20706 20707 20708 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div> 20709 20710 20711 </td> <!-- entry_type --> 20712 20713 <td class="entry_description"> 20714 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale 20715for each pixel.<wbr/></p> 20716 </td> 20717 20718 <td class="entry_units"> 20719 20720 The hue shift is given in degrees; saturation and value scale factors are 20721 unitless and are between 0 and 1 inclusive 20722 20723 </td> 20724 20725 <td class="entry_range"> 20726 </td> 20727 20728 <td class="entry_tags"> 20729 <ul class="entry_tags"> 20730 <li><a href="#tag_RAW">RAW</a></li> 20731 </ul> 20732 </td> 20733 20734 </tr> 20735 <tr class="entries_header"> 20736 <th class="th_details" colspan="5">Details</th> 20737 </tr> 20738 <tr class="entry_cont"> 20739 <td class="entry_details" colspan="5"> 20740 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in 20741<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p> 20742<p>Each entry of this map contains three floats corresponding to the 20743hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the 20744hue shift has the lowest index.<wbr/> The map entries are stored in the key 20745in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the 20746hue divisions in the middle loop,<wbr/> and the saturation divisions in the 20747inner loop.<wbr/> All zero input saturation entries are required to have a 20748value scale factor of 1.<wbr/>0.<wbr/></p> 20749 </td> 20750 </tr> 20751 20752 20753 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20754 <!-- end of entry --> 20755 20756 20757 <tr class="entry" id="dynamic_android.sensor.profileToneCurve"> 20758 <td class="entry_name 20759 " rowspan="3"> 20760 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve 20761 </td> 20762 <td class="entry_type"> 20763 <span class="entry_type_name">float</span> 20764 <span class="entry_type_container">x</span> 20765 20766 <span class="entry_type_array"> 20767 samples x 2 20768 </span> 20769 <span class="entry_type_visibility"> [system]</span> 20770 20771 20772 20773 20774 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div> 20775 20776 20777 </td> <!-- entry_type --> 20778 20779 <td class="entry_description"> 20780 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p> 20781 </td> 20782 20783 <td class="entry_units"> 20784 </td> 20785 20786 <td class="entry_range"> 20787 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of 20788<code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last 20789sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p> 20790 </td> 20791 20792 <td class="entry_tags"> 20793 <ul class="entry_tags"> 20794 <li><a href="#tag_RAW">RAW</a></li> 20795 </ul> 20796 </td> 20797 20798 </tr> 20799 <tr class="entries_header"> 20800 <th class="th_details" colspan="5">Details</th> 20801 </tr> 20802 <tr class="entry_cont"> 20803 <td class="entry_details" colspan="5"> 20804 <p>This key contains a default tone curve that can be applied while 20805processing the image as a starting point for user adjustments.<wbr/> 20806The curve is specified as a list of value pairs in linear gamma.<wbr/> 20807The curve is interpolated using a cubic spline.<wbr/></p> 20808 </td> 20809 </tr> 20810 20811 20812 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20813 <!-- end of entry --> 20814 20815 20816 <tr class="entry" id="dynamic_android.sensor.greenSplit"> 20817 <td class="entry_name 20818 " rowspan="5"> 20819 android.<wbr/>sensor.<wbr/>green<wbr/>Split 20820 </td> 20821 <td class="entry_type"> 20822 <span class="entry_type_name">float</span> 20823 20824 <span class="entry_type_visibility"> [public]</span> 20825 20826 20827 20828 20829 20830 20831 </td> <!-- entry_type --> 20832 20833 <td class="entry_description"> 20834 <p>The worst-case divergence between Bayer green channels.<wbr/></p> 20835 </td> 20836 20837 <td class="entry_units"> 20838 </td> 20839 20840 <td class="entry_range"> 20841 <p>>= 0</p> 20842 </td> 20843 20844 <td class="entry_tags"> 20845 <ul class="entry_tags"> 20846 <li><a href="#tag_RAW">RAW</a></li> 20847 </ul> 20848 </td> 20849 20850 </tr> 20851 <tr class="entries_header"> 20852 <th class="th_details" colspan="5">Details</th> 20853 </tr> 20854 <tr class="entry_cont"> 20855 <td class="entry_details" colspan="5"> 20856 <p>This value is an estimate of the worst case split between the 20857Bayer green channels in the red and blue rows in the sensor color 20858filter array.<wbr/></p> 20859<p>The green split is calculated as follows:</p> 20860<ol> 20861<li>A 5x5 pixel (or larger) window W within the active sensor array is 20862chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer 20863mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window 20864chosen is implementation defined,<wbr/> and should be chosen to provide a 20865green split estimate that is both representative of the entire image 20866for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li> 20867<li>The arithmetic mean of the green channels from the red 20868rows (mean_<wbr/>Gr) within W is computed.<wbr/></li> 20869<li>The arithmetic mean of the green channels from the blue 20870rows (mean_<wbr/>Gb) within W is computed.<wbr/></li> 20871<li>The maximum ratio R of the two means is computed as follows: 20872<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li> 20873</ol> 20874<p>The ratio R is the green split divergence reported for this property,<wbr/> 20875which represents how much the green channels differ in the mosaic 20876pattern.<wbr/> This value is typically used to determine the treatment of 20877the green mosaic channels when demosaicing.<wbr/></p> 20878<p>The green split value can be roughly interpreted as follows:</p> 20879<ul> 20880<li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li> 20881<li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software 20882correction to avoid demosaic errors (3-20% divergence).<wbr/></li> 20883<li>R > 1.<wbr/>20 will require strong software correction to produce 20884a usuable image (>20% divergence).<wbr/></li> 20885</ul> 20886 </td> 20887 </tr> 20888 20889 <tr class="entries_header"> 20890 <th class="th_details" colspan="5">HAL Implementation Details</th> 20891 </tr> 20892 <tr class="entry_cont"> 20893 <td class="entry_details" colspan="5"> 20894 <p>The green split given may be a static value based on prior 20895characterization of the camera sensor using the green split 20896calculation method given here over a large,<wbr/> representative,<wbr/> sample 20897set of images.<wbr/> Other methods of calculation that produce equivalent 20898results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p> 20899 </td> 20900 </tr> 20901 20902 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20903 <!-- end of entry --> 20904 20905 20906 <tr class="entry" id="dynamic_android.sensor.testPatternData"> 20907 <td class="entry_name 20908 " rowspan="5"> 20909 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 20910 </td> 20911 <td class="entry_type"> 20912 <span class="entry_type_name">int32</span> 20913 <span class="entry_type_container">x</span> 20914 20915 <span class="entry_type_array"> 20916 4 20917 </span> 20918 <span class="entry_type_visibility"> [public]</span> 20919 20920 20921 20922 20923 20924 20925 </td> <!-- entry_type --> 20926 20927 <td class="entry_description"> 20928 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 20929when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 20930 </td> 20931 20932 <td class="entry_units"> 20933 </td> 20934 20935 <td class="entry_range"> 20936 </td> 20937 20938 <td class="entry_tags"> 20939 </td> 20940 20941 </tr> 20942 <tr class="entries_header"> 20943 <th class="th_details" colspan="5">Details</th> 20944 </tr> 20945 <tr class="entry_cont"> 20946 <td class="entry_details" colspan="5"> 20947 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 20948The camera device then uses the most significant X bits 20949that correspond to how many bits are in its Bayer raw sensor 20950output.<wbr/></p> 20951<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 2095210 most significant bits from each color channel.<wbr/></p> 20953 </td> 20954 </tr> 20955 20956 <tr class="entries_header"> 20957 <th class="th_details" colspan="5">HAL Implementation Details</th> 20958 </tr> 20959 <tr class="entry_cont"> 20960 <td class="entry_details" colspan="5"> 20961 20962 </td> 20963 </tr> 20964 20965 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20966 <!-- end of entry --> 20967 20968 20969 <tr class="entry" id="dynamic_android.sensor.testPatternMode"> 20970 <td class="entry_name 20971 " rowspan="5"> 20972 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 20973 </td> 20974 <td class="entry_type"> 20975 <span class="entry_type_name entry_type_name_enum">int32</span> 20976 20977 <span class="entry_type_visibility"> [public]</span> 20978 20979 20980 20981 20982 20983 <ul class="entry_type_enum"> 20984 <li> 20985 <span class="entry_type_enum_name">OFF</span> 20986 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 20987device returns captures from the image sensor.<wbr/></p> 20988<p>This is the default if the key is not set.<wbr/></p></span> 20989 </li> 20990 <li> 20991 <span class="entry_type_enum_name">SOLID_COLOR</span> 20992 <span class="entry_type_enum_notes"><p>Each pixel in <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> is replaced by its 20993respective color channel provided in 20994<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 20995<p>For example:</p> 20996<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 20997</code></pre> 20998<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 20999<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 21000</code></pre> 21001<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 21002are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 21003 </li> 21004 <li> 21005 <span class="entry_type_enum_name">COLOR_BARS</span> 21006 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 21007<p>The vertical bars (left-to-right) are as follows:</p> 21008<ul> 21009<li>100% white</li> 21010<li>yellow</li> 21011<li>cyan</li> 21012<li>green</li> 21013<li>magenta</li> 21014<li>red</li> 21015<li>blue</li> 21016<li>black</li> 21017</ul> 21018<p>In general the image would look like the following:</p> 21019<pre><code>W Y C G M R B K 21020W Y C G M R B K 21021W Y C G M R B K 21022W Y C G M R B K 21023W Y C G M R B K 21024.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21025.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21026.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21027 21028(B = Blue,<wbr/> K = Black) 21029</code></pre> 21030<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 21031When this is not possible,<wbr/> the bar size should be rounded 21032down to the nearest integer and the pattern can repeat 21033on the right side.<wbr/></p> 21034<p>Each bar's height must always take up the full sensor 21035pixel array height.<wbr/></p> 21036<p>Each pixel in this test pattern must be set to either 210370% intensity or 100% intensity.<wbr/></p></span> 21038 </li> 21039 <li> 21040 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 21041 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 21042each bar should start at its specified color at the top,<wbr/> 21043and fade to gray at the bottom.<wbr/></p> 21044<p>Furthermore each bar is further subdivided into a left and 21045right half.<wbr/> The left half should have a smooth gradient,<wbr/> 21046and the right half should have a quantized gradient.<wbr/></p> 21047<p>In particular,<wbr/> the right half's should consist of blocks of the 21048same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 21049<p>The least significant bits in the quantized gradient should 21050be copied from the most significant bits of the smooth gradient.<wbr/></p> 21051<p>The height of each bar should always be a multiple of 128.<wbr/> 21052When this is not the case,<wbr/> the pattern should repeat at the bottom 21053of the image.<wbr/></p></span> 21054 </li> 21055 <li> 21056 <span class="entry_type_enum_name">PN9</span> 21057 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 21058generated from a PN9 512-bit sequence (typically implemented 21059in hardware with a linear feedback shift register).<wbr/></p> 21060<p>The generator should be reset at the beginning of each frame,<wbr/> 21061and thus each subsequent raw frame with this test pattern should 21062be exactly the same as the last.<wbr/></p></span> 21063 </li> 21064 <li> 21065 <span class="entry_type_enum_name">CUSTOM1</span> 21066 <span class="entry_type_enum_value">256</span> 21067 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 21068available only on this camera device are at least this numeric 21069value.<wbr/></p> 21070<p>All of the custom test patterns will be static 21071(that is the raw image must not vary from frame to frame).<wbr/></p></span> 21072 </li> 21073 </ul> 21074 21075 </td> <!-- entry_type --> 21076 21077 <td class="entry_description"> 21078 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 21079doing a real exposure from the camera.<wbr/></p> 21080 </td> 21081 21082 <td class="entry_units"> 21083 </td> 21084 21085 <td class="entry_range"> 21086 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 21087 </td> 21088 21089 <td class="entry_tags"> 21090 </td> 21091 21092 </tr> 21093 <tr class="entries_header"> 21094 <th class="th_details" colspan="5">Details</th> 21095 </tr> 21096 <tr class="entry_cont"> 21097 <td class="entry_details" colspan="5"> 21098 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 21099by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 21100work as normal.<wbr/></p> 21101<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 21102occur (and that the test pattern remain unmodified,<wbr/> since the flash 21103would not actually affect it).<wbr/></p> 21104<p>Defaults to OFF.<wbr/></p> 21105 </td> 21106 </tr> 21107 21108 <tr class="entries_header"> 21109 <th class="th_details" colspan="5">HAL Implementation Details</th> 21110 </tr> 21111 <tr class="entry_cont"> 21112 <td class="entry_details" colspan="5"> 21113 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 21114<p>The HAL may choose to substitute test patterns from the sensor 21115with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 21116indistinguishable to the ISP whether the data came from the 21117sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 21118 </td> 21119 </tr> 21120 21121 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21122 <!-- end of entry --> 21123 21124 21125 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew"> 21126 <td class="entry_name 21127 " rowspan="5"> 21128 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew 21129 </td> 21130 <td class="entry_type"> 21131 <span class="entry_type_name">int64</span> 21132 21133 <span class="entry_type_visibility"> [public]</span> 21134 21135 21136 <span class="entry_type_hwlevel">[limited] </span> 21137 21138 21139 21140 21141 </td> <!-- entry_type --> 21142 21143 <td class="entry_description"> 21144 <p>Duration between the start of first row exposure 21145and the start of last row exposure.<wbr/></p> 21146 </td> 21147 21148 <td class="entry_units"> 21149 Nanoseconds 21150 </td> 21151 21152 <td class="entry_range"> 21153 <p>>= 0 and < 21154<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p> 21155 </td> 21156 21157 <td class="entry_tags"> 21158 <ul class="entry_tags"> 21159 <li><a href="#tag_V1">V1</a></li> 21160 </ul> 21161 </td> 21162 21163 </tr> 21164 <tr class="entries_header"> 21165 <th class="th_details" colspan="5">Details</th> 21166 </tr> 21167 <tr class="entry_cont"> 21168 <td class="entry_details" colspan="5"> 21169 <p>This is the exposure time skew between the first and last 21170row exposure start times.<wbr/> The first row and the last row are 21171the first and last rows inside of the 21172<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 21173<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent 21174to the frame readout time.<wbr/></p> 21175 </td> 21176 </tr> 21177 21178 <tr class="entries_header"> 21179 <th class="th_details" colspan="5">HAL Implementation Details</th> 21180 </tr> 21181 <tr class="entry_cont"> 21182 <td class="entry_details" colspan="5"> 21183 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin 21184exposure at the same time.<wbr/></p> 21185 </td> 21186 </tr> 21187 21188 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21189 <!-- end of entry --> 21190 21191 21192 21193 <!-- end of kind --> 21194 </tbody> 21195 21196 <!-- end of section --> 21197 <tr><td colspan="6" id="section_shading" class="section">shading</td></tr> 21198 21199 21200 <tr><td colspan="6" class="kind">controls</td></tr> 21201 21202 <thead class="entries_header"> 21203 <tr> 21204 <th class="th_name">Property Name</th> 21205 <th class="th_type">Type</th> 21206 <th class="th_description">Description</th> 21207 <th class="th_units">Units</th> 21208 <th class="th_range">Range</th> 21209 <th class="th_tags">Tags</th> 21210 </tr> 21211 </thead> 21212 21213 <tbody> 21214 21215 21216 21217 21218 21219 21220 21221 21222 21223 21224 <tr class="entry" id="controls_android.shading.mode"> 21225 <td class="entry_name 21226 " rowspan="3"> 21227 android.<wbr/>shading.<wbr/>mode 21228 </td> 21229 <td class="entry_type"> 21230 <span class="entry_type_name entry_type_name_enum">byte</span> 21231 21232 <span class="entry_type_visibility"> [public]</span> 21233 21234 21235 <span class="entry_type_hwlevel">[full] </span> 21236 21237 21238 21239 <ul class="entry_type_enum"> 21240 <li> 21241 <span class="entry_type_enum_name">OFF</span> 21242 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 21243 </li> 21244 <li> 21245 <span class="entry_type_enum_name">FAST</span> 21246 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 21247frame rate relative to sensor raw output</p></span> 21248 </li> 21249 <li> 21250 <span class="entry_type_enum_name">HIGH_QUALITY</span> 21251 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 21252cost of possibly reduced frame rate.<wbr/></p></span> 21253 </li> 21254 </ul> 21255 21256 </td> <!-- entry_type --> 21257 21258 <td class="entry_description"> 21259 <p>Quality of lens shading correction applied 21260to the image data.<wbr/></p> 21261 </td> 21262 21263 <td class="entry_units"> 21264 </td> 21265 21266 <td class="entry_range"> 21267 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 21268 </td> 21269 21270 <td class="entry_tags"> 21271 </td> 21272 21273 </tr> 21274 <tr class="entries_header"> 21275 <th class="th_details" colspan="5">Details</th> 21276 </tr> 21277 <tr class="entry_cont"> 21278 <td class="entry_details" colspan="5"> 21279 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 21280camera device,<wbr/> and an identity lens shading map data will be provided 21281if <code><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> == ON</code>.<wbr/> For example,<wbr/> for lens 21282shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 21283the output <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a> for this case will be an identity 21284map shown below:</p> 21285<pre><code>[ 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 21286 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 21287 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 21288 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 21289 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 21290 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0 ] 21291</code></pre> 21292<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 21293device.<wbr/> Applications can request lens shading map data by setting 21294<a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> to ON,<wbr/> and then the camera device will provide lens 21295shading map data in <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a>; the returned shading map 21296data will be the one applied by the camera device for this capture request.<wbr/></p> 21297<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 21298the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 21299AWB are in AUTO modes(<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF and <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>!=</code> 21300OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 21301to be converged before using the returned shading map data.<wbr/></p> 21302 </td> 21303 </tr> 21304 21305 21306 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21307 <!-- end of entry --> 21308 21309 21310 <tr class="entry" id="controls_android.shading.strength"> 21311 <td class="entry_name 21312 " rowspan="1"> 21313 android.<wbr/>shading.<wbr/>strength 21314 </td> 21315 <td class="entry_type"> 21316 <span class="entry_type_name">byte</span> 21317 21318 <span class="entry_type_visibility"> [system]</span> 21319 21320 21321 21322 21323 21324 21325 </td> <!-- entry_type --> 21326 21327 <td class="entry_description"> 21328 <p>Control the amount of shading correction 21329applied to the images</p> 21330 </td> 21331 21332 <td class="entry_units"> 21333 unitless: 1-10; 10 is full shading 21334 compensation 21335 </td> 21336 21337 <td class="entry_range"> 21338 </td> 21339 21340 <td class="entry_tags"> 21341 <ul class="entry_tags"> 21342 <li><a href="#tag_FUTURE">FUTURE</a></li> 21343 </ul> 21344 </td> 21345 21346 </tr> 21347 21348 21349 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21350 <!-- end of entry --> 21351 21352 21353 21354 <!-- end of kind --> 21355 </tbody> 21356 <tr><td colspan="6" class="kind">dynamic</td></tr> 21357 21358 <thead class="entries_header"> 21359 <tr> 21360 <th class="th_name">Property Name</th> 21361 <th class="th_type">Type</th> 21362 <th class="th_description">Description</th> 21363 <th class="th_units">Units</th> 21364 <th class="th_range">Range</th> 21365 <th class="th_tags">Tags</th> 21366 </tr> 21367 </thead> 21368 21369 <tbody> 21370 21371 21372 21373 21374 21375 21376 21377 21378 21379 21380 <tr class="entry" id="dynamic_android.shading.mode"> 21381 <td class="entry_name 21382 " rowspan="3"> 21383 android.<wbr/>shading.<wbr/>mode 21384 </td> 21385 <td class="entry_type"> 21386 <span class="entry_type_name entry_type_name_enum">byte</span> 21387 21388 <span class="entry_type_visibility"> [public]</span> 21389 21390 21391 <span class="entry_type_hwlevel">[full] </span> 21392 21393 21394 21395 <ul class="entry_type_enum"> 21396 <li> 21397 <span class="entry_type_enum_name">OFF</span> 21398 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 21399 </li> 21400 <li> 21401 <span class="entry_type_enum_name">FAST</span> 21402 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 21403frame rate relative to sensor raw output</p></span> 21404 </li> 21405 <li> 21406 <span class="entry_type_enum_name">HIGH_QUALITY</span> 21407 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 21408cost of possibly reduced frame rate.<wbr/></p></span> 21409 </li> 21410 </ul> 21411 21412 </td> <!-- entry_type --> 21413 21414 <td class="entry_description"> 21415 <p>Quality of lens shading correction applied 21416to the image data.<wbr/></p> 21417 </td> 21418 21419 <td class="entry_units"> 21420 </td> 21421 21422 <td class="entry_range"> 21423 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 21424 </td> 21425 21426 <td class="entry_tags"> 21427 </td> 21428 21429 </tr> 21430 <tr class="entries_header"> 21431 <th class="th_details" colspan="5">Details</th> 21432 </tr> 21433 <tr class="entry_cont"> 21434 <td class="entry_details" colspan="5"> 21435 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 21436camera device,<wbr/> and an identity lens shading map data will be provided 21437if <code><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> == ON</code>.<wbr/> For example,<wbr/> for lens 21438shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 21439the output <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a> for this case will be an identity 21440map shown below:</p> 21441<pre><code>[ 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 21442 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 21443 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 21444 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 21445 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 21446 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0 ] 21447</code></pre> 21448<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 21449device.<wbr/> Applications can request lens shading map data by setting 21450<a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> to ON,<wbr/> and then the camera device will provide lens 21451shading map data in <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a>; the returned shading map 21452data will be the one applied by the camera device for this capture request.<wbr/></p> 21453<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 21454the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 21455AWB are in AUTO modes(<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF and <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>!=</code> 21456OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 21457to be converged before using the returned shading map data.<wbr/></p> 21458 </td> 21459 </tr> 21460 21461 21462 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21463 <!-- end of entry --> 21464 21465 21466 21467 <!-- end of kind --> 21468 </tbody> 21469 <tr><td colspan="6" class="kind">static</td></tr> 21470 21471 <thead class="entries_header"> 21472 <tr> 21473 <th class="th_name">Property Name</th> 21474 <th class="th_type">Type</th> 21475 <th class="th_description">Description</th> 21476 <th class="th_units">Units</th> 21477 <th class="th_range">Range</th> 21478 <th class="th_tags">Tags</th> 21479 </tr> 21480 </thead> 21481 21482 <tbody> 21483 21484 21485 21486 21487 21488 21489 21490 21491 21492 21493 <tr class="entry" id="static_android.shading.availableModes"> 21494 <td class="entry_name 21495 " rowspan="5"> 21496 android.<wbr/>shading.<wbr/>available<wbr/>Modes 21497 </td> 21498 <td class="entry_type"> 21499 <span class="entry_type_name">byte</span> 21500 <span class="entry_type_container">x</span> 21501 21502 <span class="entry_type_array"> 21503 n 21504 </span> 21505 <span class="entry_type_visibility"> [public as enumList]</span> 21506 21507 21508 <span class="entry_type_hwlevel">[legacy] </span> 21509 21510 21511 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div> 21512 21513 21514 </td> <!-- entry_type --> 21515 21516 <td class="entry_description"> 21517 <p>List of lens shading modes for <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a> that are supported by this camera device.<wbr/></p> 21518 </td> 21519 21520 <td class="entry_units"> 21521 </td> 21522 21523 <td class="entry_range"> 21524 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p> 21525 </td> 21526 21527 <td class="entry_tags"> 21528 </td> 21529 21530 </tr> 21531 <tr class="entries_header"> 21532 <th class="th_details" colspan="5">Details</th> 21533 </tr> 21534 <tr class="entry_cont"> 21535 <td class="entry_details" colspan="5"> 21536 <p>This list contains lens shading modes that can be set for the camera device.<wbr/> 21537Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always 21538list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/> 21539LEGACY devices will always only support FAST mode.<wbr/></p> 21540 </td> 21541 </tr> 21542 21543 <tr class="entries_header"> 21544 <th class="th_details" colspan="5">HAL Implementation Details</th> 21545 </tr> 21546 <tr class="entry_cont"> 21547 <td class="entry_details" colspan="5"> 21548 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is 21549available on the camera device,<wbr/> but the underlying implementation can be the same for 21550both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not 21551slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 21552 </td> 21553 </tr> 21554 21555 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21556 <!-- end of entry --> 21557 21558 21559 21560 <!-- end of kind --> 21561 </tbody> 21562 21563 <!-- end of section --> 21564 <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr> 21565 21566 21567 <tr><td colspan="6" class="kind">controls</td></tr> 21568 21569 <thead class="entries_header"> 21570 <tr> 21571 <th class="th_name">Property Name</th> 21572 <th class="th_type">Type</th> 21573 <th class="th_description">Description</th> 21574 <th class="th_units">Units</th> 21575 <th class="th_range">Range</th> 21576 <th class="th_tags">Tags</th> 21577 </tr> 21578 </thead> 21579 21580 <tbody> 21581 21582 21583 21584 21585 21586 21587 21588 21589 21590 21591 <tr class="entry" id="controls_android.statistics.faceDetectMode"> 21592 <td class="entry_name 21593 " rowspan="5"> 21594 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 21595 </td> 21596 <td class="entry_type"> 21597 <span class="entry_type_name entry_type_name_enum">byte</span> 21598 21599 <span class="entry_type_visibility"> [public]</span> 21600 21601 21602 <span class="entry_type_hwlevel">[legacy] </span> 21603 21604 21605 21606 <ul class="entry_type_enum"> 21607 <li> 21608 <span class="entry_type_enum_name">OFF</span> 21609 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 21610results.<wbr/></p></span> 21611 </li> 21612 <li> 21613 <span class="entry_type_enum_name">SIMPLE</span> 21614 <span class="entry_type_enum_optional">[optional]</span> 21615 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 21616 </li> 21617 <li> 21618 <span class="entry_type_enum_name">FULL</span> 21619 <span class="entry_type_enum_optional">[optional]</span> 21620 <span class="entry_type_enum_notes"><p>Return all face 21621metadata.<wbr/></p> 21622<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 21623 </li> 21624 </ul> 21625 21626 </td> <!-- entry_type --> 21627 21628 <td class="entry_description"> 21629 <p>Operating mode for the face detector 21630unit.<wbr/></p> 21631 </td> 21632 21633 <td class="entry_units"> 21634 </td> 21635 21636 <td class="entry_range"> 21637 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 21638 </td> 21639 21640 <td class="entry_tags"> 21641 <ul class="entry_tags"> 21642 <li><a href="#tag_BC">BC</a></li> 21643 </ul> 21644 </td> 21645 21646 </tr> 21647 <tr class="entries_header"> 21648 <th class="th_details" colspan="5">Details</th> 21649 </tr> 21650 <tr class="entry_cont"> 21651 <td class="entry_details" colspan="5"> 21652 <p>Whether face detection is enabled,<wbr/> and whether it 21653should output just the basic fields or the full set of 21654fields.<wbr/></p> 21655 </td> 21656 </tr> 21657 21658 <tr class="entries_header"> 21659 <th class="th_details" colspan="5">HAL Implementation Details</th> 21660 </tr> 21661 <tr class="entry_cont"> 21662 <td class="entry_details" colspan="5"> 21663 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 21664<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 21665FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 21666<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 21667 </td> 21668 </tr> 21669 21670 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21671 <!-- end of entry --> 21672 21673 21674 <tr class="entry" id="controls_android.statistics.histogramMode"> 21675 <td class="entry_name 21676 " rowspan="1"> 21677 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 21678 </td> 21679 <td class="entry_type"> 21680 <span class="entry_type_name entry_type_name_enum">byte</span> 21681 21682 <span class="entry_type_visibility"> [system as boolean]</span> 21683 21684 21685 21686 21687 21688 <ul class="entry_type_enum"> 21689 <li> 21690 <span class="entry_type_enum_name">OFF</span> 21691 </li> 21692 <li> 21693 <span class="entry_type_enum_name">ON</span> 21694 </li> 21695 </ul> 21696 21697 </td> <!-- entry_type --> 21698 21699 <td class="entry_description"> 21700 <p>Operating mode for histogram 21701generation</p> 21702 </td> 21703 21704 <td class="entry_units"> 21705 </td> 21706 21707 <td class="entry_range"> 21708 </td> 21709 21710 <td class="entry_tags"> 21711 <ul class="entry_tags"> 21712 <li><a href="#tag_FUTURE">FUTURE</a></li> 21713 </ul> 21714 </td> 21715 21716 </tr> 21717 21718 21719 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21720 <!-- end of entry --> 21721 21722 21723 <tr class="entry" id="controls_android.statistics.sharpnessMapMode"> 21724 <td class="entry_name 21725 " rowspan="1"> 21726 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 21727 </td> 21728 <td class="entry_type"> 21729 <span class="entry_type_name entry_type_name_enum">byte</span> 21730 21731 <span class="entry_type_visibility"> [system as boolean]</span> 21732 21733 21734 21735 21736 21737 <ul class="entry_type_enum"> 21738 <li> 21739 <span class="entry_type_enum_name">OFF</span> 21740 </li> 21741 <li> 21742 <span class="entry_type_enum_name">ON</span> 21743 </li> 21744 </ul> 21745 21746 </td> <!-- entry_type --> 21747 21748 <td class="entry_description"> 21749 <p>Operating mode for sharpness map 21750generation</p> 21751 </td> 21752 21753 <td class="entry_units"> 21754 </td> 21755 21756 <td class="entry_range"> 21757 </td> 21758 21759 <td class="entry_tags"> 21760 <ul class="entry_tags"> 21761 <li><a href="#tag_FUTURE">FUTURE</a></li> 21762 </ul> 21763 </td> 21764 21765 </tr> 21766 21767 21768 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21769 <!-- end of entry --> 21770 21771 21772 <tr class="entry" id="controls_android.statistics.hotPixelMapMode"> 21773 <td class="entry_name 21774 " rowspan="3"> 21775 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 21776 </td> 21777 <td class="entry_type"> 21778 <span class="entry_type_name entry_type_name_enum">byte</span> 21779 21780 <span class="entry_type_visibility"> [public as boolean]</span> 21781 21782 21783 21784 21785 21786 <ul class="entry_type_enum"> 21787 <li> 21788 <span class="entry_type_enum_name">OFF</span> 21789 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 21790 </li> 21791 <li> 21792 <span class="entry_type_enum_name">ON</span> 21793 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 21794 </li> 21795 </ul> 21796 21797 </td> <!-- entry_type --> 21798 21799 <td class="entry_description"> 21800 <p>Operating mode for hot pixel map generation.<wbr/></p> 21801 </td> 21802 21803 <td class="entry_units"> 21804 </td> 21805 21806 <td class="entry_range"> 21807 <p><a href="#static_android.statistics.info.availableHotPixelMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes</a></p> 21808 </td> 21809 21810 <td class="entry_tags"> 21811 <ul class="entry_tags"> 21812 <li><a href="#tag_V1">V1</a></li> 21813 <li><a href="#tag_RAW">RAW</a></li> 21814 </ul> 21815 </td> 21816 21817 </tr> 21818 <tr class="entries_header"> 21819 <th class="th_details" colspan="5">Details</th> 21820 </tr> 21821 <tr class="entry_cont"> 21822 <td class="entry_details" colspan="5"> 21823 <p>If set to <code>true</code>,<wbr/> a hot pixel map is returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/> 21824If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 21825 </td> 21826 </tr> 21827 21828 21829 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21830 <!-- end of entry --> 21831 21832 21833 <tr class="entry" id="controls_android.statistics.lensShadingMapMode"> 21834 <td class="entry_name 21835 " rowspan="3"> 21836 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 21837 </td> 21838 <td class="entry_type"> 21839 <span class="entry_type_name entry_type_name_enum">byte</span> 21840 21841 <span class="entry_type_visibility"> [public]</span> 21842 21843 21844 <span class="entry_type_hwlevel">[full] </span> 21845 21846 21847 21848 <ul class="entry_type_enum"> 21849 <li> 21850 <span class="entry_type_enum_name">OFF</span> 21851 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 21852 </li> 21853 <li> 21854 <span class="entry_type_enum_name">ON</span> 21855 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 21856 </li> 21857 </ul> 21858 21859 </td> <!-- entry_type --> 21860 21861 <td class="entry_description"> 21862 <p>Whether the camera device will output the lens 21863shading map in output result metadata.<wbr/></p> 21864 </td> 21865 21866 <td class="entry_units"> 21867 </td> 21868 21869 <td class="entry_range"> 21870 <p><a href="#static_android.statistics.info.availableLensShadingMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes</a></p> 21871 </td> 21872 21873 <td class="entry_tags"> 21874 <ul class="entry_tags"> 21875 <li><a href="#tag_RAW">RAW</a></li> 21876 </ul> 21877 </td> 21878 21879 </tr> 21880 <tr class="entries_header"> 21881 <th class="th_details" colspan="5">Details</th> 21882 </tr> 21883 <tr class="entry_cont"> 21884 <td class="entry_details" colspan="5"> 21885 <p>When set to ON,<wbr/> 21886<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 21887the output result metadata.<wbr/></p> 21888<p>ON is always supported on devices with the RAW capability.<wbr/></p> 21889 </td> 21890 </tr> 21891 21892 21893 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21894 <!-- end of entry --> 21895 21896 21897 21898 <!-- end of kind --> 21899 </tbody> 21900 <tr><td colspan="6" class="kind">static</td></tr> 21901 21902 <thead class="entries_header"> 21903 <tr> 21904 <th class="th_name">Property Name</th> 21905 <th class="th_type">Type</th> 21906 <th class="th_description">Description</th> 21907 <th class="th_units">Units</th> 21908 <th class="th_range">Range</th> 21909 <th class="th_tags">Tags</th> 21910 </tr> 21911 </thead> 21912 21913 <tbody> 21914 21915 21916 21917 21918 21919 21920 21921 21922 21923 21924 21925 21926 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes"> 21927 <td class="entry_name 21928 " rowspan="3"> 21929 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes 21930 </td> 21931 <td class="entry_type"> 21932 <span class="entry_type_name">byte</span> 21933 <span class="entry_type_container">x</span> 21934 21935 <span class="entry_type_array"> 21936 n 21937 </span> 21938 <span class="entry_type_visibility"> [public as enumList]</span> 21939 21940 21941 <span class="entry_type_hwlevel">[legacy] </span> 21942 21943 21944 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div> 21945 21946 21947 </td> <!-- entry_type --> 21948 21949 <td class="entry_description"> 21950 <p>List of face detection modes for <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> that are 21951supported by this camera device.<wbr/></p> 21952 </td> 21953 21954 <td class="entry_units"> 21955 </td> 21956 21957 <td class="entry_range"> 21958 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p> 21959 </td> 21960 21961 <td class="entry_tags"> 21962 </td> 21963 21964 </tr> 21965 <tr class="entries_header"> 21966 <th class="th_details" colspan="5">Details</th> 21967 </tr> 21968 <tr class="entry_cont"> 21969 <td class="entry_details" colspan="5"> 21970 <p>OFF is always supported.<wbr/></p> 21971 </td> 21972 </tr> 21973 21974 21975 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21976 <!-- end of entry --> 21977 21978 21979 <tr class="entry" id="static_android.statistics.info.histogramBucketCount"> 21980 <td class="entry_name 21981 " rowspan="1"> 21982 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count 21983 </td> 21984 <td class="entry_type"> 21985 <span class="entry_type_name">int32</span> 21986 21987 <span class="entry_type_visibility"> [system]</span> 21988 21989 21990 21991 21992 21993 21994 </td> <!-- entry_type --> 21995 21996 <td class="entry_description"> 21997 <p>Number of histogram buckets 21998supported</p> 21999 </td> 22000 22001 <td class="entry_units"> 22002 </td> 22003 22004 <td class="entry_range"> 22005 <p>>= 64</p> 22006 </td> 22007 22008 <td class="entry_tags"> 22009 <ul class="entry_tags"> 22010 <li><a href="#tag_FUTURE">FUTURE</a></li> 22011 </ul> 22012 </td> 22013 22014 </tr> 22015 22016 22017 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22018 <!-- end of entry --> 22019 22020 22021 <tr class="entry" id="static_android.statistics.info.maxFaceCount"> 22022 <td class="entry_name 22023 " rowspan="1"> 22024 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count 22025 </td> 22026 <td class="entry_type"> 22027 <span class="entry_type_name">int32</span> 22028 22029 <span class="entry_type_visibility"> [public]</span> 22030 22031 22032 <span class="entry_type_hwlevel">[legacy] </span> 22033 22034 22035 22036 22037 </td> <!-- entry_type --> 22038 22039 <td class="entry_description"> 22040 <p>The maximum number of simultaneously detectable 22041faces.<wbr/></p> 22042 </td> 22043 22044 <td class="entry_units"> 22045 </td> 22046 22047 <td class="entry_range"> 22048 <p>0 for cameras without available face detection; otherwise: 22049<code>>=4</code> for LIMITED or FULL hwlevel devices or 22050<code>>0</code> for LEGACY devices.<wbr/></p> 22051 </td> 22052 22053 <td class="entry_tags"> 22054 <ul class="entry_tags"> 22055 <li><a href="#tag_BC">BC</a></li> 22056 </ul> 22057 </td> 22058 22059 </tr> 22060 22061 22062 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22063 <!-- end of entry --> 22064 22065 22066 <tr class="entry" id="static_android.statistics.info.maxHistogramCount"> 22067 <td class="entry_name 22068 " rowspan="1"> 22069 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count 22070 </td> 22071 <td class="entry_type"> 22072 <span class="entry_type_name">int32</span> 22073 22074 <span class="entry_type_visibility"> [system]</span> 22075 22076 22077 22078 22079 22080 22081 </td> <!-- entry_type --> 22082 22083 <td class="entry_description"> 22084 <p>Maximum value possible for a histogram 22085bucket</p> 22086 </td> 22087 22088 <td class="entry_units"> 22089 </td> 22090 22091 <td class="entry_range"> 22092 </td> 22093 22094 <td class="entry_tags"> 22095 <ul class="entry_tags"> 22096 <li><a href="#tag_FUTURE">FUTURE</a></li> 22097 </ul> 22098 </td> 22099 22100 </tr> 22101 22102 22103 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22104 <!-- end of entry --> 22105 22106 22107 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue"> 22108 <td class="entry_name 22109 " rowspan="1"> 22110 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value 22111 </td> 22112 <td class="entry_type"> 22113 <span class="entry_type_name">int32</span> 22114 22115 <span class="entry_type_visibility"> [system]</span> 22116 22117 22118 22119 22120 22121 22122 </td> <!-- entry_type --> 22123 22124 <td class="entry_description"> 22125 <p>Maximum value possible for a sharpness map 22126region.<wbr/></p> 22127 </td> 22128 22129 <td class="entry_units"> 22130 </td> 22131 22132 <td class="entry_range"> 22133 </td> 22134 22135 <td class="entry_tags"> 22136 <ul class="entry_tags"> 22137 <li><a href="#tag_FUTURE">FUTURE</a></li> 22138 </ul> 22139 </td> 22140 22141 </tr> 22142 22143 22144 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22145 <!-- end of entry --> 22146 22147 22148 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize"> 22149 <td class="entry_name 22150 " rowspan="1"> 22151 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size 22152 </td> 22153 <td class="entry_type"> 22154 <span class="entry_type_name">int32</span> 22155 <span class="entry_type_container">x</span> 22156 22157 <span class="entry_type_array"> 22158 2 22159 </span> 22160 <span class="entry_type_visibility"> [system as size]</span> 22161 22162 22163 22164 22165 <div class="entry_type_notes">width x height</div> 22166 22167 22168 </td> <!-- entry_type --> 22169 22170 <td class="entry_description"> 22171 <p>Dimensions of the sharpness 22172map</p> 22173 </td> 22174 22175 <td class="entry_units"> 22176 </td> 22177 22178 <td class="entry_range"> 22179 <p>Must be at least 32 x 32</p> 22180 </td> 22181 22182 <td class="entry_tags"> 22183 <ul class="entry_tags"> 22184 <li><a href="#tag_FUTURE">FUTURE</a></li> 22185 </ul> 22186 </td> 22187 22188 </tr> 22189 22190 22191 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22192 <!-- end of entry --> 22193 22194 22195 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes"> 22196 <td class="entry_name 22197 " rowspan="3"> 22198 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes 22199 </td> 22200 <td class="entry_type"> 22201 <span class="entry_type_name">byte</span> 22202 <span class="entry_type_container">x</span> 22203 22204 <span class="entry_type_array"> 22205 n 22206 </span> 22207 <span class="entry_type_visibility"> [public as boolean]</span> 22208 22209 22210 22211 22212 <div class="entry_type_notes">list of enums</div> 22213 22214 22215 </td> <!-- entry_type --> 22216 22217 <td class="entry_description"> 22218 <p>List of hot pixel map output modes for <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a> that are 22219supported by this camera device.<wbr/></p> 22220 </td> 22221 22222 <td class="entry_units"> 22223 </td> 22224 22225 <td class="entry_range"> 22226 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p> 22227 </td> 22228 22229 <td class="entry_tags"> 22230 <ul class="entry_tags"> 22231 <li><a href="#tag_V1">V1</a></li> 22232 <li><a href="#tag_RAW">RAW</a></li> 22233 </ul> 22234 </td> 22235 22236 </tr> 22237 <tr class="entries_header"> 22238 <th class="th_details" colspan="5">Details</th> 22239 </tr> 22240 <tr class="entry_cont"> 22241 <td class="entry_details" colspan="5"> 22242 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only 22243<code>false</code>.<wbr/></p> 22244<p>ON is always supported on devices with the RAW capability.<wbr/></p> 22245 </td> 22246 </tr> 22247 22248 22249 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22250 <!-- end of entry --> 22251 22252 22253 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes"> 22254 <td class="entry_name 22255 " rowspan="3"> 22256 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes 22257 </td> 22258 <td class="entry_type"> 22259 <span class="entry_type_name">byte</span> 22260 <span class="entry_type_container">x</span> 22261 22262 <span class="entry_type_array"> 22263 n 22264 </span> 22265 <span class="entry_type_visibility"> [public as enumList]</span> 22266 22267 22268 22269 22270 <div class="entry_type_notes">list of enums</div> 22271 22272 22273 </td> <!-- entry_type --> 22274 22275 <td class="entry_description"> 22276 <p>List of lens shading map output modes for <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> that 22277are supported by this camera device.<wbr/></p> 22278 </td> 22279 22280 <td class="entry_units"> 22281 </td> 22282 22283 <td class="entry_range"> 22284 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p> 22285 </td> 22286 22287 <td class="entry_tags"> 22288 </td> 22289 22290 </tr> 22291 <tr class="entries_header"> 22292 <th class="th_details" colspan="5">Details</th> 22293 </tr> 22294 <tr class="entry_cont"> 22295 <td class="entry_details" colspan="5"> 22296 <p>If no lens shading map output is available for this camera device,<wbr/> this key will 22297contain only OFF.<wbr/></p> 22298<p>ON is always supported on devices with the RAW capability.<wbr/> 22299LEGACY mode devices will always only support OFF.<wbr/></p> 22300 </td> 22301 </tr> 22302 22303 22304 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22305 <!-- end of entry --> 22306 22307 22308 22309 22310 22311 22312 <!-- end of kind --> 22313 </tbody> 22314 <tr><td colspan="6" class="kind">dynamic</td></tr> 22315 22316 <thead class="entries_header"> 22317 <tr> 22318 <th class="th_name">Property Name</th> 22319 <th class="th_type">Type</th> 22320 <th class="th_description">Description</th> 22321 <th class="th_units">Units</th> 22322 <th class="th_range">Range</th> 22323 <th class="th_tags">Tags</th> 22324 </tr> 22325 </thead> 22326 22327 <tbody> 22328 22329 22330 22331 22332 22333 22334 22335 22336 22337 22338 <tr class="entry" id="dynamic_android.statistics.faceDetectMode"> 22339 <td class="entry_name 22340 " rowspan="5"> 22341 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 22342 </td> 22343 <td class="entry_type"> 22344 <span class="entry_type_name entry_type_name_enum">byte</span> 22345 22346 <span class="entry_type_visibility"> [public]</span> 22347 22348 22349 <span class="entry_type_hwlevel">[legacy] </span> 22350 22351 22352 22353 <ul class="entry_type_enum"> 22354 <li> 22355 <span class="entry_type_enum_name">OFF</span> 22356 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 22357results.<wbr/></p></span> 22358 </li> 22359 <li> 22360 <span class="entry_type_enum_name">SIMPLE</span> 22361 <span class="entry_type_enum_optional">[optional]</span> 22362 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 22363 </li> 22364 <li> 22365 <span class="entry_type_enum_name">FULL</span> 22366 <span class="entry_type_enum_optional">[optional]</span> 22367 <span class="entry_type_enum_notes"><p>Return all face 22368metadata.<wbr/></p> 22369<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 22370 </li> 22371 </ul> 22372 22373 </td> <!-- entry_type --> 22374 22375 <td class="entry_description"> 22376 <p>Operating mode for the face detector 22377unit.<wbr/></p> 22378 </td> 22379 22380 <td class="entry_units"> 22381 </td> 22382 22383 <td class="entry_range"> 22384 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 22385 </td> 22386 22387 <td class="entry_tags"> 22388 <ul class="entry_tags"> 22389 <li><a href="#tag_BC">BC</a></li> 22390 </ul> 22391 </td> 22392 22393 </tr> 22394 <tr class="entries_header"> 22395 <th class="th_details" colspan="5">Details</th> 22396 </tr> 22397 <tr class="entry_cont"> 22398 <td class="entry_details" colspan="5"> 22399 <p>Whether face detection is enabled,<wbr/> and whether it 22400should output just the basic fields or the full set of 22401fields.<wbr/></p> 22402 </td> 22403 </tr> 22404 22405 <tr class="entries_header"> 22406 <th class="th_details" colspan="5">HAL Implementation Details</th> 22407 </tr> 22408 <tr class="entry_cont"> 22409 <td class="entry_details" colspan="5"> 22410 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 22411<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 22412FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 22413<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 22414 </td> 22415 </tr> 22416 22417 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22418 <!-- end of entry --> 22419 22420 22421 <tr class="entry" id="dynamic_android.statistics.faceIds"> 22422 <td class="entry_name 22423 " rowspan="3"> 22424 android.<wbr/>statistics.<wbr/>face<wbr/>Ids 22425 </td> 22426 <td class="entry_type"> 22427 <span class="entry_type_name">int32</span> 22428 <span class="entry_type_container">x</span> 22429 22430 <span class="entry_type_array"> 22431 n 22432 </span> 22433 <span class="entry_type_visibility"> [hidden]</span> 22434 22435 22436 <span class="entry_type_hwlevel">[legacy] </span> 22437 22438 22439 22440 22441 </td> <!-- entry_type --> 22442 22443 <td class="entry_description"> 22444 <p>List of unique IDs for detected faces.<wbr/></p> 22445 </td> 22446 22447 <td class="entry_units"> 22448 </td> 22449 22450 <td class="entry_range"> 22451 </td> 22452 22453 <td class="entry_tags"> 22454 <ul class="entry_tags"> 22455 <li><a href="#tag_BC">BC</a></li> 22456 </ul> 22457 </td> 22458 22459 </tr> 22460 <tr class="entries_header"> 22461 <th class="th_details" colspan="5">Details</th> 22462 </tr> 22463 <tr class="entry_cont"> 22464 <td class="entry_details" colspan="5"> 22465 <p>Each detected face is given a unique ID that is valid for as long as the face is visible 22466to the camera device.<wbr/> A face that leaves the field of view and later returns may be 22467assigned a new ID.<wbr/></p> 22468<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 22469 </td> 22470 </tr> 22471 22472 22473 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22474 <!-- end of entry --> 22475 22476 22477 <tr class="entry" id="dynamic_android.statistics.faceLandmarks"> 22478 <td class="entry_name 22479 " rowspan="3"> 22480 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks 22481 </td> 22482 <td class="entry_type"> 22483 <span class="entry_type_name">int32</span> 22484 <span class="entry_type_container">x</span> 22485 22486 <span class="entry_type_array"> 22487 n x 6 22488 </span> 22489 <span class="entry_type_visibility"> [hidden]</span> 22490 22491 22492 <span class="entry_type_hwlevel">[legacy] </span> 22493 22494 22495 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div> 22496 22497 22498 </td> <!-- entry_type --> 22499 22500 <td class="entry_description"> 22501 <p>List of landmarks for detected 22502faces.<wbr/></p> 22503 </td> 22504 22505 <td class="entry_units"> 22506 </td> 22507 22508 <td class="entry_range"> 22509 </td> 22510 22511 <td class="entry_tags"> 22512 <ul class="entry_tags"> 22513 <li><a href="#tag_BC">BC</a></li> 22514 </ul> 22515 </td> 22516 22517 </tr> 22518 <tr class="entries_header"> 22519 <th class="th_details" colspan="5">Details</th> 22520 </tr> 22521 <tr class="entry_cont"> 22522 <td class="entry_details" colspan="5"> 22523 <p>The coordinate system is that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 22524<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 22525<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 22526 </td> 22527 </tr> 22528 22529 22530 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22531 <!-- end of entry --> 22532 22533 22534 <tr class="entry" id="dynamic_android.statistics.faceRectangles"> 22535 <td class="entry_name 22536 " rowspan="3"> 22537 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles 22538 </td> 22539 <td class="entry_type"> 22540 <span class="entry_type_name">int32</span> 22541 <span class="entry_type_container">x</span> 22542 22543 <span class="entry_type_array"> 22544 n x 4 22545 </span> 22546 <span class="entry_type_visibility"> [hidden as rectangle]</span> 22547 22548 22549 <span class="entry_type_hwlevel">[legacy] </span> 22550 22551 22552 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div> 22553 22554 22555 </td> <!-- entry_type --> 22556 22557 <td class="entry_description"> 22558 <p>List of the bounding rectangles for detected 22559faces.<wbr/></p> 22560 </td> 22561 22562 <td class="entry_units"> 22563 </td> 22564 22565 <td class="entry_range"> 22566 </td> 22567 22568 <td class="entry_tags"> 22569 <ul class="entry_tags"> 22570 <li><a href="#tag_BC">BC</a></li> 22571 </ul> 22572 </td> 22573 22574 </tr> 22575 <tr class="entries_header"> 22576 <th class="th_details" colspan="5">Details</th> 22577 </tr> 22578 <tr class="entry_cont"> 22579 <td class="entry_details" colspan="5"> 22580 <p>The coordinate system is that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with 22581<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 22582<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p> 22583 </td> 22584 </tr> 22585 22586 22587 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22588 <!-- end of entry --> 22589 22590 22591 <tr class="entry" id="dynamic_android.statistics.faceScores"> 22592 <td class="entry_name 22593 " rowspan="5"> 22594 android.<wbr/>statistics.<wbr/>face<wbr/>Scores 22595 </td> 22596 <td class="entry_type"> 22597 <span class="entry_type_name">byte</span> 22598 <span class="entry_type_container">x</span> 22599 22600 <span class="entry_type_array"> 22601 n 22602 </span> 22603 <span class="entry_type_visibility"> [hidden]</span> 22604 22605 22606 <span class="entry_type_hwlevel">[legacy] </span> 22607 22608 22609 22610 22611 </td> <!-- entry_type --> 22612 22613 <td class="entry_description"> 22614 <p>List of the face confidence scores for 22615detected faces</p> 22616 </td> 22617 22618 <td class="entry_units"> 22619 </td> 22620 22621 <td class="entry_range"> 22622 <p>1-100</p> 22623 </td> 22624 22625 <td class="entry_tags"> 22626 <ul class="entry_tags"> 22627 <li><a href="#tag_BC">BC</a></li> 22628 </ul> 22629 </td> 22630 22631 </tr> 22632 <tr class="entries_header"> 22633 <th class="th_details" colspan="5">Details</th> 22634 </tr> 22635 <tr class="entry_cont"> 22636 <td class="entry_details" colspan="5"> 22637 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p> 22638 </td> 22639 </tr> 22640 22641 <tr class="entries_header"> 22642 <th class="th_details" colspan="5">HAL Implementation Details</th> 22643 </tr> 22644 <tr class="entry_cont"> 22645 <td class="entry_details" colspan="5"> 22646 <p>The value should be meaningful (for example,<wbr/> setting 100 at 22647all times is illegal).<wbr/></p> 22648 </td> 22649 </tr> 22650 22651 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22652 <!-- end of entry --> 22653 22654 22655 <tr class="entry" id="dynamic_android.statistics.faces"> 22656 <td class="entry_name 22657 " rowspan="3"> 22658 android.<wbr/>statistics.<wbr/>faces 22659 </td> 22660 <td class="entry_type"> 22661 <span class="entry_type_name">int32</span> 22662 <span class="entry_type_container">x</span> 22663 22664 <span class="entry_type_array"> 22665 n 22666 </span> 22667 <span class="entry_type_visibility"> [public as face]</span> 22668 22669 <span class="entry_type_synthetic">[synthetic] </span> 22670 22671 <span class="entry_type_hwlevel">[legacy] </span> 22672 22673 22674 22675 22676 </td> <!-- entry_type --> 22677 22678 <td class="entry_description"> 22679 <p>List of the faces detected through camera face detection 22680in this capture.<wbr/></p> 22681 </td> 22682 22683 <td class="entry_units"> 22684 </td> 22685 22686 <td class="entry_range"> 22687 </td> 22688 22689 <td class="entry_tags"> 22690 </td> 22691 22692 </tr> 22693 <tr class="entries_header"> 22694 <th class="th_details" colspan="5">Details</th> 22695 </tr> 22696 <tr class="entry_cont"> 22697 <td class="entry_details" colspan="5"> 22698 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> <code>!=</code> OFF.<wbr/></p> 22699 </td> 22700 </tr> 22701 22702 22703 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22704 <!-- end of entry --> 22705 22706 22707 <tr class="entry" id="dynamic_android.statistics.histogram"> 22708 <td class="entry_name 22709 " rowspan="3"> 22710 android.<wbr/>statistics.<wbr/>histogram 22711 </td> 22712 <td class="entry_type"> 22713 <span class="entry_type_name">int32</span> 22714 <span class="entry_type_container">x</span> 22715 22716 <span class="entry_type_array"> 22717 n x 3 22718 </span> 22719 <span class="entry_type_visibility"> [system]</span> 22720 22721 22722 22723 22724 <div class="entry_type_notes">count of pixels for each color channel that fall into each histogram bucket,<wbr/> scaled to be between 0 and maxHistogramCount</div> 22725 22726 22727 </td> <!-- entry_type --> 22728 22729 <td class="entry_description"> 22730 <p>A 3-channel histogram based on the raw 22731sensor data</p> 22732 </td> 22733 22734 <td class="entry_units"> 22735 </td> 22736 22737 <td class="entry_range"> 22738 </td> 22739 22740 <td class="entry_tags"> 22741 <ul class="entry_tags"> 22742 <li><a href="#tag_FUTURE">FUTURE</a></li> 22743 </ul> 22744 </td> 22745 22746 </tr> 22747 <tr class="entries_header"> 22748 <th class="th_details" colspan="5">Details</th> 22749 </tr> 22750 <tr class="entry_cont"> 22751 <td class="entry_details" colspan="5"> 22752 <p>The k'th bucket (0-based) covers the input range 22753(with w = <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>) of [ k * w/<wbr/>N,<wbr/> 22754(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is 22755supported,<wbr/> all channels should have the same data</p> 22756 </td> 22757 </tr> 22758 22759 22760 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22761 <!-- end of entry --> 22762 22763 22764 <tr class="entry" id="dynamic_android.statistics.histogramMode"> 22765 <td class="entry_name 22766 " rowspan="1"> 22767 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 22768 </td> 22769 <td class="entry_type"> 22770 <span class="entry_type_name entry_type_name_enum">byte</span> 22771 22772 <span class="entry_type_visibility"> [system as boolean]</span> 22773 22774 22775 22776 22777 22778 <ul class="entry_type_enum"> 22779 <li> 22780 <span class="entry_type_enum_name">OFF</span> 22781 </li> 22782 <li> 22783 <span class="entry_type_enum_name">ON</span> 22784 </li> 22785 </ul> 22786 22787 </td> <!-- entry_type --> 22788 22789 <td class="entry_description"> 22790 <p>Operating mode for histogram 22791generation</p> 22792 </td> 22793 22794 <td class="entry_units"> 22795 </td> 22796 22797 <td class="entry_range"> 22798 </td> 22799 22800 <td class="entry_tags"> 22801 <ul class="entry_tags"> 22802 <li><a href="#tag_FUTURE">FUTURE</a></li> 22803 </ul> 22804 </td> 22805 22806 </tr> 22807 22808 22809 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22810 <!-- end of entry --> 22811 22812 22813 <tr class="entry" id="dynamic_android.statistics.sharpnessMap"> 22814 <td class="entry_name 22815 " rowspan="3"> 22816 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map 22817 </td> 22818 <td class="entry_type"> 22819 <span class="entry_type_name">int32</span> 22820 <span class="entry_type_container">x</span> 22821 22822 <span class="entry_type_array"> 22823 n x m x 3 22824 </span> 22825 <span class="entry_type_visibility"> [system]</span> 22826 22827 22828 22829 22830 <div class="entry_type_notes">estimated sharpness for each region of the input image.<wbr/> Normalized to be between 0 and maxSharpnessMapValue.<wbr/> Higher values mean sharper (better focused)</div> 22831 22832 22833 </td> <!-- entry_type --> 22834 22835 <td class="entry_description"> 22836 <p>A 3-channel sharpness map,<wbr/> based on the raw 22837sensor data</p> 22838 </td> 22839 22840 <td class="entry_units"> 22841 </td> 22842 22843 <td class="entry_range"> 22844 </td> 22845 22846 <td class="entry_tags"> 22847 <ul class="entry_tags"> 22848 <li><a href="#tag_FUTURE">FUTURE</a></li> 22849 </ul> 22850 </td> 22851 22852 </tr> 22853 <tr class="entries_header"> 22854 <th class="th_details" colspan="5">Details</th> 22855 </tr> 22856 <tr class="entry_cont"> 22857 <td class="entry_details" colspan="5"> 22858 <p>If only a monochrome sharpness map is supported,<wbr/> 22859all channels should have the same data</p> 22860 </td> 22861 </tr> 22862 22863 22864 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22865 <!-- end of entry --> 22866 22867 22868 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode"> 22869 <td class="entry_name 22870 " rowspan="1"> 22871 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 22872 </td> 22873 <td class="entry_type"> 22874 <span class="entry_type_name entry_type_name_enum">byte</span> 22875 22876 <span class="entry_type_visibility"> [system as boolean]</span> 22877 22878 22879 22880 22881 22882 <ul class="entry_type_enum"> 22883 <li> 22884 <span class="entry_type_enum_name">OFF</span> 22885 </li> 22886 <li> 22887 <span class="entry_type_enum_name">ON</span> 22888 </li> 22889 </ul> 22890 22891 </td> <!-- entry_type --> 22892 22893 <td class="entry_description"> 22894 <p>Operating mode for sharpness map 22895generation</p> 22896 </td> 22897 22898 <td class="entry_units"> 22899 </td> 22900 22901 <td class="entry_range"> 22902 </td> 22903 22904 <td class="entry_tags"> 22905 <ul class="entry_tags"> 22906 <li><a href="#tag_FUTURE">FUTURE</a></li> 22907 </ul> 22908 </td> 22909 22910 </tr> 22911 22912 22913 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22914 <!-- end of entry --> 22915 22916 22917 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap"> 22918 <td class="entry_name 22919 " rowspan="3"> 22920 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map 22921 </td> 22922 <td class="entry_type"> 22923 <span class="entry_type_name">byte</span> 22924 22925 <span class="entry_type_visibility"> [public as lensShadingMap]</span> 22926 22927 22928 <span class="entry_type_hwlevel">[full] </span> 22929 22930 22931 22932 22933 </td> <!-- entry_type --> 22934 22935 <td class="entry_description"> 22936 <p>The shading map is a low-resolution floating-point map 22937that lists the coefficients used to correct for vignetting,<wbr/> for each 22938Bayer color channel.<wbr/></p> 22939 </td> 22940 22941 <td class="entry_units"> 22942 </td> 22943 22944 <td class="entry_range"> 22945 <p>Each gain factor is >= 1</p> 22946 </td> 22947 22948 <td class="entry_tags"> 22949 </td> 22950 22951 </tr> 22952 <tr class="entries_header"> 22953 <th class="th_details" colspan="5">Details</th> 22954 </tr> 22955 <tr class="entry_cont"> 22956 <td class="entry_details" colspan="5"> 22957 <p>The least shaded section of the image should have a gain factor 22958of 1; all other sections should have gains above 1.<wbr/></p> 22959<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 22960must take into account the colorCorrection settings.<wbr/></p> 22961<p>The shading map is for the entire active pixel array,<wbr/> and is not 22962affected by the crop region specified in the request.<wbr/> Each shading map 22963entry is the value of the shading compensation map over a specific 22964pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 22965map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 22966(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 22967pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 22968The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 22969<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 22970channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 22971The shading map is stored in a fully interleaved format.<wbr/></p> 22972<p>The shading map should have on the order of 30-40 rows and columns,<wbr/> 22973and must be smaller than 64x64.<wbr/></p> 22974<p>As an example,<wbr/> given a very small map defined as:</p> 22975<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ] 22976values = 22977[ 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>2,<wbr/> 22978 1.<wbr/>1,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 22979 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>25,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>0,<wbr/> 22980 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>25,<wbr/> 1.<wbr/>2,<wbr/> 22981 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>2,<wbr/> 22982 1.<wbr/>2,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3 ] 22983</code></pre> 22984<p>The low-resolution scaling map images for each channel are 22985(displayed using nearest-neighbor interpolation):</p> 22986<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 22987<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 22988<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 22989<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 22990<p>As a visualization only,<wbr/> inverting the full-color map to recover an 22991image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 22992<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 22993 </td> 22994 </tr> 22995 22996 22997 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22998 <!-- end of entry --> 22999 23000 23001 <tr class="entry" id="dynamic_android.statistics.lensShadingMap"> 23002 <td class="entry_name 23003 " rowspan="5"> 23004 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map 23005 </td> 23006 <td class="entry_type"> 23007 <span class="entry_type_name">float</span> 23008 <span class="entry_type_container">x</span> 23009 23010 <span class="entry_type_array"> 23011 4 x n x m 23012 </span> 23013 <span class="entry_type_visibility"> [hidden]</span> 23014 23015 23016 <span class="entry_type_hwlevel">[full] </span> 23017 23018 23019 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div> 23020 23021 23022 </td> <!-- entry_type --> 23023 23024 <td class="entry_description"> 23025 <p>The shading map is a low-resolution floating-point map 23026that lists the coefficients used to correct for vignetting,<wbr/> for each 23027Bayer color channel of RAW image data.<wbr/></p> 23028 </td> 23029 23030 <td class="entry_units"> 23031 </td> 23032 23033 <td class="entry_range"> 23034 <p>Each gain factor is >= 1</p> 23035 </td> 23036 23037 <td class="entry_tags"> 23038 </td> 23039 23040 </tr> 23041 <tr class="entries_header"> 23042 <th class="th_details" colspan="5">Details</th> 23043 </tr> 23044 <tr class="entry_cont"> 23045 <td class="entry_details" colspan="5"> 23046 <p>The least shaded section of the image should have a gain factor 23047of 1; all other sections should have gains above 1.<wbr/></p> 23048<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 23049must take into account the colorCorrection settings.<wbr/></p> 23050<p>The shading map is for the entire active pixel array,<wbr/> and is not 23051affected by the crop region specified in the request.<wbr/> Each shading map 23052entry is the value of the shading compensation map over a specific 23053pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 23054map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 23055(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 23056pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 23057The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 23058<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 23059channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 23060The shading map is stored in a fully interleaved format,<wbr/> and its size 23061is provided in the camera static metadata by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>.<wbr/></p> 23062<p>The shading map should have on the order of 30-40 rows and columns,<wbr/> 23063and must be smaller than 64x64.<wbr/></p> 23064<p>As an example,<wbr/> given a very small map defined as:</p> 23065<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 23066<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 23067[ 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>2,<wbr/> 23068 1.<wbr/>1,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 23069 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>25,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>0,<wbr/> 23070 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>25,<wbr/> 1.<wbr/>2,<wbr/> 23071 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>2,<wbr/> 23072 1.<wbr/>2,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3 ] 23073</code></pre> 23074<p>The low-resolution scaling map images for each channel are 23075(displayed using nearest-neighbor interpolation):</p> 23076<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 23077<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 23078<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 23079<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 23080<p>As a visualization only,<wbr/> inverting the full-color map to recover an 23081image of a gray wall (using bicubic interpolation for visual quality) 23082as captured by the sensor gives:</p> 23083<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 23084<p>Note that the RAW image data might be subject to lens shading 23085correction not reported on this map.<wbr/> Query 23086<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> to see if RAW image data has subject 23087to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> 23088is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading 23089correction.<wbr/> In the case full lens shading correction is applied to RAW 23090images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/> 23091In other words,<wbr/> the map reported in this key is the remaining lens shading 23092that needs to be applied on the RAW image to get images without lens shading 23093artifacts.<wbr/> See <a href="#static_android.request.maxNumOutputRaw">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw</a> for a list of RAW image 23094formats.<wbr/></p> 23095 </td> 23096 </tr> 23097 23098 <tr class="entries_header"> 23099 <th class="th_details" colspan="5">HAL Implementation Details</th> 23100 </tr> 23101 <tr class="entry_cont"> 23102 <td class="entry_details" colspan="5"> 23103 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/> 23104When AE and AWB are in AUTO modes 23105(<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF and <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>!=</code> OFF),<wbr/> the HAL 23106may have all the information it need to generate most accurate lens shading map.<wbr/> When 23107AE or AWB are in manual mode 23108(<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> OFF or <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>==</code> OFF),<wbr/> the shading map 23109may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid 23110generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with 23111the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p> 23112 </td> 23113 </tr> 23114 23115 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23116 <!-- end of entry --> 23117 23118 23119 <tr class="entry" id="dynamic_android.statistics.predictedColorGains"> 23120 <td class="entry_name 23121 entry_name_deprecated 23122 " rowspan="3"> 23123 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains 23124 </td> 23125 <td class="entry_type"> 23126 <span class="entry_type_name">float</span> 23127 <span class="entry_type_container">x</span> 23128 23129 <span class="entry_type_array"> 23130 4 23131 </span> 23132 <span class="entry_type_visibility"> [hidden]</span> 23133 23134 23135 23136 <span class="entry_type_deprecated">[deprecated] </span> 23137 23138 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 23139 23140 23141 </td> <!-- entry_type --> 23142 23143 <td class="entry_description"> 23144 <p>The best-fit color channel gains calculated 23145by the camera device's statistics units for the current output frame.<wbr/></p> 23146 </td> 23147 23148 <td class="entry_units"> 23149 </td> 23150 23151 <td class="entry_range"> 23152 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 23153 </td> 23154 23155 <td class="entry_tags"> 23156 </td> 23157 23158 </tr> 23159 <tr class="entries_header"> 23160 <th class="th_details" colspan="5">Details</th> 23161 </tr> 23162 <tr class="entry_cont"> 23163 <td class="entry_details" colspan="5"> 23164 <p>This may be different than the gains used for this frame,<wbr/> 23165since statistics processing on data from a new frame 23166typically completes after the transform has already been 23167applied to that frame.<wbr/></p> 23168<p>The 4 channel gains are defined in Bayer domain,<wbr/> 23169see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p> 23170<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 23171regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 23172 </td> 23173 </tr> 23174 23175 23176 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23177 <!-- end of entry --> 23178 23179 23180 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform"> 23181 <td class="entry_name 23182 entry_name_deprecated 23183 " rowspan="3"> 23184 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform 23185 </td> 23186 <td class="entry_type"> 23187 <span class="entry_type_name">rational</span> 23188 <span class="entry_type_container">x</span> 23189 23190 <span class="entry_type_array"> 23191 3 x 3 23192 </span> 23193 <span class="entry_type_visibility"> [hidden]</span> 23194 23195 23196 23197 <span class="entry_type_deprecated">[deprecated] </span> 23198 23199 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 23200 23201 23202 </td> <!-- entry_type --> 23203 23204 <td class="entry_description"> 23205 <p>The best-fit color transform matrix estimate 23206calculated by the camera device's statistics units for the current 23207output frame.<wbr/></p> 23208 </td> 23209 23210 <td class="entry_units"> 23211 </td> 23212 23213 <td class="entry_range"> 23214 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 23215 </td> 23216 23217 <td class="entry_tags"> 23218 </td> 23219 23220 </tr> 23221 <tr class="entries_header"> 23222 <th class="th_details" colspan="5">Details</th> 23223 </tr> 23224 <tr class="entry_cont"> 23225 <td class="entry_details" colspan="5"> 23226 <p>The camera device will provide the estimate from its 23227statistics unit on the white balance transforms to use 23228for the next frame.<wbr/> These are the values the camera device believes 23229are the best fit for the current output frame.<wbr/> This may 23230be different than the transform used for this frame,<wbr/> since 23231statistics processing on data from a new frame typically 23232completes after the transform has already been applied to 23233that frame.<wbr/></p> 23234<p>These estimates must be provided for all frames,<wbr/> even if 23235capture settings and color transforms are set by the application.<wbr/></p> 23236<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 23237regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 23238 </td> 23239 </tr> 23240 23241 23242 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23243 <!-- end of entry --> 23244 23245 23246 <tr class="entry" id="dynamic_android.statistics.sceneFlicker"> 23247 <td class="entry_name 23248 " rowspan="3"> 23249 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker 23250 </td> 23251 <td class="entry_type"> 23252 <span class="entry_type_name entry_type_name_enum">byte</span> 23253 23254 <span class="entry_type_visibility"> [public]</span> 23255 23256 23257 <span class="entry_type_hwlevel">[full] </span> 23258 23259 23260 23261 <ul class="entry_type_enum"> 23262 <li> 23263 <span class="entry_type_enum_name">NONE</span> 23264 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination 23265in the current scene.<wbr/></p></span> 23266 </li> 23267 <li> 23268 <span class="entry_type_enum_name">50HZ</span> 23269 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz 23270in the current scene.<wbr/></p></span> 23271 </li> 23272 <li> 23273 <span class="entry_type_enum_name">60HZ</span> 23274 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz 23275in the current scene.<wbr/></p></span> 23276 </li> 23277 </ul> 23278 23279 </td> <!-- entry_type --> 23280 23281 <td class="entry_description"> 23282 <p>The camera device estimated scene illumination lighting 23283frequency.<wbr/></p> 23284 </td> 23285 23286 <td class="entry_units"> 23287 </td> 23288 23289 <td class="entry_range"> 23290 </td> 23291 23292 <td class="entry_tags"> 23293 </td> 23294 23295 </tr> 23296 <tr class="entries_header"> 23297 <th class="th_details" colspan="5">Details</th> 23298 </tr> 23299 <tr class="entry_cont"> 23300 <td class="entry_details" colspan="5"> 23301 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate 23302that depends on the local utility power standards.<wbr/> This flicker must be 23303accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> 23304The camera device uses this entry to tell the application what the scene 23305illuminant frequency is.<wbr/></p> 23306<p>When manual exposure control is enabled 23307(<code><a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> == OFF</code> or <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == 23308OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform 23309antibanding,<wbr/> and the application can ensure it selects 23310exposure times that do not cause banding issues by looking 23311into this metadata field.<wbr/> See 23312<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p> 23313<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p> 23314 </td> 23315 </tr> 23316 23317 23318 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23319 <!-- end of entry --> 23320 23321 23322 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode"> 23323 <td class="entry_name 23324 " rowspan="3"> 23325 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 23326 </td> 23327 <td class="entry_type"> 23328 <span class="entry_type_name entry_type_name_enum">byte</span> 23329 23330 <span class="entry_type_visibility"> [public as boolean]</span> 23331 23332 23333 23334 23335 23336 <ul class="entry_type_enum"> 23337 <li> 23338 <span class="entry_type_enum_name">OFF</span> 23339 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 23340 </li> 23341 <li> 23342 <span class="entry_type_enum_name">ON</span> 23343 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 23344 </li> 23345 </ul> 23346 23347 </td> <!-- entry_type --> 23348 23349 <td class="entry_description"> 23350 <p>Operating mode for hot pixel map generation.<wbr/></p> 23351 </td> 23352 23353 <td class="entry_units"> 23354 </td> 23355 23356 <td class="entry_range"> 23357 <p><a href="#static_android.statistics.info.availableHotPixelMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes</a></p> 23358 </td> 23359 23360 <td class="entry_tags"> 23361 <ul class="entry_tags"> 23362 <li><a href="#tag_V1">V1</a></li> 23363 <li><a href="#tag_RAW">RAW</a></li> 23364 </ul> 23365 </td> 23366 23367 </tr> 23368 <tr class="entries_header"> 23369 <th class="th_details" colspan="5">Details</th> 23370 </tr> 23371 <tr class="entry_cont"> 23372 <td class="entry_details" colspan="5"> 23373 <p>If set to <code>true</code>,<wbr/> a hot pixel map is returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/> 23374If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 23375 </td> 23376 </tr> 23377 23378 23379 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23380 <!-- end of entry --> 23381 23382 23383 <tr class="entry" id="dynamic_android.statistics.hotPixelMap"> 23384 <td class="entry_name 23385 " rowspan="5"> 23386 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map 23387 </td> 23388 <td class="entry_type"> 23389 <span class="entry_type_name">int32</span> 23390 <span class="entry_type_container">x</span> 23391 23392 <span class="entry_type_array"> 23393 2 x n 23394 </span> 23395 <span class="entry_type_visibility"> [public as point]</span> 23396 23397 23398 23399 23400 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div> 23401 23402 23403 </td> <!-- entry_type --> 23404 23405 <td class="entry_description"> 23406 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p> 23407 </td> 23408 23409 <td class="entry_units"> 23410 </td> 23411 23412 <td class="entry_range"> 23413 <p>n <= number of pixels on the sensor.<wbr/> 23414The <code>(x,<wbr/> y)</code> coordinates must be bounded by 23415<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 23416 </td> 23417 23418 <td class="entry_tags"> 23419 <ul class="entry_tags"> 23420 <li><a href="#tag_V1">V1</a></li> 23421 <li><a href="#tag_RAW">RAW</a></li> 23422 </ul> 23423 </td> 23424 23425 </tr> 23426 <tr class="entries_header"> 23427 <th class="th_details" colspan="5">Details</th> 23428 </tr> 23429 <tr class="entry_cont"> 23430 <td class="entry_details" colspan="5"> 23431 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and 23432<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and 23433bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and 23434height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> 23435This may include hot pixels that lie outside of the active array 23436bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 23437 </td> 23438 </tr> 23439 23440 <tr class="entries_header"> 23441 <th class="th_details" colspan="5">HAL Implementation Details</th> 23442 </tr> 23443 <tr class="entry_cont"> 23444 <td class="entry_details" colspan="5"> 23445 <p>A hotpixel map contains the coordinates of pixels on the camera 23446sensor that do report valid values (usually due to defects in 23447the camera sensor).<wbr/> This includes pixels that are stuck at certain 23448values,<wbr/> or have a response that does not accuractly encode the 23449incoming light from the scene.<wbr/></p> 23450<p>To avoid performance issues,<wbr/> there should be significantly fewer hot 23451pixels than actual pixels on the camera sensor.<wbr/></p> 23452 </td> 23453 </tr> 23454 23455 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23456 <!-- end of entry --> 23457 23458 23459 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode"> 23460 <td class="entry_name 23461 " rowspan="3"> 23462 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 23463 </td> 23464 <td class="entry_type"> 23465 <span class="entry_type_name entry_type_name_enum">byte</span> 23466 23467 <span class="entry_type_visibility"> [public]</span> 23468 23469 23470 <span class="entry_type_hwlevel">[full] </span> 23471 23472 23473 23474 <ul class="entry_type_enum"> 23475 <li> 23476 <span class="entry_type_enum_name">OFF</span> 23477 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 23478 </li> 23479 <li> 23480 <span class="entry_type_enum_name">ON</span> 23481 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 23482 </li> 23483 </ul> 23484 23485 </td> <!-- entry_type --> 23486 23487 <td class="entry_description"> 23488 <p>Whether the camera device will output the lens 23489shading map in output result metadata.<wbr/></p> 23490 </td> 23491 23492 <td class="entry_units"> 23493 </td> 23494 23495 <td class="entry_range"> 23496 <p><a href="#static_android.statistics.info.availableLensShadingMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes</a></p> 23497 </td> 23498 23499 <td class="entry_tags"> 23500 <ul class="entry_tags"> 23501 <li><a href="#tag_RAW">RAW</a></li> 23502 </ul> 23503 </td> 23504 23505 </tr> 23506 <tr class="entries_header"> 23507 <th class="th_details" colspan="5">Details</th> 23508 </tr> 23509 <tr class="entry_cont"> 23510 <td class="entry_details" colspan="5"> 23511 <p>When set to ON,<wbr/> 23512<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 23513the output result metadata.<wbr/></p> 23514<p>ON is always supported on devices with the RAW capability.<wbr/></p> 23515 </td> 23516 </tr> 23517 23518 23519 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23520 <!-- end of entry --> 23521 23522 23523 23524 <!-- end of kind --> 23525 </tbody> 23526 23527 <!-- end of section --> 23528 <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr> 23529 23530 23531 <tr><td colspan="6" class="kind">controls</td></tr> 23532 23533 <thead class="entries_header"> 23534 <tr> 23535 <th class="th_name">Property Name</th> 23536 <th class="th_type">Type</th> 23537 <th class="th_description">Description</th> 23538 <th class="th_units">Units</th> 23539 <th class="th_range">Range</th> 23540 <th class="th_tags">Tags</th> 23541 </tr> 23542 </thead> 23543 23544 <tbody> 23545 23546 23547 23548 23549 23550 23551 23552 23553 23554 23555 <tr class="entry" id="controls_android.tonemap.curveBlue"> 23556 <td class="entry_name 23557 " rowspan="3"> 23558 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 23559 </td> 23560 <td class="entry_type"> 23561 <span class="entry_type_name">float</span> 23562 <span class="entry_type_container">x</span> 23563 23564 <span class="entry_type_array"> 23565 n x 2 23566 </span> 23567 <span class="entry_type_visibility"> [hidden]</span> 23568 23569 23570 <span class="entry_type_hwlevel">[full] </span> 23571 23572 23573 <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div> 23574 23575 23576 </td> <!-- entry_type --> 23577 23578 <td class="entry_description"> 23579 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 23580channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23581CONTRAST_<wbr/>CURVE.<wbr/></p> 23582 </td> 23583 23584 <td class="entry_units"> 23585 </td> 23586 23587 <td class="entry_range"> 23588 </td> 23589 23590 <td class="entry_tags"> 23591 </td> 23592 23593 </tr> 23594 <tr class="entries_header"> 23595 <th class="th_details" colspan="5">Details</th> 23596 </tr> 23597 <tr class="entry_cont"> 23598 <td class="entry_details" colspan="5"> 23599 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 23600 </td> 23601 </tr> 23602 23603 23604 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23605 <!-- end of entry --> 23606 23607 23608 <tr class="entry" id="controls_android.tonemap.curveGreen"> 23609 <td class="entry_name 23610 " rowspan="3"> 23611 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 23612 </td> 23613 <td class="entry_type"> 23614 <span class="entry_type_name">float</span> 23615 <span class="entry_type_container">x</span> 23616 23617 <span class="entry_type_array"> 23618 n x 2 23619 </span> 23620 <span class="entry_type_visibility"> [hidden]</span> 23621 23622 23623 <span class="entry_type_hwlevel">[full] </span> 23624 23625 23626 <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div> 23627 23628 23629 </td> <!-- entry_type --> 23630 23631 <td class="entry_description"> 23632 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 23633channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23634CONTRAST_<wbr/>CURVE.<wbr/></p> 23635 </td> 23636 23637 <td class="entry_units"> 23638 </td> 23639 23640 <td class="entry_range"> 23641 </td> 23642 23643 <td class="entry_tags"> 23644 </td> 23645 23646 </tr> 23647 <tr class="entries_header"> 23648 <th class="th_details" colspan="5">Details</th> 23649 </tr> 23650 <tr class="entry_cont"> 23651 <td class="entry_details" colspan="5"> 23652 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 23653 </td> 23654 </tr> 23655 23656 23657 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23658 <!-- end of entry --> 23659 23660 23661 <tr class="entry" id="controls_android.tonemap.curveRed"> 23662 <td class="entry_name 23663 " rowspan="5"> 23664 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 23665 </td> 23666 <td class="entry_type"> 23667 <span class="entry_type_name">float</span> 23668 <span class="entry_type_container">x</span> 23669 23670 <span class="entry_type_array"> 23671 n x 2 23672 </span> 23673 <span class="entry_type_visibility"> [hidden]</span> 23674 23675 23676 <span class="entry_type_hwlevel">[full] </span> 23677 23678 23679 <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div> 23680 23681 23682 </td> <!-- entry_type --> 23683 23684 <td class="entry_description"> 23685 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 23686channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23687CONTRAST_<wbr/>CURVE.<wbr/></p> 23688 </td> 23689 23690 <td class="entry_units"> 23691 </td> 23692 23693 <td class="entry_range"> 23694 <p>0-1 on both input and output coordinates,<wbr/> normalized 23695as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 23696 </td> 23697 23698 <td class="entry_tags"> 23699 </td> 23700 23701 </tr> 23702 <tr class="entries_header"> 23703 <th class="th_details" colspan="5">Details</th> 23704 </tr> 23705 <tr class="entry_cont"> 23706 <td class="entry_details" colspan="5"> 23707 <p>Each channel's curve is defined by an array of control points:</p> 23708<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 23709 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 237102 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 23711<p>These are sorted in order of increasing <code>Pin</code>; it is 23712required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 23713define a complete mapping.<wbr/> For input values between control points,<wbr/> 23714the camera device must linearly interpolate between the control 23715points.<wbr/></p> 23716<p>Each curve can have an independent number of points,<wbr/> and the number 23717of points can be less than max (that is,<wbr/> the request doesn't have to 23718always provide a curve with number of points equivalent to 23719<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 23720<p>A few examples,<wbr/> and their corresponding graphical mappings; these 23721only specify the red channel and the precision is limited to 4 23722digits,<wbr/> for conciseness.<wbr/></p> 23723<p>Linear mapping:</p> 23724<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 0,<wbr/> 0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0 ] 23725</code></pre> 23726<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 23727<p>Invert mapping:</p> 23728<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 0 ] 23729</code></pre> 23730<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 23731<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 23732<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 23733 0.<wbr/>0000,<wbr/> 0.<wbr/>0000,<wbr/> 0.<wbr/>0667,<wbr/> 0.<wbr/>2920,<wbr/> 0.<wbr/>1333,<wbr/> 0.<wbr/>4002,<wbr/> 0.<wbr/>2000,<wbr/> 0.<wbr/>4812,<wbr/> 23734 0.<wbr/>2667,<wbr/> 0.<wbr/>5484,<wbr/> 0.<wbr/>3333,<wbr/> 0.<wbr/>6069,<wbr/> 0.<wbr/>4000,<wbr/> 0.<wbr/>6594,<wbr/> 0.<wbr/>4667,<wbr/> 0.<wbr/>7072,<wbr/> 23735 0.<wbr/>5333,<wbr/> 0.<wbr/>7515,<wbr/> 0.<wbr/>6000,<wbr/> 0.<wbr/>7928,<wbr/> 0.<wbr/>6667,<wbr/> 0.<wbr/>8317,<wbr/> 0.<wbr/>7333,<wbr/> 0.<wbr/>8685,<wbr/> 23736 0.<wbr/>8000,<wbr/> 0.<wbr/>9035,<wbr/> 0.<wbr/>8667,<wbr/> 0.<wbr/>9370,<wbr/> 0.<wbr/>9333,<wbr/> 0.<wbr/>9691,<wbr/> 1.<wbr/>0000,<wbr/> 1.<wbr/>0000 ] 23737</code></pre> 23738<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 23739<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 23740<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 23741 0.<wbr/>0000,<wbr/> 0.<wbr/>0000,<wbr/> 0.<wbr/>0667,<wbr/> 0.<wbr/>2864,<wbr/> 0.<wbr/>1333,<wbr/> 0.<wbr/>4007,<wbr/> 0.<wbr/>2000,<wbr/> 0.<wbr/>4845,<wbr/> 23742 0.<wbr/>2667,<wbr/> 0.<wbr/>5532,<wbr/> 0.<wbr/>3333,<wbr/> 0.<wbr/>6125,<wbr/> 0.<wbr/>4000,<wbr/> 0.<wbr/>6652,<wbr/> 0.<wbr/>4667,<wbr/> 0.<wbr/>7130,<wbr/> 23743 0.<wbr/>5333,<wbr/> 0.<wbr/>7569,<wbr/> 0.<wbr/>6000,<wbr/> 0.<wbr/>7977,<wbr/> 0.<wbr/>6667,<wbr/> 0.<wbr/>8360,<wbr/> 0.<wbr/>7333,<wbr/> 0.<wbr/>8721,<wbr/> 23744 0.<wbr/>8000,<wbr/> 0.<wbr/>9063,<wbr/> 0.<wbr/>8667,<wbr/> 0.<wbr/>9389,<wbr/> 0.<wbr/>9333,<wbr/> 0.<wbr/>9701,<wbr/> 1.<wbr/>0000,<wbr/> 1.<wbr/>0000 ] 23745</code></pre> 23746<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 23747 </td> 23748 </tr> 23749 23750 <tr class="entries_header"> 23751 <th class="th_details" colspan="5">HAL Implementation Details</th> 23752 </tr> 23753 <tr class="entry_cont"> 23754 <td class="entry_details" colspan="5"> 23755 <p>For good quality of mapping,<wbr/> at least 128 control points are 23756preferred.<wbr/></p> 23757<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 23758control points used as are available.<wbr/></p> 23759 </td> 23760 </tr> 23761 23762 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23763 <!-- end of entry --> 23764 23765 23766 <tr class="entry" id="controls_android.tonemap.curve"> 23767 <td class="entry_name 23768 " rowspan="5"> 23769 android.<wbr/>tonemap.<wbr/>curve 23770 </td> 23771 <td class="entry_type"> 23772 <span class="entry_type_name">float</span> 23773 23774 <span class="entry_type_visibility"> [public as tonemapCurve]</span> 23775 23776 <span class="entry_type_synthetic">[synthetic] </span> 23777 23778 <span class="entry_type_hwlevel">[full] </span> 23779 23780 23781 23782 23783 </td> <!-- entry_type --> 23784 23785 <td class="entry_description"> 23786 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 23787is CONTRAST_<wbr/>CURVE.<wbr/></p> 23788 </td> 23789 23790 <td class="entry_units"> 23791 </td> 23792 23793 <td class="entry_range"> 23794 </td> 23795 23796 <td class="entry_tags"> 23797 </td> 23798 23799 </tr> 23800 <tr class="entries_header"> 23801 <th class="th_details" colspan="5">Details</th> 23802 </tr> 23803 <tr class="entry_cont"> 23804 <td class="entry_details" colspan="5"> 23805 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 23806channels respectively.<wbr/> The following example uses the red channel as an 23807example.<wbr/> The same logic applies to green and blue channel.<wbr/> 23808Each channel's curve is defined by an array of control points:</p> 23809<pre><code>curveRed = 23810 [ P0(in,<wbr/> out),<wbr/> P1(in,<wbr/> out),<wbr/> P2(in,<wbr/> out),<wbr/> P3(in,<wbr/> out),<wbr/> ...,<wbr/> PN(in,<wbr/> out) ] 238112 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 23812<p>These are sorted in order of increasing <code>Pin</code>; it is always 23813guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 23814define a complete mapping.<wbr/> For input values between control points,<wbr/> 23815the camera device must linearly interpolate between the control 23816points.<wbr/></p> 23817<p>Each curve can have an independent number of points,<wbr/> and the number 23818of points can be less than max (that is,<wbr/> the request doesn't have to 23819always provide a curve with number of points equivalent to 23820<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 23821<p>A few examples,<wbr/> and their corresponding graphical mappings; these 23822only specify the red channel and the precision is limited to 4 23823digits,<wbr/> for conciseness.<wbr/></p> 23824<p>Linear mapping:</p> 23825<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 23826</code></pre> 23827<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 23828<p>Invert mapping:</p> 23829<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 23830</code></pre> 23831<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 23832<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 23833<pre><code>curveRed = [ 23834 (0.<wbr/>0000,<wbr/> 0.<wbr/>0000),<wbr/> (0.<wbr/>0667,<wbr/> 0.<wbr/>2920),<wbr/> (0.<wbr/>1333,<wbr/> 0.<wbr/>4002),<wbr/> (0.<wbr/>2000,<wbr/> 0.<wbr/>4812),<wbr/> 23835 (0.<wbr/>2667,<wbr/> 0.<wbr/>5484),<wbr/> (0.<wbr/>3333,<wbr/> 0.<wbr/>6069),<wbr/> (0.<wbr/>4000,<wbr/> 0.<wbr/>6594),<wbr/> (0.<wbr/>4667,<wbr/> 0.<wbr/>7072),<wbr/> 23836 (0.<wbr/>5333,<wbr/> 0.<wbr/>7515),<wbr/> (0.<wbr/>6000,<wbr/> 0.<wbr/>7928),<wbr/> (0.<wbr/>6667,<wbr/> 0.<wbr/>8317),<wbr/> (0.<wbr/>7333,<wbr/> 0.<wbr/>8685),<wbr/> 23837 (0.<wbr/>8000,<wbr/> 0.<wbr/>9035),<wbr/> (0.<wbr/>8667,<wbr/> 0.<wbr/>9370),<wbr/> (0.<wbr/>9333,<wbr/> 0.<wbr/>9691),<wbr/> (1.<wbr/>0000,<wbr/> 1.<wbr/>0000) ] 23838</code></pre> 23839<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 23840<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 23841<pre><code>curveRed = [ 23842 (0.<wbr/>0000,<wbr/> 0.<wbr/>0000),<wbr/> (0.<wbr/>0667,<wbr/> 0.<wbr/>2864),<wbr/> (0.<wbr/>1333,<wbr/> 0.<wbr/>4007),<wbr/> (0.<wbr/>2000,<wbr/> 0.<wbr/>4845),<wbr/> 23843 (0.<wbr/>2667,<wbr/> 0.<wbr/>5532),<wbr/> (0.<wbr/>3333,<wbr/> 0.<wbr/>6125),<wbr/> (0.<wbr/>4000,<wbr/> 0.<wbr/>6652),<wbr/> (0.<wbr/>4667,<wbr/> 0.<wbr/>7130),<wbr/> 23844 (0.<wbr/>5333,<wbr/> 0.<wbr/>7569),<wbr/> (0.<wbr/>6000,<wbr/> 0.<wbr/>7977),<wbr/> (0.<wbr/>6667,<wbr/> 0.<wbr/>8360),<wbr/> (0.<wbr/>7333,<wbr/> 0.<wbr/>8721),<wbr/> 23845 (0.<wbr/>8000,<wbr/> 0.<wbr/>9063),<wbr/> (0.<wbr/>8667,<wbr/> 0.<wbr/>9389),<wbr/> (0.<wbr/>9333,<wbr/> 0.<wbr/>9701),<wbr/> (1.<wbr/>0000,<wbr/> 1.<wbr/>0000) ] 23846</code></pre> 23847<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 23848 </td> 23849 </tr> 23850 23851 <tr class="entries_header"> 23852 <th class="th_details" colspan="5">HAL Implementation Details</th> 23853 </tr> 23854 <tr class="entry_cont"> 23855 <td class="entry_details" colspan="5"> 23856 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 23857curveBlue entries.<wbr/></p> 23858 </td> 23859 </tr> 23860 23861 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23862 <!-- end of entry --> 23863 23864 23865 <tr class="entry" id="controls_android.tonemap.mode"> 23866 <td class="entry_name 23867 " rowspan="3"> 23868 android.<wbr/>tonemap.<wbr/>mode 23869 </td> 23870 <td class="entry_type"> 23871 <span class="entry_type_name entry_type_name_enum">byte</span> 23872 23873 <span class="entry_type_visibility"> [public]</span> 23874 23875 23876 <span class="entry_type_hwlevel">[full] </span> 23877 23878 23879 23880 <ul class="entry_type_enum"> 23881 <li> 23882 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 23883 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 23884the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 23885<p>All color enhancement and tonemapping must be disabled,<wbr/> except 23886for applying the tonemapping curve specified by 23887<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 23888<p>Must not slow down frame rate relative to raw 23889sensor output.<wbr/></p></span> 23890 </li> 23891 <li> 23892 <span class="entry_type_enum_name">FAST</span> 23893 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 23894reducing frame rate compared to raw sensor output.<wbr/></p></span> 23895 </li> 23896 <li> 23897 <span class="entry_type_enum_name">HIGH_QUALITY</span> 23898 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 23899the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 23900 </li> 23901 <li> 23902 <span class="entry_type_enum_name">GAMMA_VALUE</span> 23903 <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform 23904tonemapping.<wbr/></p> 23905<p>All color enhancement and tonemapping must be disabled,<wbr/> except 23906for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 23907<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 23908 </li> 23909 <li> 23910 <span class="entry_type_enum_name">PRESET_CURVE</span> 23911 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 23912<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 23913<p>All color enhancement and tonemapping must be disabled,<wbr/> except 23914for applying the tonemapping curve specified by 23915<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 23916<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 23917 </li> 23918 </ul> 23919 23920 </td> <!-- entry_type --> 23921 23922 <td class="entry_description"> 23923 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 23924 </td> 23925 23926 <td class="entry_units"> 23927 </td> 23928 23929 <td class="entry_range"> 23930 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 23931 </td> 23932 23933 <td class="entry_tags"> 23934 </td> 23935 23936 </tr> 23937 <tr class="entries_header"> 23938 <th class="th_details" colspan="5">Details</th> 23939 </tr> 23940 <tr class="entry_cont"> 23941 <td class="entry_details" colspan="5"> 23942 <p>When switching to an application-defined contrast curve by setting 23943<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 23944per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 23945mapping from input high-bit-depth pixel value to the output 23946low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 23947and output may change depending on the camera pipeline,<wbr/> the values 23948are specified by normalized floating-point numbers.<wbr/></p> 23949<p>More-complex color mapping operations such as 3D color look-up 23950tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 23951transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23952CONTRAST_<wbr/>CURVE.<wbr/></p> 23953<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 23954emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 23955These values are always available,<wbr/> and as close as possible to the 23956actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 23957<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 23958provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 23959roughly the same.<wbr/></p> 23960 </td> 23961 </tr> 23962 23963 23964 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23965 <!-- end of entry --> 23966 23967 23968 <tr class="entry" id="controls_android.tonemap.gamma"> 23969 <td class="entry_name 23970 " rowspan="3"> 23971 android.<wbr/>tonemap.<wbr/>gamma 23972 </td> 23973 <td class="entry_type"> 23974 <span class="entry_type_name">float</span> 23975 23976 <span class="entry_type_visibility"> [public]</span> 23977 23978 23979 23980 23981 23982 23983 </td> <!-- entry_type --> 23984 23985 <td class="entry_description"> 23986 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23987GAMMA_<wbr/>VALUE</p> 23988 </td> 23989 23990 <td class="entry_units"> 23991 </td> 23992 23993 <td class="entry_range"> 23994 </td> 23995 23996 <td class="entry_tags"> 23997 </td> 23998 23999 </tr> 24000 <tr class="entries_header"> 24001 <th class="th_details" colspan="5">Details</th> 24002 </tr> 24003 <tr class="entry_cont"> 24004 <td class="entry_details" colspan="5"> 24005 <p>The tonemap curve will be defined the following formula: 24006* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 24007where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 24008pow is the power function and gamma is the gamma value specified by this 24009key.<wbr/></p> 24010<p>The same curve will be applied to all color channels.<wbr/> The camera device 24011may clip the input gamma value to its supported range.<wbr/> The actual applied 24012value will be returned in capture result.<wbr/></p> 24013<p>The valid range of gamma value varies on different devices,<wbr/> but values 24014within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 24015 </td> 24016 </tr> 24017 24018 24019 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24020 <!-- end of entry --> 24021 24022 24023 <tr class="entry" id="controls_android.tonemap.presetCurve"> 24024 <td class="entry_name 24025 " rowspan="3"> 24026 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 24027 </td> 24028 <td class="entry_type"> 24029 <span class="entry_type_name entry_type_name_enum">byte</span> 24030 24031 <span class="entry_type_visibility"> [public]</span> 24032 24033 24034 24035 24036 24037 <ul class="entry_type_enum"> 24038 <li> 24039 <span class="entry_type_enum_name">SRGB</span> 24040 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 24041 </li> 24042 <li> 24043 <span class="entry_type_enum_name">REC709</span> 24044 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 24045 </li> 24046 </ul> 24047 24048 </td> <!-- entry_type --> 24049 24050 <td class="entry_description"> 24051 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24052PRESET_<wbr/>CURVE</p> 24053 </td> 24054 24055 <td class="entry_units"> 24056 </td> 24057 24058 <td class="entry_range"> 24059 </td> 24060 24061 <td class="entry_tags"> 24062 </td> 24063 24064 </tr> 24065 <tr class="entries_header"> 24066 <th class="th_details" colspan="5">Details</th> 24067 </tr> 24068 <tr class="entry_cont"> 24069 <td class="entry_details" colspan="5"> 24070 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 24071<p>sRGB (approximated by 16 control points):</p> 24072<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24073<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 24074<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 24075<p>Note that above figures show a 16 control points approximation of preset 24076curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 24077 </td> 24078 </tr> 24079 24080 24081 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24082 <!-- end of entry --> 24083 24084 24085 24086 <!-- end of kind --> 24087 </tbody> 24088 <tr><td colspan="6" class="kind">static</td></tr> 24089 24090 <thead class="entries_header"> 24091 <tr> 24092 <th class="th_name">Property Name</th> 24093 <th class="th_type">Type</th> 24094 <th class="th_description">Description</th> 24095 <th class="th_units">Units</th> 24096 <th class="th_range">Range</th> 24097 <th class="th_tags">Tags</th> 24098 </tr> 24099 </thead> 24100 24101 <tbody> 24102 24103 24104 24105 24106 24107 24108 24109 24110 24111 24112 <tr class="entry" id="static_android.tonemap.maxCurvePoints"> 24113 <td class="entry_name 24114 " rowspan="5"> 24115 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points 24116 </td> 24117 <td class="entry_type"> 24118 <span class="entry_type_name">int32</span> 24119 24120 <span class="entry_type_visibility"> [public]</span> 24121 24122 24123 <span class="entry_type_hwlevel">[full] </span> 24124 24125 24126 24127 24128 </td> <!-- entry_type --> 24129 24130 <td class="entry_description"> 24131 <p>Maximum number of supported points in the 24132tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 24133 </td> 24134 24135 <td class="entry_units"> 24136 </td> 24137 24138 <td class="entry_range"> 24139 </td> 24140 24141 <td class="entry_tags"> 24142 </td> 24143 24144 </tr> 24145 <tr class="entries_header"> 24146 <th class="th_details" colspan="5">Details</th> 24147 </tr> 24148 <tr class="entry_cont"> 24149 <td class="entry_details" colspan="5"> 24150 <p>If the actual number of points provided by the application (in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>*) is 24151less than this maximum,<wbr/> the camera device will resample the curve to its internal 24152representation,<wbr/> using linear interpolation.<wbr/></p> 24153<p>The output curves in the result metadata may have a different number 24154of points than the input curves,<wbr/> and will represent the actual 24155hardware curves used as closely as possible when linearly interpolated.<wbr/></p> 24156 </td> 24157 </tr> 24158 24159 <tr class="entries_header"> 24160 <th class="th_details" colspan="5">HAL Implementation Details</th> 24161 </tr> 24162 <tr class="entry_cont"> 24163 <td class="entry_details" colspan="5"> 24164 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p> 24165 </td> 24166 </tr> 24167 24168 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24169 <!-- end of entry --> 24170 24171 24172 <tr class="entry" id="static_android.tonemap.availableToneMapModes"> 24173 <td class="entry_name 24174 " rowspan="5"> 24175 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes 24176 </td> 24177 <td class="entry_type"> 24178 <span class="entry_type_name">byte</span> 24179 <span class="entry_type_container">x</span> 24180 24181 <span class="entry_type_array"> 24182 n 24183 </span> 24184 <span class="entry_type_visibility"> [public as enumList]</span> 24185 24186 24187 <span class="entry_type_hwlevel">[full] </span> 24188 24189 24190 <div class="entry_type_notes">list of enums</div> 24191 24192 24193 </td> <!-- entry_type --> 24194 24195 <td class="entry_description"> 24196 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera 24197device.<wbr/></p> 24198 </td> 24199 24200 <td class="entry_units"> 24201 </td> 24202 24203 <td class="entry_range"> 24204 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p> 24205 </td> 24206 24207 <td class="entry_tags"> 24208 </td> 24209 24210 </tr> 24211 <tr class="entries_header"> 24212 <th class="th_details" colspan="5">Details</th> 24213 </tr> 24214 <tr class="entry_cont"> 24215 <td class="entry_details" colspan="5"> 24216 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain 24217at least one of below mode combinations:</p> 24218<ul> 24219<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 24220<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 24221</ul> 24222<p>This includes all FULL level devices.<wbr/></p> 24223 </td> 24224 </tr> 24225 24226 <tr class="entries_header"> 24227 <th class="th_details" colspan="5">HAL Implementation Details</th> 24228 </tr> 24229 <tr class="entry_cont"> 24230 <td class="entry_details" colspan="5"> 24231 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available 24232on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 24233That is,<wbr/> if the highest quality implementation on the camera device does not slow down 24234capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 24235 </td> 24236 </tr> 24237 24238 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24239 <!-- end of entry --> 24240 24241 24242 24243 <!-- end of kind --> 24244 </tbody> 24245 <tr><td colspan="6" class="kind">dynamic</td></tr> 24246 24247 <thead class="entries_header"> 24248 <tr> 24249 <th class="th_name">Property Name</th> 24250 <th class="th_type">Type</th> 24251 <th class="th_description">Description</th> 24252 <th class="th_units">Units</th> 24253 <th class="th_range">Range</th> 24254 <th class="th_tags">Tags</th> 24255 </tr> 24256 </thead> 24257 24258 <tbody> 24259 24260 24261 24262 24263 24264 24265 24266 24267 24268 24269 <tr class="entry" id="dynamic_android.tonemap.curveBlue"> 24270 <td class="entry_name 24271 " rowspan="3"> 24272 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 24273 </td> 24274 <td class="entry_type"> 24275 <span class="entry_type_name">float</span> 24276 <span class="entry_type_container">x</span> 24277 24278 <span class="entry_type_array"> 24279 n x 2 24280 </span> 24281 <span class="entry_type_visibility"> [hidden]</span> 24282 24283 24284 <span class="entry_type_hwlevel">[full] </span> 24285 24286 24287 <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div> 24288 24289 24290 </td> <!-- entry_type --> 24291 24292 <td class="entry_description"> 24293 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 24294channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24295CONTRAST_<wbr/>CURVE.<wbr/></p> 24296 </td> 24297 24298 <td class="entry_units"> 24299 </td> 24300 24301 <td class="entry_range"> 24302 </td> 24303 24304 <td class="entry_tags"> 24305 </td> 24306 24307 </tr> 24308 <tr class="entries_header"> 24309 <th class="th_details" colspan="5">Details</th> 24310 </tr> 24311 <tr class="entry_cont"> 24312 <td class="entry_details" colspan="5"> 24313 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 24314 </td> 24315 </tr> 24316 24317 24318 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24319 <!-- end of entry --> 24320 24321 24322 <tr class="entry" id="dynamic_android.tonemap.curveGreen"> 24323 <td class="entry_name 24324 " rowspan="3"> 24325 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 24326 </td> 24327 <td class="entry_type"> 24328 <span class="entry_type_name">float</span> 24329 <span class="entry_type_container">x</span> 24330 24331 <span class="entry_type_array"> 24332 n x 2 24333 </span> 24334 <span class="entry_type_visibility"> [hidden]</span> 24335 24336 24337 <span class="entry_type_hwlevel">[full] </span> 24338 24339 24340 <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div> 24341 24342 24343 </td> <!-- entry_type --> 24344 24345 <td class="entry_description"> 24346 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 24347channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24348CONTRAST_<wbr/>CURVE.<wbr/></p> 24349 </td> 24350 24351 <td class="entry_units"> 24352 </td> 24353 24354 <td class="entry_range"> 24355 </td> 24356 24357 <td class="entry_tags"> 24358 </td> 24359 24360 </tr> 24361 <tr class="entries_header"> 24362 <th class="th_details" colspan="5">Details</th> 24363 </tr> 24364 <tr class="entry_cont"> 24365 <td class="entry_details" colspan="5"> 24366 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 24367 </td> 24368 </tr> 24369 24370 24371 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24372 <!-- end of entry --> 24373 24374 24375 <tr class="entry" id="dynamic_android.tonemap.curveRed"> 24376 <td class="entry_name 24377 " rowspan="5"> 24378 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 24379 </td> 24380 <td class="entry_type"> 24381 <span class="entry_type_name">float</span> 24382 <span class="entry_type_container">x</span> 24383 24384 <span class="entry_type_array"> 24385 n x 2 24386 </span> 24387 <span class="entry_type_visibility"> [hidden]</span> 24388 24389 24390 <span class="entry_type_hwlevel">[full] </span> 24391 24392 24393 <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div> 24394 24395 24396 </td> <!-- entry_type --> 24397 24398 <td class="entry_description"> 24399 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 24400channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24401CONTRAST_<wbr/>CURVE.<wbr/></p> 24402 </td> 24403 24404 <td class="entry_units"> 24405 </td> 24406 24407 <td class="entry_range"> 24408 <p>0-1 on both input and output coordinates,<wbr/> normalized 24409as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 24410 </td> 24411 24412 <td class="entry_tags"> 24413 </td> 24414 24415 </tr> 24416 <tr class="entries_header"> 24417 <th class="th_details" colspan="5">Details</th> 24418 </tr> 24419 <tr class="entry_cont"> 24420 <td class="entry_details" colspan="5"> 24421 <p>Each channel's curve is defined by an array of control points:</p> 24422<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 24423 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 244242 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 24425<p>These are sorted in order of increasing <code>Pin</code>; it is 24426required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 24427define a complete mapping.<wbr/> For input values between control points,<wbr/> 24428the camera device must linearly interpolate between the control 24429points.<wbr/></p> 24430<p>Each curve can have an independent number of points,<wbr/> and the number 24431of points can be less than max (that is,<wbr/> the request doesn't have to 24432always provide a curve with number of points equivalent to 24433<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 24434<p>A few examples,<wbr/> and their corresponding graphical mappings; these 24435only specify the red channel and the precision is limited to 4 24436digits,<wbr/> for conciseness.<wbr/></p> 24437<p>Linear mapping:</p> 24438<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 0,<wbr/> 0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0 ] 24439</code></pre> 24440<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 24441<p>Invert mapping:</p> 24442<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 0 ] 24443</code></pre> 24444<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 24445<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 24446<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 24447 0.<wbr/>0000,<wbr/> 0.<wbr/>0000,<wbr/> 0.<wbr/>0667,<wbr/> 0.<wbr/>2920,<wbr/> 0.<wbr/>1333,<wbr/> 0.<wbr/>4002,<wbr/> 0.<wbr/>2000,<wbr/> 0.<wbr/>4812,<wbr/> 24448 0.<wbr/>2667,<wbr/> 0.<wbr/>5484,<wbr/> 0.<wbr/>3333,<wbr/> 0.<wbr/>6069,<wbr/> 0.<wbr/>4000,<wbr/> 0.<wbr/>6594,<wbr/> 0.<wbr/>4667,<wbr/> 0.<wbr/>7072,<wbr/> 24449 0.<wbr/>5333,<wbr/> 0.<wbr/>7515,<wbr/> 0.<wbr/>6000,<wbr/> 0.<wbr/>7928,<wbr/> 0.<wbr/>6667,<wbr/> 0.<wbr/>8317,<wbr/> 0.<wbr/>7333,<wbr/> 0.<wbr/>8685,<wbr/> 24450 0.<wbr/>8000,<wbr/> 0.<wbr/>9035,<wbr/> 0.<wbr/>8667,<wbr/> 0.<wbr/>9370,<wbr/> 0.<wbr/>9333,<wbr/> 0.<wbr/>9691,<wbr/> 1.<wbr/>0000,<wbr/> 1.<wbr/>0000 ] 24451</code></pre> 24452<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 24453<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 24454<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 24455 0.<wbr/>0000,<wbr/> 0.<wbr/>0000,<wbr/> 0.<wbr/>0667,<wbr/> 0.<wbr/>2864,<wbr/> 0.<wbr/>1333,<wbr/> 0.<wbr/>4007,<wbr/> 0.<wbr/>2000,<wbr/> 0.<wbr/>4845,<wbr/> 24456 0.<wbr/>2667,<wbr/> 0.<wbr/>5532,<wbr/> 0.<wbr/>3333,<wbr/> 0.<wbr/>6125,<wbr/> 0.<wbr/>4000,<wbr/> 0.<wbr/>6652,<wbr/> 0.<wbr/>4667,<wbr/> 0.<wbr/>7130,<wbr/> 24457 0.<wbr/>5333,<wbr/> 0.<wbr/>7569,<wbr/> 0.<wbr/>6000,<wbr/> 0.<wbr/>7977,<wbr/> 0.<wbr/>6667,<wbr/> 0.<wbr/>8360,<wbr/> 0.<wbr/>7333,<wbr/> 0.<wbr/>8721,<wbr/> 24458 0.<wbr/>8000,<wbr/> 0.<wbr/>9063,<wbr/> 0.<wbr/>8667,<wbr/> 0.<wbr/>9389,<wbr/> 0.<wbr/>9333,<wbr/> 0.<wbr/>9701,<wbr/> 1.<wbr/>0000,<wbr/> 1.<wbr/>0000 ] 24459</code></pre> 24460<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24461 </td> 24462 </tr> 24463 24464 <tr class="entries_header"> 24465 <th class="th_details" colspan="5">HAL Implementation Details</th> 24466 </tr> 24467 <tr class="entry_cont"> 24468 <td class="entry_details" colspan="5"> 24469 <p>For good quality of mapping,<wbr/> at least 128 control points are 24470preferred.<wbr/></p> 24471<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 24472control points used as are available.<wbr/></p> 24473 </td> 24474 </tr> 24475 24476 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24477 <!-- end of entry --> 24478 24479 24480 <tr class="entry" id="dynamic_android.tonemap.curve"> 24481 <td class="entry_name 24482 " rowspan="5"> 24483 android.<wbr/>tonemap.<wbr/>curve 24484 </td> 24485 <td class="entry_type"> 24486 <span class="entry_type_name">float</span> 24487 24488 <span class="entry_type_visibility"> [public as tonemapCurve]</span> 24489 24490 <span class="entry_type_synthetic">[synthetic] </span> 24491 24492 <span class="entry_type_hwlevel">[full] </span> 24493 24494 24495 24496 24497 </td> <!-- entry_type --> 24498 24499 <td class="entry_description"> 24500 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 24501is CONTRAST_<wbr/>CURVE.<wbr/></p> 24502 </td> 24503 24504 <td class="entry_units"> 24505 </td> 24506 24507 <td class="entry_range"> 24508 </td> 24509 24510 <td class="entry_tags"> 24511 </td> 24512 24513 </tr> 24514 <tr class="entries_header"> 24515 <th class="th_details" colspan="5">Details</th> 24516 </tr> 24517 <tr class="entry_cont"> 24518 <td class="entry_details" colspan="5"> 24519 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 24520channels respectively.<wbr/> The following example uses the red channel as an 24521example.<wbr/> The same logic applies to green and blue channel.<wbr/> 24522Each channel's curve is defined by an array of control points:</p> 24523<pre><code>curveRed = 24524 [ P0(in,<wbr/> out),<wbr/> P1(in,<wbr/> out),<wbr/> P2(in,<wbr/> out),<wbr/> P3(in,<wbr/> out),<wbr/> ...,<wbr/> PN(in,<wbr/> out) ] 245252 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 24526<p>These are sorted in order of increasing <code>Pin</code>; it is always 24527guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 24528define a complete mapping.<wbr/> For input values between control points,<wbr/> 24529the camera device must linearly interpolate between the control 24530points.<wbr/></p> 24531<p>Each curve can have an independent number of points,<wbr/> and the number 24532of points can be less than max (that is,<wbr/> the request doesn't have to 24533always provide a curve with number of points equivalent to 24534<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 24535<p>A few examples,<wbr/> and their corresponding graphical mappings; these 24536only specify the red channel and the precision is limited to 4 24537digits,<wbr/> for conciseness.<wbr/></p> 24538<p>Linear mapping:</p> 24539<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 24540</code></pre> 24541<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 24542<p>Invert mapping:</p> 24543<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 24544</code></pre> 24545<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 24546<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 24547<pre><code>curveRed = [ 24548 (0.<wbr/>0000,<wbr/> 0.<wbr/>0000),<wbr/> (0.<wbr/>0667,<wbr/> 0.<wbr/>2920),<wbr/> (0.<wbr/>1333,<wbr/> 0.<wbr/>4002),<wbr/> (0.<wbr/>2000,<wbr/> 0.<wbr/>4812),<wbr/> 24549 (0.<wbr/>2667,<wbr/> 0.<wbr/>5484),<wbr/> (0.<wbr/>3333,<wbr/> 0.<wbr/>6069),<wbr/> (0.<wbr/>4000,<wbr/> 0.<wbr/>6594),<wbr/> (0.<wbr/>4667,<wbr/> 0.<wbr/>7072),<wbr/> 24550 (0.<wbr/>5333,<wbr/> 0.<wbr/>7515),<wbr/> (0.<wbr/>6000,<wbr/> 0.<wbr/>7928),<wbr/> (0.<wbr/>6667,<wbr/> 0.<wbr/>8317),<wbr/> (0.<wbr/>7333,<wbr/> 0.<wbr/>8685),<wbr/> 24551 (0.<wbr/>8000,<wbr/> 0.<wbr/>9035),<wbr/> (0.<wbr/>8667,<wbr/> 0.<wbr/>9370),<wbr/> (0.<wbr/>9333,<wbr/> 0.<wbr/>9691),<wbr/> (1.<wbr/>0000,<wbr/> 1.<wbr/>0000) ] 24552</code></pre> 24553<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 24554<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 24555<pre><code>curveRed = [ 24556 (0.<wbr/>0000,<wbr/> 0.<wbr/>0000),<wbr/> (0.<wbr/>0667,<wbr/> 0.<wbr/>2864),<wbr/> (0.<wbr/>1333,<wbr/> 0.<wbr/>4007),<wbr/> (0.<wbr/>2000,<wbr/> 0.<wbr/>4845),<wbr/> 24557 (0.<wbr/>2667,<wbr/> 0.<wbr/>5532),<wbr/> (0.<wbr/>3333,<wbr/> 0.<wbr/>6125),<wbr/> (0.<wbr/>4000,<wbr/> 0.<wbr/>6652),<wbr/> (0.<wbr/>4667,<wbr/> 0.<wbr/>7130),<wbr/> 24558 (0.<wbr/>5333,<wbr/> 0.<wbr/>7569),<wbr/> (0.<wbr/>6000,<wbr/> 0.<wbr/>7977),<wbr/> (0.<wbr/>6667,<wbr/> 0.<wbr/>8360),<wbr/> (0.<wbr/>7333,<wbr/> 0.<wbr/>8721),<wbr/> 24559 (0.<wbr/>8000,<wbr/> 0.<wbr/>9063),<wbr/> (0.<wbr/>8667,<wbr/> 0.<wbr/>9389),<wbr/> (0.<wbr/>9333,<wbr/> 0.<wbr/>9701),<wbr/> (1.<wbr/>0000,<wbr/> 1.<wbr/>0000) ] 24560</code></pre> 24561<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24562 </td> 24563 </tr> 24564 24565 <tr class="entries_header"> 24566 <th class="th_details" colspan="5">HAL Implementation Details</th> 24567 </tr> 24568 <tr class="entry_cont"> 24569 <td class="entry_details" colspan="5"> 24570 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 24571curveBlue entries.<wbr/></p> 24572 </td> 24573 </tr> 24574 24575 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24576 <!-- end of entry --> 24577 24578 24579 <tr class="entry" id="dynamic_android.tonemap.mode"> 24580 <td class="entry_name 24581 " rowspan="3"> 24582 android.<wbr/>tonemap.<wbr/>mode 24583 </td> 24584 <td class="entry_type"> 24585 <span class="entry_type_name entry_type_name_enum">byte</span> 24586 24587 <span class="entry_type_visibility"> [public]</span> 24588 24589 24590 <span class="entry_type_hwlevel">[full] </span> 24591 24592 24593 24594 <ul class="entry_type_enum"> 24595 <li> 24596 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 24597 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 24598the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 24599<p>All color enhancement and tonemapping must be disabled,<wbr/> except 24600for applying the tonemapping curve specified by 24601<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 24602<p>Must not slow down frame rate relative to raw 24603sensor output.<wbr/></p></span> 24604 </li> 24605 <li> 24606 <span class="entry_type_enum_name">FAST</span> 24607 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 24608reducing frame rate compared to raw sensor output.<wbr/></p></span> 24609 </li> 24610 <li> 24611 <span class="entry_type_enum_name">HIGH_QUALITY</span> 24612 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 24613the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 24614 </li> 24615 <li> 24616 <span class="entry_type_enum_name">GAMMA_VALUE</span> 24617 <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform 24618tonemapping.<wbr/></p> 24619<p>All color enhancement and tonemapping must be disabled,<wbr/> except 24620for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 24621<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 24622 </li> 24623 <li> 24624 <span class="entry_type_enum_name">PRESET_CURVE</span> 24625 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 24626<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 24627<p>All color enhancement and tonemapping must be disabled,<wbr/> except 24628for applying the tonemapping curve specified by 24629<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 24630<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 24631 </li> 24632 </ul> 24633 24634 </td> <!-- entry_type --> 24635 24636 <td class="entry_description"> 24637 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 24638 </td> 24639 24640 <td class="entry_units"> 24641 </td> 24642 24643 <td class="entry_range"> 24644 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 24645 </td> 24646 24647 <td class="entry_tags"> 24648 </td> 24649 24650 </tr> 24651 <tr class="entries_header"> 24652 <th class="th_details" colspan="5">Details</th> 24653 </tr> 24654 <tr class="entry_cont"> 24655 <td class="entry_details" colspan="5"> 24656 <p>When switching to an application-defined contrast curve by setting 24657<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 24658per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 24659mapping from input high-bit-depth pixel value to the output 24660low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 24661and output may change depending on the camera pipeline,<wbr/> the values 24662are specified by normalized floating-point numbers.<wbr/></p> 24663<p>More-complex color mapping operations such as 3D color look-up 24664tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 24665transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24666CONTRAST_<wbr/>CURVE.<wbr/></p> 24667<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 24668emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 24669These values are always available,<wbr/> and as close as possible to the 24670actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 24671<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 24672provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 24673roughly the same.<wbr/></p> 24674 </td> 24675 </tr> 24676 24677 24678 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24679 <!-- end of entry --> 24680 24681 24682 <tr class="entry" id="dynamic_android.tonemap.gamma"> 24683 <td class="entry_name 24684 " rowspan="3"> 24685 android.<wbr/>tonemap.<wbr/>gamma 24686 </td> 24687 <td class="entry_type"> 24688 <span class="entry_type_name">float</span> 24689 24690 <span class="entry_type_visibility"> [public]</span> 24691 24692 24693 24694 24695 24696 24697 </td> <!-- entry_type --> 24698 24699 <td class="entry_description"> 24700 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24701GAMMA_<wbr/>VALUE</p> 24702 </td> 24703 24704 <td class="entry_units"> 24705 </td> 24706 24707 <td class="entry_range"> 24708 </td> 24709 24710 <td class="entry_tags"> 24711 </td> 24712 24713 </tr> 24714 <tr class="entries_header"> 24715 <th class="th_details" colspan="5">Details</th> 24716 </tr> 24717 <tr class="entry_cont"> 24718 <td class="entry_details" colspan="5"> 24719 <p>The tonemap curve will be defined the following formula: 24720* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 24721where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 24722pow is the power function and gamma is the gamma value specified by this 24723key.<wbr/></p> 24724<p>The same curve will be applied to all color channels.<wbr/> The camera device 24725may clip the input gamma value to its supported range.<wbr/> The actual applied 24726value will be returned in capture result.<wbr/></p> 24727<p>The valid range of gamma value varies on different devices,<wbr/> but values 24728within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 24729 </td> 24730 </tr> 24731 24732 24733 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24734 <!-- end of entry --> 24735 24736 24737 <tr class="entry" id="dynamic_android.tonemap.presetCurve"> 24738 <td class="entry_name 24739 " rowspan="3"> 24740 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 24741 </td> 24742 <td class="entry_type"> 24743 <span class="entry_type_name entry_type_name_enum">byte</span> 24744 24745 <span class="entry_type_visibility"> [public]</span> 24746 24747 24748 24749 24750 24751 <ul class="entry_type_enum"> 24752 <li> 24753 <span class="entry_type_enum_name">SRGB</span> 24754 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 24755 </li> 24756 <li> 24757 <span class="entry_type_enum_name">REC709</span> 24758 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 24759 </li> 24760 </ul> 24761 24762 </td> <!-- entry_type --> 24763 24764 <td class="entry_description"> 24765 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24766PRESET_<wbr/>CURVE</p> 24767 </td> 24768 24769 <td class="entry_units"> 24770 </td> 24771 24772 <td class="entry_range"> 24773 </td> 24774 24775 <td class="entry_tags"> 24776 </td> 24777 24778 </tr> 24779 <tr class="entries_header"> 24780 <th class="th_details" colspan="5">Details</th> 24781 </tr> 24782 <tr class="entry_cont"> 24783 <td class="entry_details" colspan="5"> 24784 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 24785<p>sRGB (approximated by 16 control points):</p> 24786<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24787<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 24788<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 24789<p>Note that above figures show a 16 control points approximation of preset 24790curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 24791 </td> 24792 </tr> 24793 24794 24795 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24796 <!-- end of entry --> 24797 24798 24799 24800 <!-- end of kind --> 24801 </tbody> 24802 24803 <!-- end of section --> 24804 <tr><td colspan="6" id="section_led" class="section">led</td></tr> 24805 24806 24807 <tr><td colspan="6" class="kind">controls</td></tr> 24808 24809 <thead class="entries_header"> 24810 <tr> 24811 <th class="th_name">Property Name</th> 24812 <th class="th_type">Type</th> 24813 <th class="th_description">Description</th> 24814 <th class="th_units">Units</th> 24815 <th class="th_range">Range</th> 24816 <th class="th_tags">Tags</th> 24817 </tr> 24818 </thead> 24819 24820 <tbody> 24821 24822 24823 24824 24825 24826 24827 24828 24829 24830 24831 <tr class="entry" id="controls_android.led.transmit"> 24832 <td class="entry_name 24833 " rowspan="1"> 24834 android.<wbr/>led.<wbr/>transmit 24835 </td> 24836 <td class="entry_type"> 24837 <span class="entry_type_name entry_type_name_enum">byte</span> 24838 24839 <span class="entry_type_visibility"> [hidden as boolean]</span> 24840 24841 24842 24843 24844 24845 <ul class="entry_type_enum"> 24846 <li> 24847 <span class="entry_type_enum_name">OFF</span> 24848 </li> 24849 <li> 24850 <span class="entry_type_enum_name">ON</span> 24851 </li> 24852 </ul> 24853 24854 </td> <!-- entry_type --> 24855 24856 <td class="entry_description"> 24857 <p>This LED is nominally used to indicate to the user 24858that the camera is powered on and may be streaming images back to the 24859Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 24860disable this when video is processed locally and not transmitted to 24861any untrusted applications.<wbr/></p> 24862<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 24863transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 24864data is stored locally on the device.<wbr/></p> 24865<p>The LED <em>may</em> be off if a trusted application is using the data that 24866doesn't violate the above rules.<wbr/></p> 24867 </td> 24868 24869 <td class="entry_units"> 24870 </td> 24871 24872 <td class="entry_range"> 24873 </td> 24874 24875 <td class="entry_tags"> 24876 </td> 24877 24878 </tr> 24879 24880 24881 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24882 <!-- end of entry --> 24883 24884 24885 24886 <!-- end of kind --> 24887 </tbody> 24888 <tr><td colspan="6" class="kind">dynamic</td></tr> 24889 24890 <thead class="entries_header"> 24891 <tr> 24892 <th class="th_name">Property Name</th> 24893 <th class="th_type">Type</th> 24894 <th class="th_description">Description</th> 24895 <th class="th_units">Units</th> 24896 <th class="th_range">Range</th> 24897 <th class="th_tags">Tags</th> 24898 </tr> 24899 </thead> 24900 24901 <tbody> 24902 24903 24904 24905 24906 24907 24908 24909 24910 24911 24912 <tr class="entry" id="dynamic_android.led.transmit"> 24913 <td class="entry_name 24914 " rowspan="1"> 24915 android.<wbr/>led.<wbr/>transmit 24916 </td> 24917 <td class="entry_type"> 24918 <span class="entry_type_name entry_type_name_enum">byte</span> 24919 24920 <span class="entry_type_visibility"> [hidden as boolean]</span> 24921 24922 24923 24924 24925 24926 <ul class="entry_type_enum"> 24927 <li> 24928 <span class="entry_type_enum_name">OFF</span> 24929 </li> 24930 <li> 24931 <span class="entry_type_enum_name">ON</span> 24932 </li> 24933 </ul> 24934 24935 </td> <!-- entry_type --> 24936 24937 <td class="entry_description"> 24938 <p>This LED is nominally used to indicate to the user 24939that the camera is powered on and may be streaming images back to the 24940Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 24941disable this when video is processed locally and not transmitted to 24942any untrusted applications.<wbr/></p> 24943<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 24944transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 24945data is stored locally on the device.<wbr/></p> 24946<p>The LED <em>may</em> be off if a trusted application is using the data that 24947doesn't violate the above rules.<wbr/></p> 24948 </td> 24949 24950 <td class="entry_units"> 24951 </td> 24952 24953 <td class="entry_range"> 24954 </td> 24955 24956 <td class="entry_tags"> 24957 </td> 24958 24959 </tr> 24960 24961 24962 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24963 <!-- end of entry --> 24964 24965 24966 24967 <!-- end of kind --> 24968 </tbody> 24969 <tr><td colspan="6" class="kind">static</td></tr> 24970 24971 <thead class="entries_header"> 24972 <tr> 24973 <th class="th_name">Property Name</th> 24974 <th class="th_type">Type</th> 24975 <th class="th_description">Description</th> 24976 <th class="th_units">Units</th> 24977 <th class="th_range">Range</th> 24978 <th class="th_tags">Tags</th> 24979 </tr> 24980 </thead> 24981 24982 <tbody> 24983 24984 24985 24986 24987 24988 24989 24990 24991 24992 24993 <tr class="entry" id="static_android.led.availableLeds"> 24994 <td class="entry_name 24995 " rowspan="1"> 24996 android.<wbr/>led.<wbr/>available<wbr/>Leds 24997 </td> 24998 <td class="entry_type"> 24999 <span class="entry_type_name entry_type_name_enum">byte</span> 25000 <span class="entry_type_container">x</span> 25001 25002 <span class="entry_type_array"> 25003 n 25004 </span> 25005 <span class="entry_type_visibility"> [hidden]</span> 25006 25007 25008 25009 25010 25011 <ul class="entry_type_enum"> 25012 <li> 25013 <span class="entry_type_enum_name">TRANSMIT</span> 25014 <span class="entry_type_enum_notes"><p><a href="#controls_android.led.transmit">android.<wbr/>led.<wbr/>transmit</a> control is used.<wbr/></p></span> 25015 </li> 25016 </ul> 25017 25018 </td> <!-- entry_type --> 25019 25020 <td class="entry_description"> 25021 <p>A list of camera LEDs that are available on this system.<wbr/></p> 25022 </td> 25023 25024 <td class="entry_units"> 25025 </td> 25026 25027 <td class="entry_range"> 25028 </td> 25029 25030 <td class="entry_tags"> 25031 </td> 25032 25033 </tr> 25034 25035 25036 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25037 <!-- end of entry --> 25038 25039 25040 25041 <!-- end of kind --> 25042 </tbody> 25043 25044 <!-- end of section --> 25045 <tr><td colspan="6" id="section_info" class="section">info</td></tr> 25046 25047 25048 <tr><td colspan="6" class="kind">static</td></tr> 25049 25050 <thead class="entries_header"> 25051 <tr> 25052 <th class="th_name">Property Name</th> 25053 <th class="th_type">Type</th> 25054 <th class="th_description">Description</th> 25055 <th class="th_units">Units</th> 25056 <th class="th_range">Range</th> 25057 <th class="th_tags">Tags</th> 25058 </tr> 25059 </thead> 25060 25061 <tbody> 25062 25063 25064 25065 25066 25067 25068 25069 25070 25071 25072 <tr class="entry" id="static_android.info.supportedHardwareLevel"> 25073 <td class="entry_name 25074 " rowspan="5"> 25075 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level 25076 </td> 25077 <td class="entry_type"> 25078 <span class="entry_type_name entry_type_name_enum">byte</span> 25079 25080 <span class="entry_type_visibility"> [public]</span> 25081 25082 25083 <span class="entry_type_hwlevel">[legacy] </span> 25084 25085 25086 25087 <ul class="entry_type_enum"> 25088 <li> 25089 <span class="entry_type_enum_name">LIMITED</span> 25090 <span class="entry_type_enum_notes"><p>This camera device has only limited capabilities.<wbr/></p></span> 25091 </li> 25092 <li> 25093 <span class="entry_type_enum_name">FULL</span> 25094 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p></span> 25095 </li> 25096 <li> 25097 <span class="entry_type_enum_name">LEGACY</span> 25098 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p></span> 25099 </li> 25100 </ul> 25101 25102 </td> <!-- entry_type --> 25103 25104 <td class="entry_description"> 25105 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p> 25106 </td> 25107 25108 <td class="entry_units"> 25109 </td> 25110 25111 <td class="entry_range"> 25112 </td> 25113 25114 <td class="entry_tags"> 25115 </td> 25116 25117 </tr> 25118 <tr class="entries_header"> 25119 <th class="th_details" colspan="5">Details</th> 25120 </tr> 25121 <tr class="entry_cont"> 25122 <td class="entry_details" colspan="5"> 25123 <p>Camera devices will come in three flavors: LEGACY,<wbr/> LIMITED and FULL.<wbr/></p> 25124<p>A FULL device will support below capabilities:</p> 25125<ul> 25126<li>BURST_<wbr/>CAPTURE capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains BURST_<wbr/>CAPTURE)</li> 25127<li>Per frame control (<a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> <code>==</code> PER_<wbr/>FRAME_<wbr/>CONTROL)</li> 25128<li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR)</li> 25129<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 25130 MANUAL_<wbr/>POST_<wbr/>PROCESSING)</li> 25131<li>At least 3 processed (but not stalling) format output streams 25132 (<a href="#static_android.request.maxNumOutputProc">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc</a> <code>>=</code> 3)</li> 25133<li>The required stream configurations defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a></li> 25134<li>The required exposure time range defined in <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 25135<li>The required maxFrameDuration defined in <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> 25136</ul> 25137<p>A LIMITED device may have some or none of the above characteristics.<wbr/> 25138To find out more refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 25139<p>Some features are not part of any particular hardware level or capability and must be 25140queried separately.<wbr/> These include:</p> 25141<ul> 25142<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li> 25143<li>Precision lens control (<a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a> <code>==</code> CALIBRATED)</li> 25144<li>Face detection (<a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a>)</li> 25145<li>Optical or electrical image stabilization 25146 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/> 25147 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li> 25148</ul> 25149<p>A LEGACY device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual 25150post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/></p> 25151<p>Each higher level supports everything the lower level supports 25152in this order: FULL <code>></code> LIMITED <code>></code> LEGACY.<wbr/></p> 25153<p>Note: 25154Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region 25155(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>==</code> FREEFORM); this requirement was relaxed in API level 23,<wbr/> 25156and FULL devices may only support CENTERED cropping.<wbr/></p> 25157 </td> 25158 </tr> 25159 25160 <tr class="entries_header"> 25161 <th class="th_details" colspan="5">HAL Implementation Details</th> 25162 </tr> 25163 <tr class="entry_cont"> 25164 <td class="entry_details" colspan="5"> 25165 <p>The camera 3 HAL device can implement one of two possible 25166operational modes; limited and full.<wbr/> Full support is 25167expected from new higher-end devices.<wbr/> Limited mode has 25168hardware requirements roughly in line with those for a 25169camera HAL device v1 implementation,<wbr/> and is expected from 25170older or inexpensive devices.<wbr/> Full is a strict superset of 25171limited,<wbr/> and they share the same essential operational flow.<wbr/></p> 25172<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p> 25173<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there 25174for backwards compatibility in the <code>android.<wbr/>hardware.<wbr/>camera2</code> 25175user-facing API only.<wbr/></p> 25176 </td> 25177 </tr> 25178 25179 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25180 <!-- end of entry --> 25181 25182 25183 25184 <!-- end of kind --> 25185 </tbody> 25186 25187 <!-- end of section --> 25188 <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr> 25189 25190 25191 <tr><td colspan="6" class="kind">controls</td></tr> 25192 25193 <thead class="entries_header"> 25194 <tr> 25195 <th class="th_name">Property Name</th> 25196 <th class="th_type">Type</th> 25197 <th class="th_description">Description</th> 25198 <th class="th_units">Units</th> 25199 <th class="th_range">Range</th> 25200 <th class="th_tags">Tags</th> 25201 </tr> 25202 </thead> 25203 25204 <tbody> 25205 25206 25207 25208 25209 25210 25211 25212 25213 25214 25215 <tr class="entry" id="controls_android.blackLevel.lock"> 25216 <td class="entry_name 25217 " rowspan="5"> 25218 android.<wbr/>black<wbr/>Level.<wbr/>lock 25219 </td> 25220 <td class="entry_type"> 25221 <span class="entry_type_name entry_type_name_enum">byte</span> 25222 25223 <span class="entry_type_visibility"> [public as boolean]</span> 25224 25225 25226 <span class="entry_type_hwlevel">[full] </span> 25227 25228 25229 25230 <ul class="entry_type_enum"> 25231 <li> 25232 <span class="entry_type_enum_name">OFF</span> 25233 </li> 25234 <li> 25235 <span class="entry_type_enum_name">ON</span> 25236 </li> 25237 </ul> 25238 25239 </td> <!-- entry_type --> 25240 25241 <td class="entry_description"> 25242 <p>Whether black-level compensation is locked 25243to its current values,<wbr/> or is free to vary.<wbr/></p> 25244 </td> 25245 25246 <td class="entry_units"> 25247 </td> 25248 25249 <td class="entry_range"> 25250 </td> 25251 25252 <td class="entry_tags"> 25253 <ul class="entry_tags"> 25254 <li><a href="#tag_HAL2">HAL2</a></li> 25255 </ul> 25256 </td> 25257 25258 </tr> 25259 <tr class="entries_header"> 25260 <th class="th_details" colspan="5">Details</th> 25261 </tr> 25262 <tr class="entry_cont"> 25263 <td class="entry_details" colspan="5"> 25264 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level 25265compensation will not change until the lock is set to 25266<code>false</code> (OFF).<wbr/></p> 25267<p>Since changes to certain capture parameters (such as 25268exposure time) may require resetting of black level 25269compensation,<wbr/> the camera device must report whether setting 25270the black level lock was successful in the output result 25271metadata.<wbr/></p> 25272<p>For example,<wbr/> if a sequence of requests is as follows:</p> 25273<ul> 25274<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 25275<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 25276<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 25277<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25278<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25279<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25280</ul> 25281<p>And the exposure change in Request 4 requires the camera 25282device to reset the black level offsets,<wbr/> then the output 25283result metadata is expected to be:</p> 25284<ul> 25285<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 25286<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 25287<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 25288<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li> 25289<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25290<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25291</ul> 25292<p>This indicates to the application that on frame 4,<wbr/> black 25293levels were reset due to exposure value changes,<wbr/> and pixel 25294values may not be consistent across captures.<wbr/></p> 25295<p>The camera device will maintain the lock to the extent 25296possible,<wbr/> only overriding the lock to OFF when changes to 25297other request parameters require a black level recalculation 25298or reset.<wbr/></p> 25299 </td> 25300 </tr> 25301 25302 <tr class="entries_header"> 25303 <th class="th_details" colspan="5">HAL Implementation Details</th> 25304 </tr> 25305 <tr class="entry_cont"> 25306 <td class="entry_details" colspan="5"> 25307 <p>If for some reason black level locking is no longer possible 25308(for example,<wbr/> the analog gain has changed,<wbr/> which forces 25309black level offsets to be recalculated),<wbr/> then the HAL must 25310override this request (and it must report 'OFF' when this 25311does happen) until the next capture for which locking is 25312possible again.<wbr/></p> 25313 </td> 25314 </tr> 25315 25316 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25317 <!-- end of entry --> 25318 25319 25320 25321 <!-- end of kind --> 25322 </tbody> 25323 <tr><td colspan="6" class="kind">dynamic</td></tr> 25324 25325 <thead class="entries_header"> 25326 <tr> 25327 <th class="th_name">Property Name</th> 25328 <th class="th_type">Type</th> 25329 <th class="th_description">Description</th> 25330 <th class="th_units">Units</th> 25331 <th class="th_range">Range</th> 25332 <th class="th_tags">Tags</th> 25333 </tr> 25334 </thead> 25335 25336 <tbody> 25337 25338 25339 25340 25341 25342 25343 25344 25345 25346 25347 <tr class="entry" id="dynamic_android.blackLevel.lock"> 25348 <td class="entry_name 25349 " rowspan="5"> 25350 android.<wbr/>black<wbr/>Level.<wbr/>lock 25351 </td> 25352 <td class="entry_type"> 25353 <span class="entry_type_name entry_type_name_enum">byte</span> 25354 25355 <span class="entry_type_visibility"> [public as boolean]</span> 25356 25357 25358 <span class="entry_type_hwlevel">[full] </span> 25359 25360 25361 25362 <ul class="entry_type_enum"> 25363 <li> 25364 <span class="entry_type_enum_name">OFF</span> 25365 </li> 25366 <li> 25367 <span class="entry_type_enum_name">ON</span> 25368 </li> 25369 </ul> 25370 25371 </td> <!-- entry_type --> 25372 25373 <td class="entry_description"> 25374 <p>Whether black-level compensation is locked 25375to its current values,<wbr/> or is free to vary.<wbr/></p> 25376 </td> 25377 25378 <td class="entry_units"> 25379 </td> 25380 25381 <td class="entry_range"> 25382 </td> 25383 25384 <td class="entry_tags"> 25385 <ul class="entry_tags"> 25386 <li><a href="#tag_HAL2">HAL2</a></li> 25387 </ul> 25388 </td> 25389 25390 </tr> 25391 <tr class="entries_header"> 25392 <th class="th_details" colspan="5">Details</th> 25393 </tr> 25394 <tr class="entry_cont"> 25395 <td class="entry_details" colspan="5"> 25396 <p>Whether the black level offset was locked for this frame.<wbr/> Should be 25397ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless 25398a change in other capture settings forced the camera device to 25399perform a black level reset.<wbr/></p> 25400 </td> 25401 </tr> 25402 25403 <tr class="entries_header"> 25404 <th class="th_details" colspan="5">HAL Implementation Details</th> 25405 </tr> 25406 <tr class="entry_cont"> 25407 <td class="entry_details" colspan="5"> 25408 <p>If for some reason black level locking is no longer possible 25409(for example,<wbr/> the analog gain has changed,<wbr/> which forces 25410black level offsets to be recalculated),<wbr/> then the HAL must 25411override this request (and it must report 'OFF' when this 25412does happen) until the next capture for which locking is 25413possible again.<wbr/></p> 25414 </td> 25415 </tr> 25416 25417 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25418 <!-- end of entry --> 25419 25420 25421 25422 <!-- end of kind --> 25423 </tbody> 25424 25425 <!-- end of section --> 25426 <tr><td colspan="6" id="section_sync" class="section">sync</td></tr> 25427 25428 25429 <tr><td colspan="6" class="kind">dynamic</td></tr> 25430 25431 <thead class="entries_header"> 25432 <tr> 25433 <th class="th_name">Property Name</th> 25434 <th class="th_type">Type</th> 25435 <th class="th_description">Description</th> 25436 <th class="th_units">Units</th> 25437 <th class="th_range">Range</th> 25438 <th class="th_tags">Tags</th> 25439 </tr> 25440 </thead> 25441 25442 <tbody> 25443 25444 25445 25446 25447 25448 25449 25450 25451 25452 25453 <tr class="entry" id="dynamic_android.sync.frameNumber"> 25454 <td class="entry_name 25455 " rowspan="5"> 25456 android.<wbr/>sync.<wbr/>frame<wbr/>Number 25457 </td> 25458 <td class="entry_type"> 25459 <span class="entry_type_name entry_type_name_enum">int64</span> 25460 25461 <span class="entry_type_visibility"> [hidden]</span> 25462 25463 25464 <span class="entry_type_hwlevel">[legacy] </span> 25465 25466 25467 25468 <ul class="entry_type_enum"> 25469 <li> 25470 <span class="entry_type_enum_name">CONVERGING</span> 25471 <span class="entry_type_enum_value">-1</span> 25472 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p> 25473<p>Synchronization is in progress,<wbr/> and reading metadata from this 25474result may include a mix of data that have taken effect since the 25475last synchronization time.<wbr/></p> 25476<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/> 25477this value will update to the actual frame number frame number 25478the result is guaranteed to be synchronized to (as long as the 25479request settings remain constant).<wbr/></p></span> 25480 </li> 25481 <li> 25482 <span class="entry_type_enum_name">UNKNOWN</span> 25483 <span class="entry_type_enum_value">-2</span> 25484 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p> 25485<p>The result may have already converged,<wbr/> or it may be in 25486progress.<wbr/> Reading from this result may include some mix 25487of settings from past requests.<wbr/></p> 25488<p>After a settings change,<wbr/> the new settings will eventually all 25489take effect for the output buffers and results.<wbr/> However,<wbr/> this 25490value will not change when that happens.<wbr/> Altering settings 25491rapidly may provide outcomes using mixes of settings from recent 25492requests.<wbr/></p> 25493<p>This value is intended primarily for backwards compatibility with 25494the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span> 25495 </li> 25496 </ul> 25497 25498 </td> <!-- entry_type --> 25499 25500 <td class="entry_description"> 25501 <p>The frame number corresponding to the last request 25502with which the output result (metadata + buffers) has been fully 25503synchronized.<wbr/></p> 25504 </td> 25505 25506 <td class="entry_units"> 25507 </td> 25508 25509 <td class="entry_range"> 25510 <p>Either a non-negative value corresponding to a 25511<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p> 25512 </td> 25513 25514 <td class="entry_tags"> 25515 <ul class="entry_tags"> 25516 <li><a href="#tag_V1">V1</a></li> 25517 </ul> 25518 </td> 25519 25520 </tr> 25521 <tr class="entries_header"> 25522 <th class="th_details" colspan="5">Details</th> 25523 </tr> 25524 <tr class="entry_cont"> 25525 <td class="entry_details" colspan="5"> 25526 <p>When a request is submitted to the camera device,<wbr/> there is usually a 25527delay of several frames before the controls get applied.<wbr/> A camera 25528device may either choose to account for this delay by implementing a 25529pipeline and carefully submit well-timed atomic control updates,<wbr/> or 25530it may start streaming control changes that span over several frame 25531boundaries.<wbr/></p> 25532<p>In the latter case,<wbr/> whenever a request's settings change relative to 25533the previous submitted request,<wbr/> the full set of changes may take 25534multiple frame durations to fully take effect.<wbr/> Some settings may 25535take effect sooner (in less frame durations) than others.<wbr/></p> 25536<p>While a set of control changes are being propagated,<wbr/> this value 25537will be CONVERGING.<wbr/></p> 25538<p>Once it is fully known that a set of control changes have been 25539finished propagating,<wbr/> and the resulting updated control settings 25540have been read back by the camera device,<wbr/> this value will be set 25541to a non-negative frame number (corresponding to the request to 25542which the results have synchronized to).<wbr/></p> 25543<p>Older camera device implementations may not have a way to detect 25544when all camera controls have been applied,<wbr/> and will always set this 25545value to UNKNOWN.<wbr/></p> 25546<p>FULL capability devices will always have this value set to the 25547frame number of the request corresponding to this result.<wbr/></p> 25548<p><em>Further details</em>:</p> 25549<ul> 25550<li>Whenever a request differs from the last request,<wbr/> any future 25551results not yet returned may have this value set to CONVERGING (this 25552could include any in-progress captures not yet returned by the camera 25553device,<wbr/> for more details see pipeline considerations below).<wbr/></li> 25554<li>Submitting a series of multiple requests that differ from the 25555previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) 25556moves the new synchronization frame to the last non-repeating 25557request (using the smallest frame number from the contiguous list of 25558repeating requests).<wbr/></li> 25559<li>Submitting the same request repeatedly will not change this value 25560to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li> 25561<li>When this value changes to non-negative,<wbr/> that means that all of the 25562metadata controls from the request have been applied,<wbr/> all of the 25563metadata controls from the camera device have been read to the 25564updated values (into the result),<wbr/> and all of the graphics buffers 25565corresponding to this result are also synchronized to the request.<wbr/></li> 25566</ul> 25567<p><em>Pipeline considerations</em>:</p> 25568<p>Submitting a request with updated controls relative to the previously 25569submitted requests may also invalidate the synchronization state 25570of all the results corresponding to currently in-flight requests.<wbr/></p> 25571<p>In other words,<wbr/> results for this current request and up to 25572<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their 25573<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p> 25574 </td> 25575 </tr> 25576 25577 <tr class="entries_header"> 25578 <th class="th_details" colspan="5">HAL Implementation Details</th> 25579 </tr> 25580 <tr class="entry_cont"> 25581 <td class="entry_details" colspan="5"> 25582 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> 25583is also UNKNOWN.<wbr/></p> 25584<p>FULL capability devices should simply set this value to the 25585<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p> 25586 </td> 25587 </tr> 25588 25589 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25590 <!-- end of entry --> 25591 25592 25593 25594 <!-- end of kind --> 25595 </tbody> 25596 <tr><td colspan="6" class="kind">static</td></tr> 25597 25598 <thead class="entries_header"> 25599 <tr> 25600 <th class="th_name">Property Name</th> 25601 <th class="th_type">Type</th> 25602 <th class="th_description">Description</th> 25603 <th class="th_units">Units</th> 25604 <th class="th_range">Range</th> 25605 <th class="th_tags">Tags</th> 25606 </tr> 25607 </thead> 25608 25609 <tbody> 25610 25611 25612 25613 25614 25615 25616 25617 25618 25619 25620 <tr class="entry" id="static_android.sync.maxLatency"> 25621 <td class="entry_name 25622 " rowspan="5"> 25623 android.<wbr/>sync.<wbr/>max<wbr/>Latency 25624 </td> 25625 <td class="entry_type"> 25626 <span class="entry_type_name entry_type_name_enum">int32</span> 25627 25628 <span class="entry_type_visibility"> [public]</span> 25629 25630 25631 <span class="entry_type_hwlevel">[legacy] </span> 25632 25633 25634 25635 <ul class="entry_type_enum"> 25636 <li> 25637 <span class="entry_type_enum_name">PER_FRAME_CONTROL</span> 25638 <span class="entry_type_enum_value">0</span> 25639 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p> 25640<p>Changing controls over multiple requests one after another will 25641produce results that have those controls applied atomically 25642each frame.<wbr/></p> 25643<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span> 25644 </li> 25645 <li> 25646 <span class="entry_type_enum_name">UNKNOWN</span> 25647 <span class="entry_type_enum_value">-1</span> 25648 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set) 25649of the past requests applied to the camera settings.<wbr/></p> 25650<p>By submitting a series of identical requests,<wbr/> the camera device 25651will eventually have the camera settings applied,<wbr/> but it is 25652unknown when that exact point will be.<wbr/></p> 25653<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span> 25654 </li> 25655 </ul> 25656 25657 </td> <!-- entry_type --> 25658 25659 <td class="entry_description"> 25660 <p>The maximum number of frames that can occur after a request 25661(different than the previous) has been submitted,<wbr/> and before the 25662result's state becomes synchronized.<wbr/></p> 25663 </td> 25664 25665 <td class="entry_units"> 25666 Frame counts 25667 </td> 25668 25669 <td class="entry_range"> 25670 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p> 25671 </td> 25672 25673 <td class="entry_tags"> 25674 <ul class="entry_tags"> 25675 <li><a href="#tag_V1">V1</a></li> 25676 </ul> 25677 </td> 25678 25679 </tr> 25680 <tr class="entries_header"> 25681 <th class="th_details" colspan="5">Details</th> 25682 </tr> 25683 <tr class="entry_cont"> 25684 <td class="entry_details" colspan="5"> 25685 <p>This defines the maximum distance (in number of metadata results),<wbr/> 25686between the frame number of the request that has new controls to apply 25687and the frame number of the result that has all the controls applied.<wbr/></p> 25688<p>In other words this acts as an upper boundary for how many frames 25689must occur before the camera device knows for a fact that the new 25690submitted camera settings have been applied in outgoing frames.<wbr/></p> 25691 </td> 25692 </tr> 25693 25694 <tr class="entries_header"> 25695 <th class="th_details" colspan="5">HAL Implementation Details</th> 25696 </tr> 25697 <tr class="entry_cont"> 25698 <td class="entry_details" colspan="5"> 25699 <p>For example if maxLatency was 2,<wbr/></p> 25700<pre><code>initial request = X (repeating) 25701request1 = X 25702request2 = Y 25703request3 = Y 25704request4 = Y 25705 25706where requestN has frameNumber N,<wbr/> and the first of the repeating 25707initial request's has frameNumber F (and F < 1).<wbr/> 25708 25709initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 25710result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 25711result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 25712result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 25713result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } 25714 25715where resultN has frameNumber N.<wbr/> 25716</code></pre> 25717<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and 25718<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly 25719<code>4 - 2 = 2</code>.<wbr/></p> 25720<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of 25721<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or 25722<code>@link{android.<wbr/>hardware.<wbr/>camera2.<wbr/>Capture<wbr/>Result#get<wbr/>Frame<wbr/>Number}</code>.<wbr/></p> 25723<p>LIMITED devices are strongly encouraged to use a non-negative 25724value.<wbr/> If UNKNOWN is used here then app developers do not have a way 25725to know when sensor settings have been applied.<wbr/></p> 25726 </td> 25727 </tr> 25728 25729 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25730 <!-- end of entry --> 25731 25732 25733 25734 <!-- end of kind --> 25735 </tbody> 25736 25737 <!-- end of section --> 25738 <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr> 25739 25740 25741 <tr><td colspan="6" class="kind">controls</td></tr> 25742 25743 <thead class="entries_header"> 25744 <tr> 25745 <th class="th_name">Property Name</th> 25746 <th class="th_type">Type</th> 25747 <th class="th_description">Description</th> 25748 <th class="th_units">Units</th> 25749 <th class="th_range">Range</th> 25750 <th class="th_tags">Tags</th> 25751 </tr> 25752 </thead> 25753 25754 <tbody> 25755 25756 25757 25758 25759 25760 25761 25762 25763 25764 25765 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor"> 25766 <td class="entry_name 25767 " rowspan="3"> 25768 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 25769 </td> 25770 <td class="entry_type"> 25771 <span class="entry_type_name">float</span> 25772 25773 <span class="entry_type_visibility"> [public]</span> 25774 25775 25776 <span class="entry_type_hwlevel">[limited] </span> 25777 25778 25779 25780 25781 </td> <!-- entry_type --> 25782 25783 <td class="entry_description"> 25784 <p>The amount of exposure time increase factor applied to the original output 25785frame by the application processing before sending for reprocessing.<wbr/></p> 25786 </td> 25787 25788 <td class="entry_units"> 25789 Relative exposure time increase factor.<wbr/> 25790 </td> 25791 25792 <td class="entry_range"> 25793 <p>>= 1.<wbr/>0</p> 25794 </td> 25795 25796 <td class="entry_tags"> 25797 <ul class="entry_tags"> 25798 <li><a href="#tag_REPROC">REPROC</a></li> 25799 </ul> 25800 </td> 25801 25802 </tr> 25803 <tr class="entries_header"> 25804 <th class="th_details" colspan="5">Details</th> 25805 </tr> 25806 <tr class="entry_cont"> 25807 <td class="entry_details" colspan="5"> 25808 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 25809capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 25810<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 25811output frames to effectively reduce the noise to the same level as a frame that was 25812captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 25813images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 25814the camera device is that the amount of noise in the image would be approximately what 25815would be expected if the original capture parameters had been a sensitivity of 25816S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 25817than S and T respectively.<wbr/> If the captured images were processed by the application 25818before being sent for reprocessing,<wbr/> then the application may have used image processing 25819algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 25820application-processed images (input images).<wbr/> By using the effectiveExposureFactor 25821control,<wbr/> the application can communicate to the camera device the actual noise level 25822improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 25823device can select appropriate noise reduction and edge enhancement parameters to avoid 25824excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 25825enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 25826<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 25827multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 25828fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 25829square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 25830adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 25831produce the best quality images.<wbr/></p> 25832<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 25833buffer in a way that affects its effective exposure time.<wbr/></p> 25834<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 25835reduction reprocessing,<wbr/> it is only effective when <code><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> != OFF</code>.<wbr/> 25836Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 25837<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 25838 </td> 25839 </tr> 25840 25841 25842 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25843 <!-- end of entry --> 25844 25845 25846 25847 <!-- end of kind --> 25848 </tbody> 25849 <tr><td colspan="6" class="kind">dynamic</td></tr> 25850 25851 <thead class="entries_header"> 25852 <tr> 25853 <th class="th_name">Property Name</th> 25854 <th class="th_type">Type</th> 25855 <th class="th_description">Description</th> 25856 <th class="th_units">Units</th> 25857 <th class="th_range">Range</th> 25858 <th class="th_tags">Tags</th> 25859 </tr> 25860 </thead> 25861 25862 <tbody> 25863 25864 25865 25866 25867 25868 25869 25870 25871 25872 25873 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor"> 25874 <td class="entry_name 25875 " rowspan="3"> 25876 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 25877 </td> 25878 <td class="entry_type"> 25879 <span class="entry_type_name">float</span> 25880 25881 <span class="entry_type_visibility"> [public]</span> 25882 25883 25884 <span class="entry_type_hwlevel">[limited] </span> 25885 25886 25887 25888 25889 </td> <!-- entry_type --> 25890 25891 <td class="entry_description"> 25892 <p>The amount of exposure time increase factor applied to the original output 25893frame by the application processing before sending for reprocessing.<wbr/></p> 25894 </td> 25895 25896 <td class="entry_units"> 25897 Relative exposure time increase factor.<wbr/> 25898 </td> 25899 25900 <td class="entry_range"> 25901 <p>>= 1.<wbr/>0</p> 25902 </td> 25903 25904 <td class="entry_tags"> 25905 <ul class="entry_tags"> 25906 <li><a href="#tag_REPROC">REPROC</a></li> 25907 </ul> 25908 </td> 25909 25910 </tr> 25911 <tr class="entries_header"> 25912 <th class="th_details" colspan="5">Details</th> 25913 </tr> 25914 <tr class="entry_cont"> 25915 <td class="entry_details" colspan="5"> 25916 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 25917capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 25918<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 25919output frames to effectively reduce the noise to the same level as a frame that was 25920captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 25921images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 25922the camera device is that the amount of noise in the image would be approximately what 25923would be expected if the original capture parameters had been a sensitivity of 25924S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 25925than S and T respectively.<wbr/> If the captured images were processed by the application 25926before being sent for reprocessing,<wbr/> then the application may have used image processing 25927algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 25928application-processed images (input images).<wbr/> By using the effectiveExposureFactor 25929control,<wbr/> the application can communicate to the camera device the actual noise level 25930improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 25931device can select appropriate noise reduction and edge enhancement parameters to avoid 25932excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 25933enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 25934<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 25935multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 25936fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 25937square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 25938adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 25939produce the best quality images.<wbr/></p> 25940<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 25941buffer in a way that affects its effective exposure time.<wbr/></p> 25942<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 25943reduction reprocessing,<wbr/> it is only effective when <code><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> != OFF</code>.<wbr/> 25944Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 25945<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 25946 </td> 25947 </tr> 25948 25949 25950 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25951 <!-- end of entry --> 25952 25953 25954 25955 <!-- end of kind --> 25956 </tbody> 25957 <tr><td colspan="6" class="kind">static</td></tr> 25958 25959 <thead class="entries_header"> 25960 <tr> 25961 <th class="th_name">Property Name</th> 25962 <th class="th_type">Type</th> 25963 <th class="th_description">Description</th> 25964 <th class="th_units">Units</th> 25965 <th class="th_range">Range</th> 25966 <th class="th_tags">Tags</th> 25967 </tr> 25968 </thead> 25969 25970 <tbody> 25971 25972 25973 25974 25975 25976 25977 25978 25979 25980 25981 <tr class="entry" id="static_android.reprocess.maxCaptureStall"> 25982 <td class="entry_name 25983 " rowspan="3"> 25984 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall 25985 </td> 25986 <td class="entry_type"> 25987 <span class="entry_type_name">int32</span> 25988 25989 <span class="entry_type_visibility"> [public]</span> 25990 25991 25992 <span class="entry_type_hwlevel">[limited] </span> 25993 25994 25995 25996 25997 </td> <!-- entry_type --> 25998 25999 <td class="entry_description"> 26000 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a 26001reprocess capture request.<wbr/></p> 26002 </td> 26003 26004 <td class="entry_units"> 26005 Number of frames.<wbr/> 26006 </td> 26007 26008 <td class="entry_range"> 26009 <p><= 4</p> 26010 </td> 26011 26012 <td class="entry_tags"> 26013 <ul class="entry_tags"> 26014 <li><a href="#tag_REPROC">REPROC</a></li> 26015 </ul> 26016 </td> 26017 26018 </tr> 26019 <tr class="entries_header"> 26020 <th class="th_details" colspan="5">Details</th> 26021 </tr> 26022 <tr class="entry_cont"> 26023 <td class="entry_details" colspan="5"> 26024 <p>The key describes the maximal interference that one reprocess (input) request 26025can introduce to the camera simultaneous streaming of regular (output) capture 26026requests,<wbr/> including repeating requests.<wbr/></p> 26027<p>When a reprocessing capture request is submitted while a camera output repeating request 26028(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture 26029pipeline for at least one frame duration so that the camera device is unable to process 26030the following capture request in time for the next sensor start of exposure boundary.<wbr/> 26031When this happens,<wbr/> the application may observe a capture time gap (longer than one frame 26032duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview 26033glitch if the repeating request output targets include a preview surface.<wbr/> This key gives 26034the worst-case number of frame stall introduced by one reprocess request with any kind of 26035formats/<wbr/>sizes combination.<wbr/></p> 26036<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the 26037ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p> 26038<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing ( 26039i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or 26040YUV_<wbr/>REPROCESSING).<wbr/></p> 26041 </td> 26042 </tr> 26043 26044 26045 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26046 <!-- end of entry --> 26047 26048 26049 26050 <!-- end of kind --> 26051 </tbody> 26052 26053 <!-- end of section --> 26054 <tr><td colspan="6" id="section_depth" class="section">depth</td></tr> 26055 26056 26057 <tr><td colspan="6" class="kind">static</td></tr> 26058 26059 <thead class="entries_header"> 26060 <tr> 26061 <th class="th_name">Property Name</th> 26062 <th class="th_type">Type</th> 26063 <th class="th_description">Description</th> 26064 <th class="th_units">Units</th> 26065 <th class="th_range">Range</th> 26066 <th class="th_tags">Tags</th> 26067 </tr> 26068 </thead> 26069 26070 <tbody> 26071 26072 26073 26074 26075 26076 26077 26078 26079 26080 26081 <tr class="entry" id="static_android.depth.maxDepthSamples"> 26082 <td class="entry_name 26083 " rowspan="3"> 26084 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples 26085 </td> 26086 <td class="entry_type"> 26087 <span class="entry_type_name">int32</span> 26088 26089 <span class="entry_type_visibility"> [system]</span> 26090 26091 26092 <span class="entry_type_hwlevel">[limited] </span> 26093 26094 26095 26096 26097 </td> <!-- entry_type --> 26098 26099 <td class="entry_description"> 26100 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p> 26101 </td> 26102 26103 <td class="entry_units"> 26104 </td> 26105 26106 <td class="entry_range"> 26107 </td> 26108 26109 <td class="entry_tags"> 26110 <ul class="entry_tags"> 26111 <li><a href="#tag_DEPTH">DEPTH</a></li> 26112 </ul> 26113 </td> 26114 26115 </tr> 26116 <tr class="entries_header"> 26117 <th class="th_details" colspan="5">Details</th> 26118 </tr> 26119 <tr class="entry_cont"> 26120 <td class="entry_details" colspan="5"> 26121 <p>If a camera device supports outputting depth range data in the form of a depth point 26122cloud (<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH_POINT_CLOUD">Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD</a>),<wbr/> this is the maximum 26123number of points an output buffer may contain.<wbr/></p> 26124<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/> 26125If output in the depth point cloud format is not supported,<wbr/> this entry will 26126not be defined.<wbr/></p> 26127 </td> 26128 </tr> 26129 26130 26131 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26132 <!-- end of entry --> 26133 26134 26135 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations"> 26136 <td class="entry_name 26137 " rowspan="3"> 26138 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations 26139 </td> 26140 <td class="entry_type"> 26141 <span class="entry_type_name entry_type_name_enum">int32</span> 26142 <span class="entry_type_container">x</span> 26143 26144 <span class="entry_type_array"> 26145 n x 4 26146 </span> 26147 <span class="entry_type_visibility"> [hidden as streamConfiguration]</span> 26148 26149 26150 <span class="entry_type_hwlevel">[limited] </span> 26151 26152 26153 26154 <ul class="entry_type_enum"> 26155 <li> 26156 <span class="entry_type_enum_name">OUTPUT</span> 26157 </li> 26158 <li> 26159 <span class="entry_type_enum_name">INPUT</span> 26160 </li> 26161 </ul> 26162 26163 </td> <!-- entry_type --> 26164 26165 <td class="entry_description"> 26166 <p>The available depth dataspace stream 26167configurations that this camera device supports 26168(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 26169 </td> 26170 26171 <td class="entry_units"> 26172 </td> 26173 26174 <td class="entry_range"> 26175 </td> 26176 26177 <td class="entry_tags"> 26178 <ul class="entry_tags"> 26179 <li><a href="#tag_DEPTH">DEPTH</a></li> 26180 </ul> 26181 </td> 26182 26183 </tr> 26184 <tr class="entries_header"> 26185 <th class="th_details" colspan="5">Details</th> 26186 </tr> 26187 <tr class="entry_cont"> 26188 <td class="entry_details" colspan="5"> 26189 <p>These are output stream configurations for use with 26190dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are 26191listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 26192<p>Only devices that support depth output for at least 26193the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include 26194this entry.<wbr/></p> 26195<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB 26196sparse depth point cloud must report a single entry for 26197the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/> 26198<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to 26199the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p> 26200 </td> 26201 </tr> 26202 26203 26204 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26205 <!-- end of entry --> 26206 26207 26208 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations"> 26209 <td class="entry_name 26210 " rowspan="3"> 26211 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations 26212 </td> 26213 <td class="entry_type"> 26214 <span class="entry_type_name">int64</span> 26215 <span class="entry_type_container">x</span> 26216 26217 <span class="entry_type_array"> 26218 4 x n 26219 </span> 26220 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 26221 26222 26223 <span class="entry_type_hwlevel">[limited] </span> 26224 26225 26226 26227 26228 </td> <!-- entry_type --> 26229 26230 <td class="entry_description"> 26231 <p>This lists the minimum frame duration for each 26232format/<wbr/>size combination for depth output formats.<wbr/></p> 26233 </td> 26234 26235 <td class="entry_units"> 26236 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 26237 </td> 26238 26239 <td class="entry_range"> 26240 </td> 26241 26242 <td class="entry_tags"> 26243 <ul class="entry_tags"> 26244 <li><a href="#tag_DEPTH">DEPTH</a></li> 26245 </ul> 26246 </td> 26247 26248 </tr> 26249 <tr class="entries_header"> 26250 <th class="th_details" colspan="5">Details</th> 26251 </tr> 26252 <tr class="entry_cont"> 26253 <td class="entry_details" colspan="5"> 26254 <p>This should correspond to the frame duration when only that 26255stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 26256set to either OFF or FAST.<wbr/></p> 26257<p>When multiple streams are used in a request,<wbr/> the minimum frame 26258duration will be max(individual stream min durations).<wbr/></p> 26259<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 26260is the same regardless of whether the stream is input or output.<wbr/></p> 26261<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 26262<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 26263calculating the max frame rate.<wbr/></p> 26264<p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p> 26265 </td> 26266 </tr> 26267 26268 26269 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26270 <!-- end of entry --> 26271 26272 26273 <tr class="entry" id="static_android.depth.availableDepthStallDurations"> 26274 <td class="entry_name 26275 " rowspan="3"> 26276 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations 26277 </td> 26278 <td class="entry_type"> 26279 <span class="entry_type_name">int64</span> 26280 <span class="entry_type_container">x</span> 26281 26282 <span class="entry_type_array"> 26283 4 x n 26284 </span> 26285 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 26286 26287 26288 <span class="entry_type_hwlevel">[limited] </span> 26289 26290 26291 26292 26293 </td> <!-- entry_type --> 26294 26295 <td class="entry_description"> 26296 <p>This lists the maximum stall duration for each 26297output format/<wbr/>size combination for depth streams.<wbr/></p> 26298 </td> 26299 26300 <td class="entry_units"> 26301 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 26302 </td> 26303 26304 <td class="entry_range"> 26305 </td> 26306 26307 <td class="entry_tags"> 26308 <ul class="entry_tags"> 26309 <li><a href="#tag_DEPTH">DEPTH</a></li> 26310 </ul> 26311 </td> 26312 26313 </tr> 26314 <tr class="entries_header"> 26315 <th class="th_details" colspan="5">Details</th> 26316 </tr> 26317 <tr class="entry_cont"> 26318 <td class="entry_details" colspan="5"> 26319 <p>A stall duration is how much extra time would get added 26320to the normal minimum frame duration for a repeating request 26321that has streams with non-zero stall.<wbr/></p> 26322<p>This functions similarly to 26323<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth 26324streams.<wbr/></p> 26325<p>All depth output stream formats may have a nonzero stall 26326duration.<wbr/></p> 26327 </td> 26328 </tr> 26329 26330 26331 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26332 <!-- end of entry --> 26333 26334 26335 <tr class="entry" id="static_android.depth.depthIsExclusive"> 26336 <td class="entry_name 26337 " rowspan="3"> 26338 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive 26339 </td> 26340 <td class="entry_type"> 26341 <span class="entry_type_name entry_type_name_enum">byte</span> 26342 26343 <span class="entry_type_visibility"> [public as boolean]</span> 26344 26345 26346 <span class="entry_type_hwlevel">[limited] </span> 26347 26348 26349 26350 <ul class="entry_type_enum"> 26351 <li> 26352 <span class="entry_type_enum_name">FALSE</span> 26353 </li> 26354 <li> 26355 <span class="entry_type_enum_name">TRUE</span> 26356 </li> 26357 </ul> 26358 26359 </td> <!-- entry_type --> 26360 26361 <td class="entry_description"> 26362 <p>Indicates whether a capture request may target both a 26363DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as 26364YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p> 26365 </td> 26366 26367 <td class="entry_units"> 26368 </td> 26369 26370 <td class="entry_range"> 26371 </td> 26372 26373 <td class="entry_tags"> 26374 </td> 26375 26376 </tr> 26377 <tr class="entries_header"> 26378 <th class="th_details" colspan="5">Details</th> 26379 </tr> 26380 <tr class="entry_cont"> 26381 <td class="entry_details" colspan="5"> 26382 <p>If TRUE,<wbr/> including both depth and color outputs in a single 26383capture request is not supported.<wbr/> An application must interleave color 26384and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types 26385of output.<wbr/></p> 26386<p>Typically,<wbr/> this restriction exists on camera devices that 26387need to emit a specific pattern or wavelength of light to 26388measure depth values,<wbr/> which causes the color image to be 26389corrupted during depth measurement.<wbr/></p> 26390 </td> 26391 </tr> 26392 26393 26394 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26395 <!-- end of entry --> 26396 26397 26398 26399 <!-- end of kind --> 26400 </tbody> 26401 26402 <!-- end of section --> 26403<!-- </namespace> --> 26404 </table> 26405 26406 <div class="tags" id="tag_index"> 26407 <h2>Tags</h2> 26408 <ul> 26409 <li id="tag_BC">BC - 26410 Needed for backwards compatibility with old Java API 26411 26412 <ul class="tags_entries"> 26413 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li> 26414 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li> 26415 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li> 26416 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li> 26417 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li> 26418 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li> 26419 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li> 26420 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li> 26421 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li> 26422 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li> 26423 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li> 26424 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> 26425 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li> 26426 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li> 26427 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li> 26428 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li> 26429 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li> 26430 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li> 26431 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li> 26432 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li> 26433 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li> 26434 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li> 26435 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li> 26436 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li> 26437 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li> 26438 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li> 26439 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li> 26440 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li> 26441 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li> 26442 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li> 26443 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li> 26444 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li> 26445 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li> 26446 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li> 26447 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li> 26448 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li> 26449 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li> 26450 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li> 26451 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li> 26452 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li> 26453 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li> 26454 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li> 26455 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 26456 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 26457 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> 26458 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> 26459 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> 26460 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> 26461 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> 26462 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> 26463 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li> 26464 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li> 26465 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li> 26466 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li> 26467 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 26468 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 26469 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 26470 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li> 26471 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li> 26472 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li> 26473 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li> 26474 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li> 26475 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li> 26476 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li> 26477 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li> 26478 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li> 26479 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li> 26480 </ul> 26481 </li> <!-- tag_BC --> 26482 <li id="tag_V1">V1 - 26483 New features for first camera 2 release (API1) 26484 26485 <ul class="tags_entries"> 26486 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li> 26487 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li> 26488 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 26489 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 26490 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 26491 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 26492 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li> 26493 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li> 26494 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li> 26495 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 26496 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li> 26497 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li> 26498 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li> 26499 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 26500 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li> 26501 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li> 26502 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li> 26503 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li> 26504 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li> 26505 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 26506 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 26507 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li> 26508 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li> 26509 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li> 26510 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li> 26511 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> 26512 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li> 26513 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 26514 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li> 26515 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> 26516 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 26517 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li> 26518 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 26519 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li> 26520 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 26521 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 26522 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 26523 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li> 26524 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li> 26525 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 26526 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 26527 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li> 26528 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li> 26529 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li> 26530 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 26531 </ul> 26532 </li> <!-- tag_V1 --> 26533 <li id="tag_RAW">RAW - 26534 Needed for useful RAW image processing and DNG file support 26535 26536 <ul class="tags_entries"> 26537 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 26538 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 26539 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li> 26540 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li> 26541 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 26542 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li> 26543 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li> 26544 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> 26545 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li> 26546 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li> 26547 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li> 26548 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li> 26549 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li> 26550 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li> 26551 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li> 26552 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li> 26553 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li> 26554 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li> 26555 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li> 26556 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li> 26557 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li> 26558 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li> 26559 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 26560 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 26561 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 26562 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li> 26563 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 26564 </ul> 26565 </li> <!-- tag_RAW --> 26566 <li id="tag_HAL2">HAL2 - 26567 Entry is only used by camera device HAL 2.x 26568 26569 <ul class="tags_entries"> 26570 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li> 26571 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li> 26572 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li> 26573 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li> 26574 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li> 26575 </ul> 26576 </li> <!-- tag_HAL2 --> 26577 <li id="tag_FULL">FULL - 26578 Entry is required for full hardware level devices, and optional for other hardware levels 26579 26580 <ul class="tags_entries"> 26581 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 26582 </ul> 26583 </li> <!-- tag_FULL --> 26584 <li id="tag_DEPTH">DEPTH - 26585 Entry is required for the depth capability. 26586 26587 <ul class="tags_entries"> 26588 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li> 26589 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li> 26590 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li> 26591 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li> 26592 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li> 26593 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li> 26594 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li> 26595 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li> 26596 </ul> 26597 </li> <!-- tag_DEPTH --> 26598 <li id="tag_REPROC">REPROC - 26599 Entry is required for the YUV or PRIVATE reprocessing capability. 26600 26601 <ul class="tags_entries"> 26602 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 26603 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 26604 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 26605 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 26606 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li> 26607 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li> 26608 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li> 26609 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li> 26610 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 26611 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 26612 </ul> 26613 </li> <!-- tag_REPROC --> 26614 <li id="tag_FUTURE">FUTURE - 26615 Entry is under-specified and is not required for now. This is for book-keeping purpose, 26616 do not implement or use it, it may be revised for future. 26617 26618 <ul class="tags_entries"> 26619 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li> 26620 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li> 26621 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li> 26622 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li> 26623 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li> 26624 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li> 26625 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li> 26626 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li> 26627 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li> 26628 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li> 26629 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> 26630 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li> 26631 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li> 26632 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li> 26633 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li> 26634 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li> 26635 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li> 26636 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li> 26637 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li> 26638 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li> 26639 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li> 26640 </ul> 26641 </li> <!-- tag_FUTURE --> 26642 </ul> 26643 </div> 26644 26645 [ <a href="#">top</a> ] 26646 26647</body> 26648</html> 26649