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>This list will always include (30,<wbr/> 30).<wbr/></li> 4329<li>Also,<wbr/> for constant-framerate recording,<wbr/> for each normal 4330<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has 4331<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in 4332the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/> 4333<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is 4334supported by the device and has 4335<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will 4336always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></li> 4337<li>For preview streaming use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) where 4338<code>min</code> <= 15 and <code>max</code> >= 30.<wbr/></li> 4339</ul> 4340<p>For devices at the LIMITED level or above:</p> 4341<ul> 4342<li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) 4343and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the 4344maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li> 4345</ul> 4346 </td> 4347 </tr> 4348 4349 4350 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4351 <!-- end of entry --> 4352 4353 4354 <tr class="entry" id="static_android.control.aeCompensationRange"> 4355 <td class="entry_name 4356 " rowspan="1"> 4357 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range 4358 </td> 4359 <td class="entry_type"> 4360 <span class="entry_type_name">int32</span> 4361 <span class="entry_type_container">x</span> 4362 4363 <span class="entry_type_array"> 4364 2 4365 </span> 4366 <span class="entry_type_visibility"> [public as rangeInt]</span> 4367 4368 4369 <span class="entry_type_hwlevel">[legacy] </span> 4370 4371 4372 4373 4374 </td> <!-- entry_type --> 4375 4376 <td class="entry_description"> 4377 <p>Maximum and minimum exposure compensation values for 4378<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/> 4379that are supported by this camera device.<wbr/></p> 4380 </td> 4381 4382 <td class="entry_units"> 4383 </td> 4384 4385 <td class="entry_range"> 4386 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p> 4387<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure 4388compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p> 4389<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> 4390<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> 4391<p>LEGACY devices may support a smaller range than this.<wbr/></p> 4392 </td> 4393 4394 <td class="entry_tags"> 4395 <ul class="entry_tags"> 4396 <li><a href="#tag_BC">BC</a></li> 4397 </ul> 4398 </td> 4399 4400 </tr> 4401 4402 4403 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4404 <!-- end of entry --> 4405 4406 4407 <tr class="entry" id="static_android.control.aeCompensationStep"> 4408 <td class="entry_name 4409 " rowspan="5"> 4410 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step 4411 </td> 4412 <td class="entry_type"> 4413 <span class="entry_type_name">rational</span> 4414 4415 <span class="entry_type_visibility"> [public]</span> 4416 4417 4418 <span class="entry_type_hwlevel">[legacy] </span> 4419 4420 4421 4422 4423 </td> <!-- entry_type --> 4424 4425 <td class="entry_description"> 4426 <p>Smallest step by which the exposure compensation 4427can be changed.<wbr/></p> 4428 </td> 4429 4430 <td class="entry_units"> 4431 Exposure Value (EV) 4432 </td> 4433 4434 <td class="entry_range"> 4435 </td> 4436 4437 <td class="entry_tags"> 4438 <ul class="entry_tags"> 4439 <li><a href="#tag_BC">BC</a></li> 4440 </ul> 4441 </td> 4442 4443 </tr> 4444 <tr class="entries_header"> 4445 <th class="th_details" colspan="5">Details</th> 4446 </tr> 4447 <tr class="entry_cont"> 4448 <td class="entry_details" colspan="5"> 4449 <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 4450a 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 4451that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p> 4452<p>One unit of EV compensation changes the brightness of the captured image by a factor 4453of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p> 4454 </td> 4455 </tr> 4456 4457 <tr class="entries_header"> 4458 <th class="th_details" colspan="5">HAL Implementation Details</th> 4459 </tr> 4460 <tr class="entry_cont"> 4461 <td class="entry_details" colspan="5"> 4462 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p> 4463 </td> 4464 </tr> 4465 4466 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4467 <!-- end of entry --> 4468 4469 4470 <tr class="entry" id="static_android.control.afAvailableModes"> 4471 <td class="entry_name 4472 " rowspan="3"> 4473 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes 4474 </td> 4475 <td class="entry_type"> 4476 <span class="entry_type_name">byte</span> 4477 <span class="entry_type_container">x</span> 4478 4479 <span class="entry_type_array"> 4480 n 4481 </span> 4482 <span class="entry_type_visibility"> [public as enumList]</span> 4483 4484 4485 <span class="entry_type_hwlevel">[legacy] </span> 4486 4487 4488 <div class="entry_type_notes">List of enums</div> 4489 4490 4491 </td> <!-- entry_type --> 4492 4493 <td class="entry_description"> 4494 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are 4495supported by this camera device.<wbr/></p> 4496 </td> 4497 4498 <td class="entry_units"> 4499 </td> 4500 4501 <td class="entry_range"> 4502 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p> 4503 </td> 4504 4505 <td class="entry_tags"> 4506 <ul class="entry_tags"> 4507 <li><a href="#tag_BC">BC</a></li> 4508 </ul> 4509 </td> 4510 4511 </tr> 4512 <tr class="entries_header"> 4513 <th class="th_details" colspan="5">Details</th> 4514 </tr> 4515 <tr class="entry_cont"> 4516 <td class="entry_details" colspan="5"> 4517 <p>Not all the auto-focus modes may be supported by a 4518given camera device.<wbr/> This entry lists the valid modes for 4519<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p> 4520<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all 4521camera devices with adjustable focuser units 4522(<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> 4523<p>LEGACY devices will support OFF mode only if they support 4524focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to 4525<code>0.<wbr/>0f</code>).<wbr/></p> 4526 </td> 4527 </tr> 4528 4529 4530 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4531 <!-- end of entry --> 4532 4533 4534 <tr class="entry" id="static_android.control.availableEffects"> 4535 <td class="entry_name 4536 " rowspan="3"> 4537 android.<wbr/>control.<wbr/>available<wbr/>Effects 4538 </td> 4539 <td class="entry_type"> 4540 <span class="entry_type_name">byte</span> 4541 <span class="entry_type_container">x</span> 4542 4543 <span class="entry_type_array"> 4544 n 4545 </span> 4546 <span class="entry_type_visibility"> [public as enumList]</span> 4547 4548 4549 <span class="entry_type_hwlevel">[legacy] </span> 4550 4551 4552 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div> 4553 4554 4555 </td> <!-- entry_type --> 4556 4557 <td class="entry_description"> 4558 <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 4559device.<wbr/></p> 4560 </td> 4561 4562 <td class="entry_units"> 4563 </td> 4564 4565 <td class="entry_range"> 4566 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p> 4567 </td> 4568 4569 <td class="entry_tags"> 4570 <ul class="entry_tags"> 4571 <li><a href="#tag_BC">BC</a></li> 4572 </ul> 4573 </td> 4574 4575 </tr> 4576 <tr class="entries_header"> 4577 <th class="th_details" colspan="5">Details</th> 4578 </tr> 4579 <tr class="entry_cont"> 4580 <td class="entry_details" colspan="5"> 4581 <p>This list contains the color effect modes that can be applied to 4582images produced by the camera device.<wbr/> 4583Implementations are not expected to be consistent across all devices.<wbr/> 4584If no color effect modes are available for a device,<wbr/> this will only list 4585OFF.<wbr/></p> 4586<p>A color effect will only be applied if 4587<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p> 4588<p>This control has no effect on the operation of other control routines such 4589as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p> 4590 </td> 4591 </tr> 4592 4593 4594 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4595 <!-- end of entry --> 4596 4597 4598 <tr class="entry" id="static_android.control.availableSceneModes"> 4599 <td class="entry_name 4600 " rowspan="3"> 4601 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes 4602 </td> 4603 <td class="entry_type"> 4604 <span class="entry_type_name">byte</span> 4605 <span class="entry_type_container">x</span> 4606 4607 <span class="entry_type_array"> 4608 n 4609 </span> 4610 <span class="entry_type_visibility"> [public as enumList]</span> 4611 4612 4613 <span class="entry_type_hwlevel">[legacy] </span> 4614 4615 4616 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div> 4617 4618 4619 </td> <!-- entry_type --> 4620 4621 <td class="entry_description"> 4622 <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 4623device.<wbr/></p> 4624 </td> 4625 4626 <td class="entry_units"> 4627 </td> 4628 4629 <td class="entry_range"> 4630 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p> 4631 </td> 4632 4633 <td class="entry_tags"> 4634 <ul class="entry_tags"> 4635 <li><a href="#tag_BC">BC</a></li> 4636 </ul> 4637 </td> 4638 4639 </tr> 4640 <tr class="entries_header"> 4641 <th class="th_details" colspan="5">Details</th> 4642 </tr> 4643 <tr class="entry_cont"> 4644 <td class="entry_details" colspan="5"> 4645 <p>This list contains scene modes that can be set for the camera device.<wbr/> 4646Only scene modes that have been fully implemented for the 4647camera device may be included here.<wbr/> Implementations are not expected 4648to be consistent across all devices.<wbr/></p> 4649<p>If no scene modes are supported by the camera device,<wbr/> this 4650will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p> 4651<p>FACE_<wbr/>PRIORITY is always listed if face detection is 4652supported (i.<wbr/>e.<wbr/><code><a href="#static_android.statistics.info.maxFaceCount">android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count</a> > 46530</code>).<wbr/></p> 4654 </td> 4655 </tr> 4656 4657 4658 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4659 <!-- end of entry --> 4660 4661 4662 <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> 4663 <td class="entry_name 4664 " rowspan="3"> 4665 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes 4666 </td> 4667 <td class="entry_type"> 4668 <span class="entry_type_name">byte</span> 4669 <span class="entry_type_container">x</span> 4670 4671 <span class="entry_type_array"> 4672 n 4673 </span> 4674 <span class="entry_type_visibility"> [public as enumList]</span> 4675 4676 4677 <span class="entry_type_hwlevel">[legacy] </span> 4678 4679 4680 <div class="entry_type_notes">List of enums.<wbr/></div> 4681 4682 4683 </td> <!-- entry_type --> 4684 4685 <td class="entry_description"> 4686 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> 4687that are supported by this camera device.<wbr/></p> 4688 </td> 4689 4690 <td class="entry_units"> 4691 </td> 4692 4693 <td class="entry_range"> 4694 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p> 4695 </td> 4696 4697 <td class="entry_tags"> 4698 <ul class="entry_tags"> 4699 <li><a href="#tag_BC">BC</a></li> 4700 </ul> 4701 </td> 4702 4703 </tr> 4704 <tr class="entries_header"> 4705 <th class="th_details" colspan="5">Details</th> 4706 </tr> 4707 <tr class="entry_cont"> 4708 <td class="entry_details" colspan="5"> 4709 <p>OFF will always be listed.<wbr/></p> 4710 </td> 4711 </tr> 4712 4713 4714 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4715 <!-- end of entry --> 4716 4717 4718 <tr class="entry" id="static_android.control.awbAvailableModes"> 4719 <td class="entry_name 4720 " rowspan="3"> 4721 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes 4722 </td> 4723 <td class="entry_type"> 4724 <span class="entry_type_name">byte</span> 4725 <span class="entry_type_container">x</span> 4726 4727 <span class="entry_type_array"> 4728 n 4729 </span> 4730 <span class="entry_type_visibility"> [public as enumList]</span> 4731 4732 4733 <span class="entry_type_hwlevel">[legacy] </span> 4734 4735 4736 <div class="entry_type_notes">List of enums</div> 4737 4738 4739 </td> <!-- entry_type --> 4740 4741 <td class="entry_description"> 4742 <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 4743camera device.<wbr/></p> 4744 </td> 4745 4746 <td class="entry_units"> 4747 </td> 4748 4749 <td class="entry_range"> 4750 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p> 4751 </td> 4752 4753 <td class="entry_tags"> 4754 <ul class="entry_tags"> 4755 <li><a href="#tag_BC">BC</a></li> 4756 </ul> 4757 </td> 4758 4759 </tr> 4760 <tr class="entries_header"> 4761 <th class="th_details" colspan="5">Details</th> 4762 </tr> 4763 <tr class="entry_cont"> 4764 <td class="entry_details" colspan="5"> 4765 <p>Not all the auto-white-balance modes may be supported by a 4766given camera device.<wbr/> This entry lists the valid modes for 4767<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p> 4768<p>All camera devices will support ON mode.<wbr/></p> 4769<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF 4770mode,<wbr/> which enables application control of white balance,<wbr/> by using 4771<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 4772mode camera devices.<wbr/></p> 4773 </td> 4774 </tr> 4775 4776 4777 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4778 <!-- end of entry --> 4779 4780 4781 <tr class="entry" id="static_android.control.maxRegions"> 4782 <td class="entry_name 4783 " rowspan="1"> 4784 android.<wbr/>control.<wbr/>max<wbr/>Regions 4785 </td> 4786 <td class="entry_type"> 4787 <span class="entry_type_name">int32</span> 4788 <span class="entry_type_container">x</span> 4789 4790 <span class="entry_type_array"> 4791 3 4792 </span> 4793 <span class="entry_type_visibility"> [hidden]</span> 4794 4795 4796 <span class="entry_type_hwlevel">[legacy] </span> 4797 4798 4799 4800 4801 </td> <!-- entry_type --> 4802 4803 <td class="entry_description"> 4804 <p>List of the maximum number of regions that can be used for metering in 4805auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); 4806this corresponds to the the maximum number of elements in 4807<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/> 4808and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 4809 </td> 4810 4811 <td class="entry_units"> 4812 </td> 4813 4814 <td class="entry_range"> 4815 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices 4816this value must be >= 1 for AE and AF.<wbr/> The order of the elements is: 4817<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p> 4818 </td> 4819 4820 <td class="entry_tags"> 4821 <ul class="entry_tags"> 4822 <li><a href="#tag_BC">BC</a></li> 4823 </ul> 4824 </td> 4825 4826 </tr> 4827 4828 4829 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4830 <!-- end of entry --> 4831 4832 4833 <tr class="entry" id="static_android.control.maxRegionsAe"> 4834 <td class="entry_name 4835 " rowspan="5"> 4836 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae 4837 </td> 4838 <td class="entry_type"> 4839 <span class="entry_type_name">int32</span> 4840 4841 <span class="entry_type_visibility"> [public]</span> 4842 4843 <span class="entry_type_synthetic">[synthetic] </span> 4844 4845 <span class="entry_type_hwlevel">[legacy] </span> 4846 4847 4848 4849 4850 </td> <!-- entry_type --> 4851 4852 <td class="entry_description"> 4853 <p>The maximum number of metering regions that can be used by the auto-exposure (AE) 4854routine.<wbr/></p> 4855 </td> 4856 4857 <td class="entry_units"> 4858 </td> 4859 4860 <td class="entry_range"> 4861 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 4862value will be >= 1.<wbr/></p> 4863 </td> 4864 4865 <td class="entry_tags"> 4866 </td> 4867 4868 </tr> 4869 <tr class="entries_header"> 4870 <th class="th_details" colspan="5">Details</th> 4871 </tr> 4872 <tr class="entry_cont"> 4873 <td class="entry_details" colspan="5"> 4874 <p>This corresponds to the the maximum allowed number of elements in 4875<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p> 4876 </td> 4877 </tr> 4878 4879 <tr class="entries_header"> 4880 <th class="th_details" colspan="5">HAL Implementation Details</th> 4881 </tr> 4882 <tr class="entry_cont"> 4883 <td class="entry_details" colspan="5"> 4884 <p>This entry is private to the framework.<wbr/> Fill in 4885maxRegions to have this entry be automatically populated.<wbr/></p> 4886 </td> 4887 </tr> 4888 4889 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4890 <!-- end of entry --> 4891 4892 4893 <tr class="entry" id="static_android.control.maxRegionsAwb"> 4894 <td class="entry_name 4895 " rowspan="5"> 4896 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb 4897 </td> 4898 <td class="entry_type"> 4899 <span class="entry_type_name">int32</span> 4900 4901 <span class="entry_type_visibility"> [public]</span> 4902 4903 <span class="entry_type_synthetic">[synthetic] </span> 4904 4905 <span class="entry_type_hwlevel">[legacy] </span> 4906 4907 4908 4909 4910 </td> <!-- entry_type --> 4911 4912 <td class="entry_description"> 4913 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB) 4914routine.<wbr/></p> 4915 </td> 4916 4917 <td class="entry_units"> 4918 </td> 4919 4920 <td class="entry_range"> 4921 <p>Value will be >= 0.<wbr/></p> 4922 </td> 4923 4924 <td class="entry_tags"> 4925 </td> 4926 4927 </tr> 4928 <tr class="entries_header"> 4929 <th class="th_details" colspan="5">Details</th> 4930 </tr> 4931 <tr class="entry_cont"> 4932 <td class="entry_details" colspan="5"> 4933 <p>This corresponds to the the maximum allowed number of elements in 4934<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p> 4935 </td> 4936 </tr> 4937 4938 <tr class="entries_header"> 4939 <th class="th_details" colspan="5">HAL Implementation Details</th> 4940 </tr> 4941 <tr class="entry_cont"> 4942 <td class="entry_details" colspan="5"> 4943 <p>This entry is private to the framework.<wbr/> Fill in 4944maxRegions to have this entry be automatically populated.<wbr/></p> 4945 </td> 4946 </tr> 4947 4948 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4949 <!-- end of entry --> 4950 4951 4952 <tr class="entry" id="static_android.control.maxRegionsAf"> 4953 <td class="entry_name 4954 " rowspan="5"> 4955 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af 4956 </td> 4957 <td class="entry_type"> 4958 <span class="entry_type_name">int32</span> 4959 4960 <span class="entry_type_visibility"> [public]</span> 4961 4962 <span class="entry_type_synthetic">[synthetic] </span> 4963 4964 <span class="entry_type_hwlevel">[legacy] </span> 4965 4966 4967 4968 4969 </td> <!-- entry_type --> 4970 4971 <td class="entry_description"> 4972 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p> 4973 </td> 4974 4975 <td class="entry_units"> 4976 </td> 4977 4978 <td class="entry_range"> 4979 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 4980value will be >= 1.<wbr/></p> 4981 </td> 4982 4983 <td class="entry_tags"> 4984 </td> 4985 4986 </tr> 4987 <tr class="entries_header"> 4988 <th class="th_details" colspan="5">Details</th> 4989 </tr> 4990 <tr class="entry_cont"> 4991 <td class="entry_details" colspan="5"> 4992 <p>This corresponds to the the maximum allowed number of elements in 4993<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 4994 </td> 4995 </tr> 4996 4997 <tr class="entries_header"> 4998 <th class="th_details" colspan="5">HAL Implementation Details</th> 4999 </tr> 5000 <tr class="entry_cont"> 5001 <td class="entry_details" colspan="5"> 5002 <p>This entry is private to the framework.<wbr/> Fill in 5003maxRegions to have this entry be automatically populated.<wbr/></p> 5004 </td> 5005 </tr> 5006 5007 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5008 <!-- end of entry --> 5009 5010 5011 <tr class="entry" id="static_android.control.sceneModeOverrides"> 5012 <td class="entry_name 5013 " rowspan="5"> 5014 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides 5015 </td> 5016 <td class="entry_type"> 5017 <span class="entry_type_name">byte</span> 5018 <span class="entry_type_container">x</span> 5019 5020 <span class="entry_type_array"> 5021 3 x length(availableSceneModes) 5022 </span> 5023 <span class="entry_type_visibility"> [system]</span> 5024 5025 5026 <span class="entry_type_hwlevel">[limited] </span> 5027 5028 5029 5030 5031 </td> <!-- entry_type --> 5032 5033 <td class="entry_description"> 5034 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus 5035settings to use with each available scene mode.<wbr/></p> 5036 </td> 5037 5038 <td class="entry_units"> 5039 </td> 5040 5041 <td class="entry_range"> 5042 <p>For each available scene mode,<wbr/> the list must contain three 5043entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5044<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 5045by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> 5046where aeMode has the lowest index position.<wbr/></p> 5047 </td> 5048 5049 <td class="entry_tags"> 5050 <ul class="entry_tags"> 5051 <li><a href="#tag_BC">BC</a></li> 5052 </ul> 5053 </td> 5054 5055 </tr> 5056 <tr class="entries_header"> 5057 <th class="th_details" colspan="5">Details</th> 5058 </tr> 5059 <tr class="entry_cont"> 5060 <td class="entry_details" colspan="5"> 5061 <p>When a scene mode is enabled,<wbr/> the camera device is expected 5062to 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/> 5063and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for 5064that scene mode.<wbr/></p> 5065<p>The order of this list matches that of availableSceneModes,<wbr/> 5066with 3 entries for each mode.<wbr/> The overrides listed 5067for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/> 5068since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5069<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 5070used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> 5071is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and 5072FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p> 5073<p>For example,<wbr/> if availableSceneModes contains 5074<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework 5075expects sceneModeOverrides to have 9 entries formatted like: 5076<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> 5077ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p> 5078 </td> 5079 </tr> 5080 5081 <tr class="entries_header"> 5082 <th class="th_details" colspan="5">HAL Implementation Details</th> 5083 </tr> 5084 <tr class="entry_cont"> 5085 <td class="entry_details" colspan="5"> 5086 <p>To maintain backward compatibility,<wbr/> this list will be made available 5087in the static metadata of the camera service.<wbr/> The camera service will 5088use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5089<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 5090mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p> 5091 </td> 5092 </tr> 5093 5094 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5095 <!-- end of entry --> 5096 5097 5098 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations"> 5099 <td class="entry_name 5100 " rowspan="5"> 5101 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations 5102 </td> 5103 <td class="entry_type"> 5104 <span class="entry_type_name">int32</span> 5105 <span class="entry_type_container">x</span> 5106 5107 <span class="entry_type_array"> 5108 5 x n 5109 </span> 5110 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span> 5111 5112 5113 <span class="entry_type_hwlevel">[limited] </span> 5114 5115 5116 5117 5118 </td> <!-- entry_type --> 5119 5120 <td class="entry_description"> 5121 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations 5122supported 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> 5123 </td> 5124 5125 <td class="entry_units"> 5126 </td> 5127 5128 <td class="entry_range"> 5129 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p> 5130 </td> 5131 5132 <td class="entry_tags"> 5133 <ul class="entry_tags"> 5134 <li><a href="#tag_V1">V1</a></li> 5135 </ul> 5136 </td> 5137 5138 </tr> 5139 <tr class="entries_header"> 5140 <th class="th_details" colspan="5">Details</th> 5141 </tr> 5142 <tr class="entry_cont"> 5143 <td class="entry_details" colspan="5"> 5144 <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/> 5145this metadata will list the supported high speed video size,<wbr/> fps range and max batch size 5146configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes 5147reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> 5148for processed non-stalling formats.<wbr/></p> 5149<p>For the high speed video use case,<wbr/> the application must 5150select the video size and fps range from this metadata to configure the recording and 5151preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends 5152to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to 5153configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata 5154by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the 5155recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application 5156must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams 5157must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p> 5158<p>The min and max fps will be multiple times of 30fps.<wbr/></p> 5159<p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/> 5160to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate 5161multiple frames together and send to camera device for processing where the request 5162controls are same for all the frames in this batch.<wbr/> Max batch size indicates 5163the max possible number of frames the camera device will group together for this high 5164speed stream configuration.<wbr/> This max batch size will be used to generate a high speed 5165recording request list by 5166<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/> 5167The max batch size for each configuration will satisfy below conditions:</p> 5168<ul> 5169<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/> 5170if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li> 5171<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but 5172the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch 5173size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li> 5174<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li> 5175</ul> 5176<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/> 5177in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p> 5178<p>This fps ranges in this configuration list can only be used to create requests 5179that are submitted to a high speed camera capture session created by 5180<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> 5181The fps ranges reported in this metadata must not be used to setup capture requests for 5182normal capture session,<wbr/> or it will cause request error.<wbr/></p> 5183 </td> 5184 </tr> 5185 5186 <tr class="entries_header"> 5187 <th class="th_details" colspan="5">HAL Implementation Details</th> 5188 </tr> 5189 <tr class="entry_cont"> 5190 <td class="entry_details" colspan="5"> 5191 <p>All the sizes listed in this configuration will be a subset of the sizes reported by 5192<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/> 5193Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum 5194of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p> 5195<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps 5196sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application 5197usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused 5198stutter when starting recording as much as possible,<wbr/> the application may want to ensure 5199the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise 5200the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/> 5201For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise 5202[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to 5203do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start 5204recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps 5205values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps 5206values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must 5207switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p> 5208 </td> 5209 </tr> 5210 5211 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5212 <!-- end of entry --> 5213 5214 5215 <tr class="entry" id="static_android.control.aeLockAvailable"> 5216 <td class="entry_name 5217 " rowspan="3"> 5218 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available 5219 </td> 5220 <td class="entry_type"> 5221 <span class="entry_type_name entry_type_name_enum">byte</span> 5222 5223 <span class="entry_type_visibility"> [public as boolean]</span> 5224 5225 5226 <span class="entry_type_hwlevel">[legacy] </span> 5227 5228 5229 5230 <ul class="entry_type_enum"> 5231 <li> 5232 <span class="entry_type_enum_name">FALSE</span> 5233 </li> 5234 <li> 5235 <span class="entry_type_enum_name">TRUE</span> 5236 </li> 5237 </ul> 5238 5239 </td> <!-- entry_type --> 5240 5241 <td class="entry_description"> 5242 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p> 5243 </td> 5244 5245 <td class="entry_units"> 5246 </td> 5247 5248 <td class="entry_range"> 5249 </td> 5250 5251 <td class="entry_tags"> 5252 <ul class="entry_tags"> 5253 <li><a href="#tag_BC">BC</a></li> 5254 </ul> 5255 </td> 5256 5257 </tr> 5258 <tr class="entries_header"> 5259 <th class="th_details" colspan="5">Details</th> 5260 </tr> 5261 <tr class="entry_cont"> 5262 <td class="entry_details" colspan="5"> 5263 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always 5264list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 5265 </td> 5266 </tr> 5267 5268 5269 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5270 <!-- end of entry --> 5271 5272 5273 <tr class="entry" id="static_android.control.awbLockAvailable"> 5274 <td class="entry_name 5275 " rowspan="3"> 5276 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available 5277 </td> 5278 <td class="entry_type"> 5279 <span class="entry_type_name entry_type_name_enum">byte</span> 5280 5281 <span class="entry_type_visibility"> [public as boolean]</span> 5282 5283 5284 <span class="entry_type_hwlevel">[legacy] </span> 5285 5286 5287 5288 <ul class="entry_type_enum"> 5289 <li> 5290 <span class="entry_type_enum_name">FALSE</span> 5291 </li> 5292 <li> 5293 <span class="entry_type_enum_name">TRUE</span> 5294 </li> 5295 </ul> 5296 5297 </td> <!-- entry_type --> 5298 5299 <td class="entry_description"> 5300 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p> 5301 </td> 5302 5303 <td class="entry_units"> 5304 </td> 5305 5306 <td class="entry_range"> 5307 </td> 5308 5309 <td class="entry_tags"> 5310 <ul class="entry_tags"> 5311 <li><a href="#tag_BC">BC</a></li> 5312 </ul> 5313 </td> 5314 5315 </tr> 5316 <tr class="entries_header"> 5317 <th class="th_details" colspan="5">Details</th> 5318 </tr> 5319 <tr class="entry_cont"> 5320 <td class="entry_details" colspan="5"> 5321 <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will 5322always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 5323 </td> 5324 </tr> 5325 5326 5327 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5328 <!-- end of entry --> 5329 5330 5331 <tr class="entry" id="static_android.control.availableModes"> 5332 <td class="entry_name 5333 " rowspan="3"> 5334 android.<wbr/>control.<wbr/>available<wbr/>Modes 5335 </td> 5336 <td class="entry_type"> 5337 <span class="entry_type_name">byte</span> 5338 <span class="entry_type_container">x</span> 5339 5340 <span class="entry_type_array"> 5341 n 5342 </span> 5343 <span class="entry_type_visibility"> [public as enumList]</span> 5344 5345 5346 <span class="entry_type_hwlevel">[legacy] </span> 5347 5348 5349 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div> 5350 5351 5352 </td> <!-- entry_type --> 5353 5354 <td class="entry_description"> 5355 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera 5356device.<wbr/></p> 5357 </td> 5358 5359 <td class="entry_units"> 5360 </td> 5361 5362 <td class="entry_range"> 5363 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p> 5364 </td> 5365 5366 <td class="entry_tags"> 5367 </td> 5368 5369 </tr> 5370 <tr class="entries_header"> 5371 <th class="th_details" colspan="5">Details</th> 5372 </tr> 5373 <tr class="entry_cont"> 5374 <td class="entry_details" colspan="5"> 5375 <p>This list contains control modes that can be set for the camera device.<wbr/> 5376LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL 5377devices will always support OFF,<wbr/> AUTO modes.<wbr/></p> 5378 </td> 5379 </tr> 5380 5381 5382 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5383 <!-- end of entry --> 5384 5385 5386 5387 <!-- end of kind --> 5388 </tbody> 5389 <tr><td colspan="6" class="kind">dynamic</td></tr> 5390 5391 <thead class="entries_header"> 5392 <tr> 5393 <th class="th_name">Property Name</th> 5394 <th class="th_type">Type</th> 5395 <th class="th_description">Description</th> 5396 <th class="th_units">Units</th> 5397 <th class="th_range">Range</th> 5398 <th class="th_tags">Tags</th> 5399 </tr> 5400 </thead> 5401 5402 <tbody> 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 <tr class="entry" id="dynamic_android.control.aePrecaptureId"> 5414 <td class="entry_name 5415 entry_name_deprecated 5416 " rowspan="3"> 5417 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id 5418 </td> 5419 <td class="entry_type"> 5420 <span class="entry_type_name">int32</span> 5421 5422 <span class="entry_type_visibility"> [system]</span> 5423 5424 5425 5426 <span class="entry_type_deprecated">[deprecated] </span> 5427 5428 5429 5430 </td> <!-- entry_type --> 5431 5432 <td class="entry_description"> 5433 <p>The ID sent with the latest 5434CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p> 5435 </td> 5436 5437 <td class="entry_units"> 5438 </td> 5439 5440 <td class="entry_range"> 5441 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 5442 </td> 5443 5444 <td class="entry_tags"> 5445 </td> 5446 5447 </tr> 5448 <tr class="entries_header"> 5449 <th class="th_details" colspan="5">Details</th> 5450 </tr> 5451 <tr class="entry_cont"> 5452 <td class="entry_details" colspan="5"> 5453 <p>Must be 0 if no 5454CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet 5455by HAL.<wbr/> Always updated even if AE algorithm ignores the 5456trigger</p> 5457 </td> 5458 </tr> 5459 5460 5461 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5462 <!-- end of entry --> 5463 5464 5465 <tr class="entry" id="dynamic_android.control.aeAntibandingMode"> 5466 <td class="entry_name 5467 " rowspan="5"> 5468 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 5469 </td> 5470 <td class="entry_type"> 5471 <span class="entry_type_name entry_type_name_enum">byte</span> 5472 5473 <span class="entry_type_visibility"> [public]</span> 5474 5475 5476 <span class="entry_type_hwlevel">[legacy] </span> 5477 5478 5479 5480 <ul class="entry_type_enum"> 5481 <li> 5482 <span class="entry_type_enum_name">OFF</span> 5483 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 5484avoid banding problems.<wbr/></p></span> 5485 </li> 5486 <li> 5487 <span class="entry_type_enum_name">50HZ</span> 5488 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 5489avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 5490 </li> 5491 <li> 5492 <span class="entry_type_enum_name">60HZ</span> 5493 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 5494avoid banding problems with 60Hz illumination 5495sources.<wbr/></p></span> 5496 </li> 5497 <li> 5498 <span class="entry_type_enum_name">AUTO</span> 5499 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 5500antibanding routine to the current illumination 5501condition.<wbr/> This is the default mode if AUTO is 5502available on given camera device.<wbr/></p></span> 5503 </li> 5504 </ul> 5505 5506 </td> <!-- entry_type --> 5507 5508 <td class="entry_description"> 5509 <p>The desired setting for the camera device's auto-exposure 5510algorithm's antibanding compensation.<wbr/></p> 5511 </td> 5512 5513 <td class="entry_units"> 5514 </td> 5515 5516 <td class="entry_range"> 5517 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 5518 </td> 5519 5520 <td class="entry_tags"> 5521 <ul class="entry_tags"> 5522 <li><a href="#tag_BC">BC</a></li> 5523 </ul> 5524 </td> 5525 5526 </tr> 5527 <tr class="entries_header"> 5528 <th class="th_details" colspan="5">Details</th> 5529 </tr> 5530 <tr class="entry_cont"> 5531 <td class="entry_details" colspan="5"> 5532 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 5533lights,<wbr/> flicker at the rate of the power supply frequency 5534(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 5535typically not noticeable to a person,<wbr/> it can be visible to 5536a camera device.<wbr/> If a camera sets its exposure time to the 5537wrong value,<wbr/> the flicker may become visible in the 5538viewfinder as flicker or in a final captured image,<wbr/> as a 5539set of variable-brightness bands across the image.<wbr/></p> 5540<p>Therefore,<wbr/> the auto-exposure routines of camera devices 5541include antibanding routines that ensure that the chosen 5542exposure value will not cause such banding.<wbr/> The choice of 5543exposure time depends on the rate of flicker,<wbr/> which the 5544camera device can detect automatically,<wbr/> or the expected 5545rate can be selected by the application using this 5546control.<wbr/></p> 5547<p>A given camera device may not support all of the possible 5548options for the antibanding mode.<wbr/> The 5549<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 5550the available modes for a given camera device.<wbr/></p> 5551<p>AUTO mode is the default if it is available on given 5552camera device.<wbr/> When AUTO mode is not available,<wbr/> the 5553default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 5554and 60HZ will be available.<wbr/></p> 5555<p>If manual exposure control is enabled (by setting 5556<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/> 5557then this setting has no effect,<wbr/> and the application must 5558ensure it selects exposure times that do not cause banding 5559issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 5560the application in this.<wbr/></p> 5561 </td> 5562 </tr> 5563 5564 <tr class="entries_header"> 5565 <th class="th_details" colspan="5">HAL Implementation Details</th> 5566 </tr> 5567 <tr class="entry_cont"> 5568 <td class="entry_details" colspan="5"> 5569 <p>For all capture request templates,<wbr/> this field must be set 5570to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 5571the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 557260HZ must be available.<wbr/></p> 5573<p>If manual exposure control is enabled (by setting 5574<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/> 5575then the exposure values provided by the application must not be 5576adjusted for antibanding.<wbr/></p> 5577 </td> 5578 </tr> 5579 5580 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5581 <!-- end of entry --> 5582 5583 5584 <tr class="entry" id="dynamic_android.control.aeExposureCompensation"> 5585 <td class="entry_name 5586 " rowspan="3"> 5587 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 5588 </td> 5589 <td class="entry_type"> 5590 <span class="entry_type_name">int32</span> 5591 5592 <span class="entry_type_visibility"> [public]</span> 5593 5594 5595 <span class="entry_type_hwlevel">[legacy] </span> 5596 5597 5598 5599 5600 </td> <!-- entry_type --> 5601 5602 <td class="entry_description"> 5603 <p>Adjustment to auto-exposure (AE) target image 5604brightness.<wbr/></p> 5605 </td> 5606 5607 <td class="entry_units"> 5608 Compensation steps 5609 </td> 5610 5611 <td class="entry_range"> 5612 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 5613 </td> 5614 5615 <td class="entry_tags"> 5616 <ul class="entry_tags"> 5617 <li><a href="#tag_BC">BC</a></li> 5618 </ul> 5619 </td> 5620 5621 </tr> 5622 <tr class="entries_header"> 5623 <th class="th_details" colspan="5">Details</th> 5624 </tr> 5625 <tr class="entry_cont"> 5626 <td class="entry_details" colspan="5"> 5627 <p>The adjustment is measured as a count of steps,<wbr/> with the 5628step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 5629allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 5630<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 5631will mean an exposure compensation of +2 EV; -3 will mean an 5632exposure compensation of -1 EV.<wbr/> One EV represents a doubling 5633of image brightness.<wbr/> Note that this control will only be 5634effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 5635will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 5636<p>In the event of exposure compensation value being changed,<wbr/> camera device 5637may take several frames to reach the newly requested exposure target.<wbr/> 5638During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 5639state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 5640change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 5641FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 5642 </td> 5643 </tr> 5644 5645 5646 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5647 <!-- end of entry --> 5648 5649 5650 <tr class="entry" id="dynamic_android.control.aeLock"> 5651 <td class="entry_name 5652 " rowspan="3"> 5653 android.<wbr/>control.<wbr/>ae<wbr/>Lock 5654 </td> 5655 <td class="entry_type"> 5656 <span class="entry_type_name entry_type_name_enum">byte</span> 5657 5658 <span class="entry_type_visibility"> [public as boolean]</span> 5659 5660 5661 <span class="entry_type_hwlevel">[legacy] </span> 5662 5663 5664 5665 <ul class="entry_type_enum"> 5666 <li> 5667 <span class="entry_type_enum_name">OFF</span> 5668 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 5669is free to update its parameters.<wbr/></p></span> 5670 </li> 5671 <li> 5672 <span class="entry_type_enum_name">ON</span> 5673 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 5674must not update the exposure and sensitivity parameters 5675while the lock is active.<wbr/></p> 5676<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 5677will still take effect while auto-exposure is locked.<wbr/></p> 5678<p>Some rare LEGACY devices may not support 5679this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 5680 </li> 5681 </ul> 5682 5683 </td> <!-- entry_type --> 5684 5685 <td class="entry_description"> 5686 <p>Whether auto-exposure (AE) is currently locked to its latest 5687calculated values.<wbr/></p> 5688 </td> 5689 5690 <td class="entry_units"> 5691 </td> 5692 5693 <td class="entry_range"> 5694 </td> 5695 5696 <td class="entry_tags"> 5697 <ul class="entry_tags"> 5698 <li><a href="#tag_BC">BC</a></li> 5699 </ul> 5700 </td> 5701 5702 </tr> 5703 <tr class="entries_header"> 5704 <th class="th_details" colspan="5">Details</th> 5705 </tr> 5706 <tr class="entry_cont"> 5707 <td class="entry_details" colspan="5"> 5708 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 5709and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 5710<p>Note that even when AE is locked,<wbr/> the flash may be fired if 5711the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 5712ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 5713<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 5714is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 5715<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 5716when AE is already locked,<wbr/> the camera device will not change the exposure time 5717(<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>) 5718parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 5719is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 5720<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/> 5721Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 5722<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 5723the AE if AE is locked by the camera device internally during precapture metering 5724sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 5725ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 5726will never succeed in a sequence of preview requests where AE lock is always set 5727to <code>false</code>.<wbr/></p> 5728<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 5729get locked do not necessarily correspond to the settings that were present in the 5730latest capture result received from the camera device,<wbr/> since additional captures 5731and AE updates may have occurred even before the result was sent out.<wbr/> If an 5732application is switching between automatic and manual control and wishes to eliminate 5733any flicker during the switch,<wbr/> the following procedure is recommended:</p> 5734<ol> 5735<li>Starting in auto-AE mode:</li> 5736<li>Lock AE</li> 5737<li>Wait for the first result to be output that has the AE locked</li> 5738<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 5739<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 5740</ol> 5741<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> 5742 </td> 5743 </tr> 5744 5745 5746 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5747 <!-- end of entry --> 5748 5749 5750 <tr class="entry" id="dynamic_android.control.aeMode"> 5751 <td class="entry_name 5752 " rowspan="3"> 5753 android.<wbr/>control.<wbr/>ae<wbr/>Mode 5754 </td> 5755 <td class="entry_type"> 5756 <span class="entry_type_name entry_type_name_enum">byte</span> 5757 5758 <span class="entry_type_visibility"> [public]</span> 5759 5760 5761 <span class="entry_type_hwlevel">[legacy] </span> 5762 5763 5764 5765 <ul class="entry_type_enum"> 5766 <li> 5767 <span class="entry_type_enum_name">OFF</span> 5768 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 5769<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5770<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 5771<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 5772device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 5773a flash unit for this camera device.<wbr/></p> 5774<p>Note that auto-white balance (AWB) and auto-focus (AF) 5775behavior is device dependent when AE is in OFF mode.<wbr/> 5776To have consistent behavior across different devices,<wbr/> 5777it is recommended to either set AWB and AF to OFF mode 5778or lock AWB and AF before setting AE to OFF.<wbr/> 5779See <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/> 5780<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> 5781for more details.<wbr/></p> 5782<p>LEGACY devices do not support the OFF mode and will 5783override attempts to use this value to ON.<wbr/></p></span> 5784 </li> 5785 <li> 5786 <span class="entry_type_enum_name">ON</span> 5787 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 5788with no flash control.<wbr/></p> 5789<p>The application's values for 5790<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5791<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 5792<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 5793application has control over the various 5794android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 5795 </li> 5796 <li> 5797 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 5798 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 5799the camera's flash unit,<wbr/> firing it in low-light 5800conditions.<wbr/></p> 5801<p>The flash may be fired during a precapture sequence 5802(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 5803may be fired for captures for which the 5804<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 5805STILL_<wbr/>CAPTURE</p></span> 5806 </li> 5807 <li> 5808 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 5809 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 5810the camera's flash unit,<wbr/> always firing it for still 5811captures.<wbr/></p> 5812<p>The flash may be fired during a precapture sequence 5813(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 5814will always be fired for captures for which the 5815<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 5816STILL_<wbr/>CAPTURE</p></span> 5817 </li> 5818 <li> 5819 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 5820 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 5821reduction.<wbr/></p> 5822<p>If deemed necessary by the camera device,<wbr/> a red eye 5823reduction flash will fire during the precapture 5824sequence.<wbr/></p></span> 5825 </li> 5826 </ul> 5827 5828 </td> <!-- entry_type --> 5829 5830 <td class="entry_description"> 5831 <p>The desired mode for the camera device's 5832auto-exposure routine.<wbr/></p> 5833 </td> 5834 5835 <td class="entry_units"> 5836 </td> 5837 5838 <td class="entry_range"> 5839 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 5840 </td> 5841 5842 <td class="entry_tags"> 5843 <ul class="entry_tags"> 5844 <li><a href="#tag_BC">BC</a></li> 5845 </ul> 5846 </td> 5847 5848 </tr> 5849 <tr class="entries_header"> 5850 <th class="th_details" colspan="5">Details</th> 5851 </tr> 5852 <tr class="entry_cont"> 5853 <td class="entry_details" colspan="5"> 5854 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 5855AUTO.<wbr/></p> 5856<p>When set to any of the ON modes,<wbr/> the camera device's 5857auto-exposure routine is enabled,<wbr/> overriding the 5858application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 5859and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5860<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 5861<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 5862is selected,<wbr/> the camera device's flash unit controls are 5863also overridden.<wbr/></p> 5864<p>The FLASH modes are only available if the camera device 5865has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 5866<p>If flash TORCH mode is desired,<wbr/> this field must be set to 5867ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 5868<p>When set to any of the ON modes,<wbr/> the values chosen by the 5869camera device auto-exposure routine for the overridden 5870fields for a given capture will be available in its 5871CaptureResult.<wbr/></p> 5872 </td> 5873 </tr> 5874 5875 5876 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5877 <!-- end of entry --> 5878 5879 5880 <tr class="entry" id="dynamic_android.control.aeRegions"> 5881 <td class="entry_name 5882 " rowspan="5"> 5883 android.<wbr/>control.<wbr/>ae<wbr/>Regions 5884 </td> 5885 <td class="entry_type"> 5886 <span class="entry_type_name">int32</span> 5887 <span class="entry_type_container">x</span> 5888 5889 <span class="entry_type_array"> 5890 5 x area_count 5891 </span> 5892 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 5893 5894 5895 5896 5897 5898 5899 </td> <!-- entry_type --> 5900 5901 <td class="entry_description"> 5902 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 5903 </td> 5904 5905 <td class="entry_units"> 5906 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 5907 </td> 5908 5909 <td class="entry_range"> 5910 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 5911<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 5912 </td> 5913 5914 <td class="entry_tags"> 5915 <ul class="entry_tags"> 5916 <li><a href="#tag_BC">BC</a></li> 5917 </ul> 5918 </td> 5919 5920 </tr> 5921 <tr class="entries_header"> 5922 <th class="th_details" colspan="5">Details</th> 5923 </tr> 5924 <tr class="entry_cont"> 5925 <td class="entry_details" colspan="5"> 5926 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 5927Otherwise will always be present.<wbr/></p> 5928<p>The maximum number of regions supported by the device is determined by the value 5929of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 5930<p>The coordinate system is based on the active pixel array,<wbr/> 5931with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 5932(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 5933<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 5934bottom-right pixel in the active pixel array.<wbr/></p> 5935<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 5936for every pixel in the area.<wbr/> This means that a large metering area 5937with the same weight as a smaller area will have more effect in 5938the metering result.<wbr/> Metering areas can partially overlap and the 5939camera device will add the weights in the overlap region.<wbr/></p> 5940<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 5941region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 5942weight is ignored.<wbr/></p> 5943<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 5944camera device.<wbr/></p> 5945<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 5946capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 5947region and output only the intersection rectangle as the metering region in the result 5948metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 5949not reported in the result metadata.<wbr/></p> 5950 </td> 5951 </tr> 5952 5953 <tr class="entries_header"> 5954 <th class="th_details" colspan="5">HAL Implementation Details</th> 5955 </tr> 5956 <tr class="entry_cont"> 5957 <td class="entry_details" colspan="5"> 5958 <p>The HAL level representation of MeteringRectangle[] is a 5959int[5 * area_<wbr/>count].<wbr/> 5960Every five elements represent a metering region of 5961(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 5962The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 5963exclusive on xmax and ymax.<wbr/></p> 5964 </td> 5965 </tr> 5966 5967 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5968 <!-- end of entry --> 5969 5970 5971 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange"> 5972 <td class="entry_name 5973 " rowspan="3"> 5974 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 5975 </td> 5976 <td class="entry_type"> 5977 <span class="entry_type_name">int32</span> 5978 <span class="entry_type_container">x</span> 5979 5980 <span class="entry_type_array"> 5981 2 5982 </span> 5983 <span class="entry_type_visibility"> [public as rangeInt]</span> 5984 5985 5986 <span class="entry_type_hwlevel">[legacy] </span> 5987 5988 5989 5990 5991 </td> <!-- entry_type --> 5992 5993 <td class="entry_description"> 5994 <p>Range over which the auto-exposure routine can 5995adjust the capture frame rate to maintain good 5996exposure.<wbr/></p> 5997 </td> 5998 5999 <td class="entry_units"> 6000 Frames per second (FPS) 6001 </td> 6002 6003 <td class="entry_range"> 6004 <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> 6005 </td> 6006 6007 <td class="entry_tags"> 6008 <ul class="entry_tags"> 6009 <li><a href="#tag_BC">BC</a></li> 6010 </ul> 6011 </td> 6012 6013 </tr> 6014 <tr class="entries_header"> 6015 <th class="th_details" colspan="5">Details</th> 6016 </tr> 6017 <tr class="entry_cont"> 6018 <td class="entry_details" colspan="5"> 6019 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 6020manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 6021<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 6022 </td> 6023 </tr> 6024 6025 6026 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6027 <!-- end of entry --> 6028 6029 6030 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger"> 6031 <td class="entry_name 6032 " rowspan="5"> 6033 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 6034 </td> 6035 <td class="entry_type"> 6036 <span class="entry_type_name entry_type_name_enum">byte</span> 6037 6038 <span class="entry_type_visibility"> [public]</span> 6039 6040 6041 <span class="entry_type_hwlevel">[limited] </span> 6042 6043 6044 6045 <ul class="entry_type_enum"> 6046 <li> 6047 <span class="entry_type_enum_name">IDLE</span> 6048 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 6049 </li> 6050 <li> 6051 <span class="entry_type_enum_name">START</span> 6052 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 6053by the camera device.<wbr/></p> 6054<p>The exact effect of the precapture trigger depends on 6055the current AE mode and state.<wbr/></p></span> 6056 </li> 6057 <li> 6058 <span class="entry_type_enum_name">CANCEL</span> 6059 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 6060precapture metering sequence,<wbr/> the auto-exposure routine will return to its 6061initial state.<wbr/></p></span> 6062 </li> 6063 </ul> 6064 6065 </td> <!-- entry_type --> 6066 6067 <td class="entry_description"> 6068 <p>Whether the camera device will trigger a precapture 6069metering sequence when it processes this request.<wbr/></p> 6070 </td> 6071 6072 <td class="entry_units"> 6073 </td> 6074 6075 <td class="entry_range"> 6076 </td> 6077 6078 <td class="entry_tags"> 6079 <ul class="entry_tags"> 6080 <li><a href="#tag_BC">BC</a></li> 6081 </ul> 6082 </td> 6083 6084 </tr> 6085 <tr class="entries_header"> 6086 <th class="th_details" colspan="5">Details</th> 6087 </tr> 6088 <tr class="entry_cont"> 6089 <td class="entry_details" colspan="5"> 6090 <p>This entry is normally set to IDLE,<wbr/> or is not 6091included at all in the request settings.<wbr/> When included and 6092set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 6093precapture metering sequence.<wbr/></p> 6094<p>When set to CANCEL,<wbr/> the camera device will cancel any active 6095precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 6096If a precapture metering sequence is already completed,<wbr/> and the camera 6097device has implicitly locked the AE for subsequent still capture,<wbr/> the 6098CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 6099<p>The precapture sequence should be triggered before starting a 6100high-quality still capture for final metering decisions to 6101be made,<wbr/> and for firing pre-capture flash pulses to estimate 6102scene brightness and required final capture flash power,<wbr/> when 6103the flash is enabled.<wbr/></p> 6104<p>Normally,<wbr/> this entry should be set to START for only a 6105single request,<wbr/> and the application should wait until the 6106sequence completes before starting a new one.<wbr/></p> 6107<p>When a precapture metering sequence is finished,<wbr/> the camera device 6108may lock the auto-exposure routine internally to be able to accurately expose the 6109subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 6110For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 6111submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 6112submit 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 6113with <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 6114still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 6115API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 6116internally locked AE if the application doesn't submit a still capture request after 6117the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 6118be used in devices that have earlier API levels.<wbr/></p> 6119<p>The exact effect of auto-exposure (AE) precapture trigger 6120depends on the current AE mode and state; see 6121<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 6122details.<wbr/></p> 6123<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 6124capturing a high-resolution JPEG image will automatically trigger a 6125precapture sequence before the high-resolution capture,<wbr/> including 6126potentially firing a pre-capture flash.<wbr/></p> 6127<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 6128simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 6129the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 6130focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 6131trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 6132changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 6133example.<wbr/></p> 6134<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 6135the camera device will complete them in the optimal order for that device.<wbr/></p> 6136 </td> 6137 </tr> 6138 6139 <tr class="entries_header"> 6140 <th class="th_details" colspan="5">HAL Implementation Details</th> 6141 </tr> 6142 <tr class="entry_cont"> 6143 <td class="entry_details" colspan="5"> 6144 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 6145(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 6146treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 6147AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 6148to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 6149 </td> 6150 </tr> 6151 6152 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6153 <!-- end of entry --> 6154 6155 6156 <tr class="entry" id="dynamic_android.control.aeState"> 6157 <td class="entry_name 6158 " rowspan="3"> 6159 android.<wbr/>control.<wbr/>ae<wbr/>State 6160 </td> 6161 <td class="entry_type"> 6162 <span class="entry_type_name entry_type_name_enum">byte</span> 6163 6164 <span class="entry_type_visibility"> [public]</span> 6165 6166 6167 <span class="entry_type_hwlevel">[limited] </span> 6168 6169 6170 6171 <ul class="entry_type_enum"> 6172 <li> 6173 <span class="entry_type_enum_name">INACTIVE</span> 6174 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p> 6175<p>When a camera device is opened,<wbr/> it starts in 6176this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting 6177this state in capture result.<wbr/></p></span> 6178 </li> 6179 <li> 6180 <span class="entry_type_enum_name">SEARCHING</span> 6181 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values 6182for the current scene.<wbr/></p> 6183<p>This is a transient state,<wbr/> the camera device may skip 6184reporting this state in capture result.<wbr/></p></span> 6185 </li> 6186 <li> 6187 <span class="entry_type_enum_name">CONVERGED</span> 6188 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the 6189current scene.<wbr/></p></span> 6190 </li> 6191 <li> 6192 <span class="entry_type_enum_name">LOCKED</span> 6193 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span> 6194 </li> 6195 <li> 6196 <span class="entry_type_enum_name">FLASH_REQUIRED</span> 6197 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash 6198needs to be fired for good quality still 6199capture.<wbr/></p></span> 6200 </li> 6201 <li> 6202 <span class="entry_type_enum_name">PRECAPTURE</span> 6203 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence 6204and is currently executing it.<wbr/></p> 6205<p>Precapture can be triggered through setting 6206<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently 6207active and completed (if it causes camera device internal AE lock) precapture 6208metering sequence can be canceled through setting 6209<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p> 6210<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED 6211or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient 6212state,<wbr/> the camera device may skip reporting this state in 6213capture result.<wbr/></p></span> 6214 </li> 6215 </ul> 6216 6217 </td> <!-- entry_type --> 6218 6219 <td class="entry_description"> 6220 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p> 6221 </td> 6222 6223 <td class="entry_units"> 6224 </td> 6225 6226 <td class="entry_range"> 6227 </td> 6228 6229 <td class="entry_tags"> 6230 </td> 6231 6232 </tr> 6233 <tr class="entries_header"> 6234 <th class="th_details" colspan="5">Details</th> 6235 </tr> 6236 <tr class="entry_cont"> 6237 <td class="entry_details" colspan="5"> 6238 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always 6239resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 6240or <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 6241the algorithm states to INACTIVE.<wbr/></p> 6242<p>The camera device can do several state transitions between two results,<wbr/> if it is 6243allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 6244seen in a result.<wbr/></p> 6245<p>The state in the result is the state for this image (in sync with this image): if 6246AE state becomes CONVERGED,<wbr/> then the image data associated with this result should 6247be good to use.<wbr/></p> 6248<p>Below are state transition tables for different AE modes.<wbr/></p> 6249<table> 6250<thead> 6251<tr> 6252<th align="center">State</th> 6253<th align="center">Transition Cause</th> 6254<th align="center">New State</th> 6255<th align="center">Notes</th> 6256</tr> 6257</thead> 6258<tbody> 6259<tr> 6260<td align="center">INACTIVE</td> 6261<td align="center"></td> 6262<td align="center">INACTIVE</td> 6263<td align="center">Camera device auto exposure algorithm is disabled</td> 6264</tr> 6265</tbody> 6266</table> 6267<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p> 6268<table> 6269<thead> 6270<tr> 6271<th align="center">State</th> 6272<th align="center">Transition Cause</th> 6273<th align="center">New State</th> 6274<th align="center">Notes</th> 6275</tr> 6276</thead> 6277<tbody> 6278<tr> 6279<td align="center">INACTIVE</td> 6280<td align="center">Camera device initiates AE scan</td> 6281<td align="center">SEARCHING</td> 6282<td align="center">Values changing</td> 6283</tr> 6284<tr> 6285<td align="center">INACTIVE</td> 6286<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6287<td align="center">LOCKED</td> 6288<td align="center">Values locked</td> 6289</tr> 6290<tr> 6291<td align="center">SEARCHING</td> 6292<td align="center">Camera device finishes AE scan</td> 6293<td align="center">CONVERGED</td> 6294<td align="center">Good values,<wbr/> not changing</td> 6295</tr> 6296<tr> 6297<td align="center">SEARCHING</td> 6298<td align="center">Camera device finishes AE scan</td> 6299<td align="center">FLASH_<wbr/>REQUIRED</td> 6300<td align="center">Converged but too dark w/<wbr/>o flash</td> 6301</tr> 6302<tr> 6303<td align="center">SEARCHING</td> 6304<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6305<td align="center">LOCKED</td> 6306<td align="center">Values locked</td> 6307</tr> 6308<tr> 6309<td align="center">CONVERGED</td> 6310<td align="center">Camera device initiates AE scan</td> 6311<td align="center">SEARCHING</td> 6312<td align="center">Values changing</td> 6313</tr> 6314<tr> 6315<td align="center">CONVERGED</td> 6316<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6317<td align="center">LOCKED</td> 6318<td align="center">Values locked</td> 6319</tr> 6320<tr> 6321<td align="center">FLASH_<wbr/>REQUIRED</td> 6322<td align="center">Camera device initiates AE scan</td> 6323<td align="center">SEARCHING</td> 6324<td align="center">Values changing</td> 6325</tr> 6326<tr> 6327<td align="center">FLASH_<wbr/>REQUIRED</td> 6328<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6329<td align="center">LOCKED</td> 6330<td align="center">Values locked</td> 6331</tr> 6332<tr> 6333<td align="center">LOCKED</td> 6334<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6335<td align="center">SEARCHING</td> 6336<td align="center">Values not good after unlock</td> 6337</tr> 6338<tr> 6339<td align="center">LOCKED</td> 6340<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6341<td align="center">CONVERGED</td> 6342<td align="center">Values good after unlock</td> 6343</tr> 6344<tr> 6345<td align="center">LOCKED</td> 6346<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6347<td align="center">FLASH_<wbr/>REQUIRED</td> 6348<td align="center">Exposure good,<wbr/> but too dark</td> 6349</tr> 6350<tr> 6351<td align="center">PRECAPTURE</td> 6352<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6353<td align="center">CONVERGED</td> 6354<td align="center">Ready for high-quality capture</td> 6355</tr> 6356<tr> 6357<td align="center">PRECAPTURE</td> 6358<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6359<td align="center">LOCKED</td> 6360<td align="center">Ready for high-quality capture</td> 6361</tr> 6362<tr> 6363<td align="center">LOCKED</td> 6364<td align="center">aeLock is ON and aePrecaptureTrigger is START</td> 6365<td align="center">LOCKED</td> 6366<td align="center">Precapture trigger is ignored when AE is already locked</td> 6367</tr> 6368<tr> 6369<td align="center">LOCKED</td> 6370<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td> 6371<td align="center">LOCKED</td> 6372<td align="center">Precapture trigger is ignored when AE is already locked</td> 6373</tr> 6374<tr> 6375<td align="center">Any state (excluding LOCKED)</td> 6376<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> 6377<td align="center">PRECAPTURE</td> 6378<td align="center">Start AE precapture metering sequence</td> 6379</tr> 6380<tr> 6381<td align="center">Any state (excluding LOCKED)</td> 6382<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td> 6383<td align="center">INACTIVE</td> 6384<td align="center">Currently active precapture metering sequence is canceled</td> 6385</tr> 6386</tbody> 6387</table> 6388<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 6389without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 6390can be skipped in that manner is called a transient state.<wbr/></p> 6391<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions 6392listed in above table,<wbr/> it is also legal for the camera device to skip one or more 6393transient states between two results.<wbr/> See below table for examples:</p> 6394<table> 6395<thead> 6396<tr> 6397<th align="center">State</th> 6398<th align="center">Transition Cause</th> 6399<th align="center">New State</th> 6400<th align="center">Notes</th> 6401</tr> 6402</thead> 6403<tbody> 6404<tr> 6405<td align="center">INACTIVE</td> 6406<td align="center">Camera device finished AE scan</td> 6407<td align="center">CONVERGED</td> 6408<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 6409</tr> 6410<tr> 6411<td align="center">Any state (excluding LOCKED)</td> 6412<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> 6413<td align="center">FLASH_<wbr/>REQUIRED</td> 6414<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> 6415</tr> 6416<tr> 6417<td align="center">Any state (excluding LOCKED)</td> 6418<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> 6419<td align="center">CONVERGED</td> 6420<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> 6421</tr> 6422<tr> 6423<td align="center">Any state (excluding LOCKED)</td> 6424<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 6425<td align="center">FLASH_<wbr/>REQUIRED</td> 6426<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> 6427</tr> 6428<tr> 6429<td align="center">Any state (excluding LOCKED)</td> 6430<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 6431<td align="center">CONVERGED</td> 6432<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td> 6433</tr> 6434<tr> 6435<td align="center">CONVERGED</td> 6436<td align="center">Camera device finished AE scan</td> 6437<td align="center">FLASH_<wbr/>REQUIRED</td> 6438<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> 6439</tr> 6440<tr> 6441<td align="center">FLASH_<wbr/>REQUIRED</td> 6442<td align="center">Camera device finished AE scan</td> 6443<td align="center">CONVERGED</td> 6444<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> 6445</tr> 6446</tbody> 6447</table> 6448 </td> 6449 </tr> 6450 6451 6452 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6453 <!-- end of entry --> 6454 6455 6456 <tr class="entry" id="dynamic_android.control.afMode"> 6457 <td class="entry_name 6458 " rowspan="5"> 6459 android.<wbr/>control.<wbr/>af<wbr/>Mode 6460 </td> 6461 <td class="entry_type"> 6462 <span class="entry_type_name entry_type_name_enum">byte</span> 6463 6464 <span class="entry_type_visibility"> [public]</span> 6465 6466 6467 <span class="entry_type_hwlevel">[legacy] </span> 6468 6469 6470 6471 <ul class="entry_type_enum"> 6472 <li> 6473 <span class="entry_type_enum_name">OFF</span> 6474 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 6475<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 6476application.<wbr/></p></span> 6477 </li> 6478 <li> 6479 <span class="entry_type_enum_name">AUTO</span> 6480 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 6481<p>In this mode,<wbr/> the lens does not move unless 6482the autofocus trigger action is called.<wbr/> When that trigger 6483is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 6484the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 6485<p>Always supported if lens is not fixed focus.<wbr/></p> 6486<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 6487is fixed-focus.<wbr/></p> 6488<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 6489and sets the AF state to INACTIVE.<wbr/></p></span> 6490 </li> 6491 <li> 6492 <span class="entry_type_enum_name">MACRO</span> 6493 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 6494<p>In this mode,<wbr/> the lens does not move unless the 6495autofocus trigger action is called.<wbr/> When that trigger is 6496activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 6497the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 6498mode is optimized for focusing on objects very close to 6499the camera.<wbr/></p> 6500<p>When that trigger is activated,<wbr/> AF will transition to 6501ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 6502NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 6503position to default,<wbr/> and sets the AF state to 6504INACTIVE.<wbr/></p></span> 6505 </li> 6506 <li> 6507 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 6508 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 6509position continually to attempt to provide a 6510constantly-in-focus image stream.<wbr/></p> 6511<p>The focusing behavior should be suitable for good quality 6512video recording; typically this means slower focus 6513movement and no overshoots.<wbr/> When the AF trigger is not 6514involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 6515and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 6516states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 6517the algorithm should immediately transition into 6518AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 6519lens position until a cancel AF trigger is received.<wbr/></p> 6520<p>Once cancel is received,<wbr/> the algorithm should transition 6521back to INACTIVE and resume passive scan.<wbr/> Note that this 6522behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 6523ongoing PASSIVE_<wbr/>SCAN must immediately be 6524canceled.<wbr/></p></span> 6525 </li> 6526 <li> 6527 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 6528 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 6529position continually to attempt to provide a 6530constantly-in-focus image stream.<wbr/></p> 6531<p>The focusing behavior should be suitable for still image 6532capture; typically this means focusing as fast as 6533possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 6534algorithm should start in INACTIVE state,<wbr/> and then 6535transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 6536appropriate as it attempts to maintain focus.<wbr/> When the AF 6537trigger is activated,<wbr/> the algorithm should finish its 6538PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 6539AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 6540lens position until a cancel AF trigger is received.<wbr/></p> 6541<p>When the AF cancel trigger is activated,<wbr/> the algorithm 6542should transition back to INACTIVE and then act as if it 6543has just been started.<wbr/></p></span> 6544 </li> 6545 <li> 6546 <span class="entry_type_enum_name">EDOF</span> 6547 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 6548<p>The camera device will produce images with an extended 6549depth of field automatically; no special focusing 6550operations need to be done before taking a picture.<wbr/></p> 6551<p>AF triggers are ignored,<wbr/> and the AF state will always be 6552INACTIVE.<wbr/></p></span> 6553 </li> 6554 </ul> 6555 6556 </td> <!-- entry_type --> 6557 6558 <td class="entry_description"> 6559 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 6560mode it is set to.<wbr/></p> 6561 </td> 6562 6563 <td class="entry_units"> 6564 </td> 6565 6566 <td class="entry_range"> 6567 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 6568 </td> 6569 6570 <td class="entry_tags"> 6571 <ul class="entry_tags"> 6572 <li><a href="#tag_BC">BC</a></li> 6573 </ul> 6574 </td> 6575 6576 </tr> 6577 <tr class="entries_header"> 6578 <th class="th_details" colspan="5">Details</th> 6579 </tr> 6580 <tr class="entry_cont"> 6581 <td class="entry_details" colspan="5"> 6582 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 6583(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 6584when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 6585dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 6586setting <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> 6587<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 6588the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 6589in result metadata.<wbr/></p> 6590 </td> 6591 </tr> 6592 6593 <tr class="entries_header"> 6594 <th class="th_details" colspan="5">HAL Implementation Details</th> 6595 </tr> 6596 <tr class="entry_cont"> 6597 <td class="entry_details" colspan="5"> 6598 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 6599request (<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 6600up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 6601<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 6602locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 6603after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 6604the same focal plane remains in focus.<wbr/></p> 6605<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 6606scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 6607(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 6608same lock behavior as above.<wbr/></p> 6609<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 6610focus 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/> 6611However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 6612manual control.<wbr/></p> 6613<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 6614camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 6615remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 6616by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 6617that will arise on camera modules with open-loop VCMs.<wbr/></p> 6618 </td> 6619 </tr> 6620 6621 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6622 <!-- end of entry --> 6623 6624 6625 <tr class="entry" id="dynamic_android.control.afRegions"> 6626 <td class="entry_name 6627 " rowspan="5"> 6628 android.<wbr/>control.<wbr/>af<wbr/>Regions 6629 </td> 6630 <td class="entry_type"> 6631 <span class="entry_type_name">int32</span> 6632 <span class="entry_type_container">x</span> 6633 6634 <span class="entry_type_array"> 6635 5 x area_count 6636 </span> 6637 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 6638 6639 6640 6641 6642 6643 6644 </td> <!-- entry_type --> 6645 6646 <td class="entry_description"> 6647 <p>List of metering areas to use for auto-focus.<wbr/></p> 6648 </td> 6649 6650 <td class="entry_units"> 6651 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 6652 </td> 6653 6654 <td class="entry_range"> 6655 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 6656<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 6657 </td> 6658 6659 <td class="entry_tags"> 6660 <ul class="entry_tags"> 6661 <li><a href="#tag_BC">BC</a></li> 6662 </ul> 6663 </td> 6664 6665 </tr> 6666 <tr class="entries_header"> 6667 <th class="th_details" colspan="5">Details</th> 6668 </tr> 6669 <tr class="entry_cont"> 6670 <td class="entry_details" colspan="5"> 6671 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 6672Otherwise will always be present.<wbr/></p> 6673<p>The maximum number of focus areas supported by the device is determined by the value 6674of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 6675<p>The coordinate system is based on the active pixel array,<wbr/> 6676with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 6677(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 6678<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 6679bottom-right pixel in the active pixel array.<wbr/></p> 6680<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 6681for every pixel in the area.<wbr/> This means that a large metering area 6682with the same weight as a smaller area will have more effect in 6683the metering result.<wbr/> Metering areas can partially overlap and the 6684camera device will add the weights in the overlap region.<wbr/></p> 6685<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 6686is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 6687ignored.<wbr/></p> 6688<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 6689camera device.<wbr/></p> 6690<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 6691capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 6692region and output only the intersection rectangle as the metering region in the result 6693metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 6694not reported in the result metadata.<wbr/></p> 6695 </td> 6696 </tr> 6697 6698 <tr class="entries_header"> 6699 <th class="th_details" colspan="5">HAL Implementation Details</th> 6700 </tr> 6701 <tr class="entry_cont"> 6702 <td class="entry_details" colspan="5"> 6703 <p>The HAL level representation of MeteringRectangle[] is a 6704int[5 * area_<wbr/>count].<wbr/> 6705Every five elements represent a metering region of 6706(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 6707The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 6708exclusive on xmax and ymax.<wbr/></p> 6709 </td> 6710 </tr> 6711 6712 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6713 <!-- end of entry --> 6714 6715 6716 <tr class="entry" id="dynamic_android.control.afTrigger"> 6717 <td class="entry_name 6718 " rowspan="5"> 6719 android.<wbr/>control.<wbr/>af<wbr/>Trigger 6720 </td> 6721 <td class="entry_type"> 6722 <span class="entry_type_name entry_type_name_enum">byte</span> 6723 6724 <span class="entry_type_visibility"> [public]</span> 6725 6726 6727 <span class="entry_type_hwlevel">[legacy] </span> 6728 6729 6730 6731 <ul class="entry_type_enum"> 6732 <li> 6733 <span class="entry_type_enum_name">IDLE</span> 6734 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 6735 </li> 6736 <li> 6737 <span class="entry_type_enum_name">START</span> 6738 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 6739 </li> 6740 <li> 6741 <span class="entry_type_enum_name">CANCEL</span> 6742 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 6743state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 6744 </li> 6745 </ul> 6746 6747 </td> <!-- entry_type --> 6748 6749 <td class="entry_description"> 6750 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 6751 </td> 6752 6753 <td class="entry_units"> 6754 </td> 6755 6756 <td class="entry_range"> 6757 </td> 6758 6759 <td class="entry_tags"> 6760 <ul class="entry_tags"> 6761 <li><a href="#tag_BC">BC</a></li> 6762 </ul> 6763 </td> 6764 6765 </tr> 6766 <tr class="entries_header"> 6767 <th class="th_details" colspan="5">Details</th> 6768 </tr> 6769 <tr class="entry_cont"> 6770 <td class="entry_details" colspan="5"> 6771 <p>This entry is normally set to IDLE,<wbr/> or is not 6772included at all in the request settings.<wbr/></p> 6773<p>When included and set to START,<wbr/> the camera device will trigger the 6774autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 6775<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 6776and return to its initial AF state.<wbr/></p> 6777<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 6778single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 6779START for multiple captures in a row means restarting the AF operation over 6780and over again.<wbr/></p> 6781<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> 6782<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> 6783simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 6784the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 6785focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 6786trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 6787changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 6788 </td> 6789 </tr> 6790 6791 <tr class="entries_header"> 6792 <th class="th_details" colspan="5">HAL Implementation Details</th> 6793 </tr> 6794 <tr class="entry_cont"> 6795 <td class="entry_details" colspan="5"> 6796 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 6797(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 6798treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 6799AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 6800to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 6801 </td> 6802 </tr> 6803 6804 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6805 <!-- end of entry --> 6806 6807 6808 <tr class="entry" id="dynamic_android.control.afState"> 6809 <td class="entry_name 6810 " rowspan="3"> 6811 android.<wbr/>control.<wbr/>af<wbr/>State 6812 </td> 6813 <td class="entry_type"> 6814 <span class="entry_type_name entry_type_name_enum">byte</span> 6815 6816 <span class="entry_type_visibility"> [public]</span> 6817 6818 6819 <span class="entry_type_hwlevel">[legacy] </span> 6820 6821 6822 6823 <ul class="entry_type_enum"> 6824 <li> 6825 <span class="entry_type_enum_name">INACTIVE</span> 6826 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked 6827to scan.<wbr/></p> 6828<p>When a camera device is opened,<wbr/> it starts in this 6829state.<wbr/> This is a transient state,<wbr/> the camera device may 6830skip reporting this state in capture 6831result.<wbr/></p></span> 6832 </li> 6833 <li> 6834 <span class="entry_type_enum_name">PASSIVE_SCAN</span> 6835 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the 6836camera device in a continuous autofocus mode.<wbr/></p> 6837<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 6838state,<wbr/> the camera device may skip reporting this state in 6839capture result.<wbr/></p></span> 6840 </li> 6841 <li> 6842 <span class="entry_type_enum_name">PASSIVE_FOCUSED</span> 6843 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may 6844restart scanning at any time.<wbr/></p> 6845<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 6846state,<wbr/> the camera device may skip reporting this state in 6847capture result.<wbr/></p></span> 6848 </li> 6849 <li> 6850 <span class="entry_type_enum_name">ACTIVE_SCAN</span> 6851 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was 6852triggered by AF trigger.<wbr/></p> 6853<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient 6854state,<wbr/> the camera device may skip reporting this state in 6855capture result.<wbr/></p></span> 6856 </li> 6857 <li> 6858 <span class="entry_type_enum_name">FOCUSED_LOCKED</span> 6859 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked 6860focus.<wbr/></p> 6861<p>This state is reached only after an explicit START AF trigger has been 6862sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p> 6863<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 6864a 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> 6865 </li> 6866 <li> 6867 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span> 6868 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked 6869focus.<wbr/></p> 6870<p>This state is reached only after an explicit START AF trigger has been 6871sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p> 6872<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 6873a 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> 6874 </li> 6875 <li> 6876 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span> 6877 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/> 6878and may restart scanning at any time.<wbr/></p> 6879<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera 6880device may skip reporting this state in capture result.<wbr/></p> 6881<p>LEGACY camera devices do not support this state.<wbr/> When a passive 6882scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span> 6883 </li> 6884 </ul> 6885 6886 </td> <!-- entry_type --> 6887 6888 <td class="entry_description"> 6889 <p>Current state of auto-focus (AF) algorithm.<wbr/></p> 6890 </td> 6891 6892 <td class="entry_units"> 6893 </td> 6894 6895 <td class="entry_range"> 6896 </td> 6897 6898 <td class="entry_tags"> 6899 </td> 6900 6901 </tr> 6902 <tr class="entries_header"> 6903 <th class="th_details" colspan="5">Details</th> 6904 </tr> 6905 <tr class="entry_cont"> 6906 <td class="entry_details" colspan="5"> 6907 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always 6908resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 6909or <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 6910the algorithm states to INACTIVE.<wbr/></p> 6911<p>The camera device can do several state transitions between two results,<wbr/> if it is 6912allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 6913seen in a result.<wbr/></p> 6914<p>The state in the result is the state for this image (in sync with this image): if 6915AF state becomes FOCUSED,<wbr/> then the image data associated with this result should 6916be sharp.<wbr/></p> 6917<p>Below are state transition tables for different AF modes.<wbr/></p> 6918<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> 6919<table> 6920<thead> 6921<tr> 6922<th align="center">State</th> 6923<th align="center">Transition Cause</th> 6924<th align="center">New State</th> 6925<th align="center">Notes</th> 6926</tr> 6927</thead> 6928<tbody> 6929<tr> 6930<td align="center">INACTIVE</td> 6931<td align="center"></td> 6932<td align="center">INACTIVE</td> 6933<td align="center">Never changes</td> 6934</tr> 6935</tbody> 6936</table> 6937<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> 6938<table> 6939<thead> 6940<tr> 6941<th align="center">State</th> 6942<th align="center">Transition Cause</th> 6943<th align="center">New State</th> 6944<th align="center">Notes</th> 6945</tr> 6946</thead> 6947<tbody> 6948<tr> 6949<td align="center">INACTIVE</td> 6950<td align="center">AF_<wbr/>TRIGGER</td> 6951<td align="center">ACTIVE_<wbr/>SCAN</td> 6952<td align="center">Start AF sweep,<wbr/> Lens now moving</td> 6953</tr> 6954<tr> 6955<td align="center">ACTIVE_<wbr/>SCAN</td> 6956<td align="center">AF sweep done</td> 6957<td align="center">FOCUSED_<wbr/>LOCKED</td> 6958<td align="center">Focused,<wbr/> Lens now locked</td> 6959</tr> 6960<tr> 6961<td align="center">ACTIVE_<wbr/>SCAN</td> 6962<td align="center">AF sweep done</td> 6963<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6964<td align="center">Not focused,<wbr/> Lens now locked</td> 6965</tr> 6966<tr> 6967<td align="center">ACTIVE_<wbr/>SCAN</td> 6968<td align="center">AF_<wbr/>CANCEL</td> 6969<td align="center">INACTIVE</td> 6970<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> 6971</tr> 6972<tr> 6973<td align="center">FOCUSED_<wbr/>LOCKED</td> 6974<td align="center">AF_<wbr/>CANCEL</td> 6975<td align="center">INACTIVE</td> 6976<td align="center">Cancel/<wbr/>reset AF</td> 6977</tr> 6978<tr> 6979<td align="center">FOCUSED_<wbr/>LOCKED</td> 6980<td align="center">AF_<wbr/>TRIGGER</td> 6981<td align="center">ACTIVE_<wbr/>SCAN</td> 6982<td align="center">Start new sweep,<wbr/> Lens now moving</td> 6983</tr> 6984<tr> 6985<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6986<td align="center">AF_<wbr/>CANCEL</td> 6987<td align="center">INACTIVE</td> 6988<td align="center">Cancel/<wbr/>reset AF</td> 6989</tr> 6990<tr> 6991<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6992<td align="center">AF_<wbr/>TRIGGER</td> 6993<td align="center">ACTIVE_<wbr/>SCAN</td> 6994<td align="center">Start new sweep,<wbr/> Lens now moving</td> 6995</tr> 6996<tr> 6997<td align="center">Any state</td> 6998<td align="center">Mode change</td> 6999<td align="center">INACTIVE</td> 7000<td align="center"></td> 7001</tr> 7002</tbody> 7003</table> 7004<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 7005without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 7006can be skipped in that manner is called a transient state.<wbr/></p> 7007<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the 7008state transitions listed in above table,<wbr/> it is also legal for the camera device to skip 7009one or more transient states between two results.<wbr/> See below table for examples:</p> 7010<table> 7011<thead> 7012<tr> 7013<th align="center">State</th> 7014<th align="center">Transition Cause</th> 7015<th align="center">New State</th> 7016<th align="center">Notes</th> 7017</tr> 7018</thead> 7019<tbody> 7020<tr> 7021<td align="center">INACTIVE</td> 7022<td align="center">AF_<wbr/>TRIGGER</td> 7023<td align="center">FOCUSED_<wbr/>LOCKED</td> 7024<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 7025</tr> 7026<tr> 7027<td align="center">INACTIVE</td> 7028<td align="center">AF_<wbr/>TRIGGER</td> 7029<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7030<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td> 7031</tr> 7032<tr> 7033<td align="center">FOCUSED_<wbr/>LOCKED</td> 7034<td align="center">AF_<wbr/>TRIGGER</td> 7035<td align="center">FOCUSED_<wbr/>LOCKED</td> 7036<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 7037</tr> 7038<tr> 7039<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7040<td align="center">AF_<wbr/>TRIGGER</td> 7041<td align="center">FOCUSED_<wbr/>LOCKED</td> 7042<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td> 7043</tr> 7044</tbody> 7045</table> 7046<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> 7047<table> 7048<thead> 7049<tr> 7050<th align="center">State</th> 7051<th align="center">Transition Cause</th> 7052<th align="center">New State</th> 7053<th align="center">Notes</th> 7054</tr> 7055</thead> 7056<tbody> 7057<tr> 7058<td align="center">INACTIVE</td> 7059<td align="center">Camera device initiates new scan</td> 7060<td align="center">PASSIVE_<wbr/>SCAN</td> 7061<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7062</tr> 7063<tr> 7064<td align="center">INACTIVE</td> 7065<td align="center">AF_<wbr/>TRIGGER</td> 7066<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7067<td align="center">AF state query,<wbr/> Lens now locked</td> 7068</tr> 7069<tr> 7070<td align="center">PASSIVE_<wbr/>SCAN</td> 7071<td align="center">Camera device completes current scan</td> 7072<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7073<td align="center">End AF scan,<wbr/> Lens now locked</td> 7074</tr> 7075<tr> 7076<td align="center">PASSIVE_<wbr/>SCAN</td> 7077<td align="center">Camera device fails current scan</td> 7078<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7079<td align="center">End AF scan,<wbr/> Lens now locked</td> 7080</tr> 7081<tr> 7082<td align="center">PASSIVE_<wbr/>SCAN</td> 7083<td align="center">AF_<wbr/>TRIGGER</td> 7084<td align="center">FOCUSED_<wbr/>LOCKED</td> 7085<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td> 7086</tr> 7087<tr> 7088<td align="center">PASSIVE_<wbr/>SCAN</td> 7089<td align="center">AF_<wbr/>TRIGGER</td> 7090<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7091<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td> 7092</tr> 7093<tr> 7094<td align="center">PASSIVE_<wbr/>SCAN</td> 7095<td align="center">AF_<wbr/>CANCEL</td> 7096<td align="center">INACTIVE</td> 7097<td align="center">Reset lens position,<wbr/> Lens now locked</td> 7098</tr> 7099<tr> 7100<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7101<td align="center">Camera device initiates new scan</td> 7102<td align="center">PASSIVE_<wbr/>SCAN</td> 7103<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7104</tr> 7105<tr> 7106<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7107<td align="center">Camera device initiates new scan</td> 7108<td align="center">PASSIVE_<wbr/>SCAN</td> 7109<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7110</tr> 7111<tr> 7112<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7113<td align="center">AF_<wbr/>TRIGGER</td> 7114<td align="center">FOCUSED_<wbr/>LOCKED</td> 7115<td align="center">Immediate transition,<wbr/> lens now locked</td> 7116</tr> 7117<tr> 7118<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7119<td align="center">AF_<wbr/>TRIGGER</td> 7120<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7121<td align="center">Immediate transition,<wbr/> lens now locked</td> 7122</tr> 7123<tr> 7124<td align="center">FOCUSED_<wbr/>LOCKED</td> 7125<td align="center">AF_<wbr/>TRIGGER</td> 7126<td align="center">FOCUSED_<wbr/>LOCKED</td> 7127<td align="center">No effect</td> 7128</tr> 7129<tr> 7130<td align="center">FOCUSED_<wbr/>LOCKED</td> 7131<td align="center">AF_<wbr/>CANCEL</td> 7132<td align="center">INACTIVE</td> 7133<td align="center">Restart AF scan</td> 7134</tr> 7135<tr> 7136<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7137<td align="center">AF_<wbr/>TRIGGER</td> 7138<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7139<td align="center">No effect</td> 7140</tr> 7141<tr> 7142<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7143<td align="center">AF_<wbr/>CANCEL</td> 7144<td align="center">INACTIVE</td> 7145<td align="center">Restart AF scan</td> 7146</tr> 7147</tbody> 7148</table> 7149<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> 7150<table> 7151<thead> 7152<tr> 7153<th align="center">State</th> 7154<th align="center">Transition Cause</th> 7155<th align="center">New State</th> 7156<th align="center">Notes</th> 7157</tr> 7158</thead> 7159<tbody> 7160<tr> 7161<td align="center">INACTIVE</td> 7162<td align="center">Camera device initiates new scan</td> 7163<td align="center">PASSIVE_<wbr/>SCAN</td> 7164<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7165</tr> 7166<tr> 7167<td align="center">INACTIVE</td> 7168<td align="center">AF_<wbr/>TRIGGER</td> 7169<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7170<td align="center">AF state query,<wbr/> Lens now locked</td> 7171</tr> 7172<tr> 7173<td align="center">PASSIVE_<wbr/>SCAN</td> 7174<td align="center">Camera device completes current scan</td> 7175<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7176<td align="center">End AF scan,<wbr/> Lens now locked</td> 7177</tr> 7178<tr> 7179<td align="center">PASSIVE_<wbr/>SCAN</td> 7180<td align="center">Camera device fails current scan</td> 7181<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7182<td align="center">End AF scan,<wbr/> Lens now locked</td> 7183</tr> 7184<tr> 7185<td align="center">PASSIVE_<wbr/>SCAN</td> 7186<td align="center">AF_<wbr/>TRIGGER</td> 7187<td align="center">FOCUSED_<wbr/>LOCKED</td> 7188<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td> 7189</tr> 7190<tr> 7191<td align="center">PASSIVE_<wbr/>SCAN</td> 7192<td align="center">AF_<wbr/>TRIGGER</td> 7193<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7194<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td> 7195</tr> 7196<tr> 7197<td align="center">PASSIVE_<wbr/>SCAN</td> 7198<td align="center">AF_<wbr/>CANCEL</td> 7199<td align="center">INACTIVE</td> 7200<td align="center">Reset lens position,<wbr/> Lens now locked</td> 7201</tr> 7202<tr> 7203<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7204<td align="center">Camera device initiates new scan</td> 7205<td align="center">PASSIVE_<wbr/>SCAN</td> 7206<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7207</tr> 7208<tr> 7209<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7210<td align="center">Camera device initiates new scan</td> 7211<td align="center">PASSIVE_<wbr/>SCAN</td> 7212<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7213</tr> 7214<tr> 7215<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7216<td align="center">AF_<wbr/>TRIGGER</td> 7217<td align="center">FOCUSED_<wbr/>LOCKED</td> 7218<td align="center">Immediate trans.<wbr/> Lens now locked</td> 7219</tr> 7220<tr> 7221<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7222<td align="center">AF_<wbr/>TRIGGER</td> 7223<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7224<td align="center">Immediate trans.<wbr/> Lens now locked</td> 7225</tr> 7226<tr> 7227<td align="center">FOCUSED_<wbr/>LOCKED</td> 7228<td align="center">AF_<wbr/>TRIGGER</td> 7229<td align="center">FOCUSED_<wbr/>LOCKED</td> 7230<td align="center">No effect</td> 7231</tr> 7232<tr> 7233<td align="center">FOCUSED_<wbr/>LOCKED</td> 7234<td align="center">AF_<wbr/>CANCEL</td> 7235<td align="center">INACTIVE</td> 7236<td align="center">Restart AF scan</td> 7237</tr> 7238<tr> 7239<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7240<td align="center">AF_<wbr/>TRIGGER</td> 7241<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7242<td align="center">No effect</td> 7243</tr> 7244<tr> 7245<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7246<td align="center">AF_<wbr/>CANCEL</td> 7247<td align="center">INACTIVE</td> 7248<td align="center">Restart AF scan</td> 7249</tr> 7250</tbody> 7251</table> 7252<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO 7253(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the 7254camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger 7255will be evaluated in the context of the new mode in the request.<wbr/> 7256See below table for examples:</p> 7257<table> 7258<thead> 7259<tr> 7260<th align="center">State</th> 7261<th align="center">Transition Cause</th> 7262<th align="center">New State</th> 7263<th align="center">Notes</th> 7264</tr> 7265</thead> 7266<tbody> 7267<tr> 7268<td align="center">any state</td> 7269<td align="center">CAF-->AUTO mode switch</td> 7270<td align="center">INACTIVE</td> 7271<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td> 7272</tr> 7273<tr> 7274<td align="center">any state</td> 7275<td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td> 7276<td align="center">trigger-reachable states from INACTIVE</td> 7277<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td> 7278</tr> 7279<tr> 7280<td align="center">any state</td> 7281<td align="center">AUTO-->CAF mode switch</td> 7282<td align="center">passively reachable states from INACTIVE</td> 7283<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td> 7284</tr> 7285</tbody> 7286</table> 7287 </td> 7288 </tr> 7289 7290 7291 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7292 <!-- end of entry --> 7293 7294 7295 <tr class="entry" id="dynamic_android.control.afTriggerId"> 7296 <td class="entry_name 7297 entry_name_deprecated 7298 " rowspan="3"> 7299 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id 7300 </td> 7301 <td class="entry_type"> 7302 <span class="entry_type_name">int32</span> 7303 7304 <span class="entry_type_visibility"> [system]</span> 7305 7306 7307 7308 <span class="entry_type_deprecated">[deprecated] </span> 7309 7310 7311 7312 </td> <!-- entry_type --> 7313 7314 <td class="entry_description"> 7315 <p>The ID sent with the latest 7316CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p> 7317 </td> 7318 7319 <td class="entry_units"> 7320 </td> 7321 7322 <td class="entry_range"> 7323 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 7324 </td> 7325 7326 <td class="entry_tags"> 7327 </td> 7328 7329 </tr> 7330 <tr class="entries_header"> 7331 <th class="th_details" colspan="5">Details</th> 7332 </tr> 7333 <tr class="entry_cont"> 7334 <td class="entry_details" colspan="5"> 7335 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger 7336received yet by HAL.<wbr/> Always updated even if AF algorithm 7337ignores the trigger</p> 7338 </td> 7339 </tr> 7340 7341 7342 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7343 <!-- end of entry --> 7344 7345 7346 <tr class="entry" id="dynamic_android.control.awbLock"> 7347 <td class="entry_name 7348 " rowspan="3"> 7349 android.<wbr/>control.<wbr/>awb<wbr/>Lock 7350 </td> 7351 <td class="entry_type"> 7352 <span class="entry_type_name entry_type_name_enum">byte</span> 7353 7354 <span class="entry_type_visibility"> [public as boolean]</span> 7355 7356 7357 <span class="entry_type_hwlevel">[legacy] </span> 7358 7359 7360 7361 <ul class="entry_type_enum"> 7362 <li> 7363 <span class="entry_type_enum_name">OFF</span> 7364 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 7365algorithm is free to update its parameters if in AUTO 7366mode.<wbr/></p></span> 7367 </li> 7368 <li> 7369 <span class="entry_type_enum_name">ON</span> 7370 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 7371algorithm will not update its parameters while the lock 7372is active.<wbr/></p></span> 7373 </li> 7374 </ul> 7375 7376 </td> <!-- entry_type --> 7377 7378 <td class="entry_description"> 7379 <p>Whether auto-white balance (AWB) is currently locked to its 7380latest calculated values.<wbr/></p> 7381 </td> 7382 7383 <td class="entry_units"> 7384 </td> 7385 7386 <td class="entry_range"> 7387 </td> 7388 7389 <td class="entry_tags"> 7390 <ul class="entry_tags"> 7391 <li><a href="#tag_BC">BC</a></li> 7392 </ul> 7393 </td> 7394 7395 </tr> 7396 <tr class="entries_header"> 7397 <th class="th_details" colspan="5">Details</th> 7398 </tr> 7399 <tr class="entry_cont"> 7400 <td class="entry_details" colspan="5"> 7401 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 7402and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 7403<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 7404get locked do not necessarily correspond to the settings that were present in the 7405latest capture result received from the camera device,<wbr/> since additional captures 7406and AWB updates may have occurred even before the result was sent out.<wbr/> If an 7407application is switching between automatic and manual control and wishes to eliminate 7408any flicker during the switch,<wbr/> the following procedure is recommended:</p> 7409<ol> 7410<li>Starting in auto-AWB mode:</li> 7411<li>Lock AWB</li> 7412<li>Wait for the first result to be output that has the AWB locked</li> 7413<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 7414<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 7415</ol> 7416<p>Note that AWB lock is only meaningful when 7417<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 7418AWB is already fixed to a specific setting.<wbr/></p> 7419<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 7420 </td> 7421 </tr> 7422 7423 7424 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7425 <!-- end of entry --> 7426 7427 7428 <tr class="entry" id="dynamic_android.control.awbMode"> 7429 <td class="entry_name 7430 " rowspan="3"> 7431 android.<wbr/>control.<wbr/>awb<wbr/>Mode 7432 </td> 7433 <td class="entry_type"> 7434 <span class="entry_type_name entry_type_name_enum">byte</span> 7435 7436 <span class="entry_type_visibility"> [public]</span> 7437 7438 7439 <span class="entry_type_hwlevel">[legacy] </span> 7440 7441 7442 7443 <ul class="entry_type_enum"> 7444 <li> 7445 <span class="entry_type_enum_name">OFF</span> 7446 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 7447<p>The application-selected color transform matrix 7448(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 7449(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 7450device for manual white balance control.<wbr/></p></span> 7451 </li> 7452 <li> 7453 <span class="entry_type_enum_name">AUTO</span> 7454 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 7455<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7456and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7457For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7458values used by the camera device for the transform and gains 7459will be available in the capture result for this request.<wbr/></p></span> 7460 </li> 7461 <li> 7462 <span class="entry_type_enum_name">INCANDESCENT</span> 7463 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7464the camera device uses incandescent light as the assumed scene 7465illumination for white balance.<wbr/></p> 7466<p>While the exact white balance transforms are up to the 7467camera device,<wbr/> they will approximately match the CIE 7468standard illuminant A.<wbr/></p> 7469<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7470and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7471For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7472values used by the camera device for the transform and gains 7473will be available in the capture result for this request.<wbr/></p></span> 7474 </li> 7475 <li> 7476 <span class="entry_type_enum_name">FLUORESCENT</span> 7477 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7478the camera device uses fluorescent light as the assumed scene 7479illumination for white balance.<wbr/></p> 7480<p>While the exact white balance transforms are up to the 7481camera device,<wbr/> they will approximately match the CIE 7482standard illuminant F2.<wbr/></p> 7483<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7484and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7485For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7486values used by the camera device for the transform and gains 7487will be available in the capture result for this request.<wbr/></p></span> 7488 </li> 7489 <li> 7490 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 7491 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7492the camera device uses warm fluorescent light as the assumed scene 7493illumination for white balance.<wbr/></p> 7494<p>While the exact white balance transforms are up to the 7495camera device,<wbr/> they will approximately match the CIE 7496standard illuminant F4.<wbr/></p> 7497<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7498and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7499For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7500values used by the camera device for the transform and gains 7501will be available in the capture result for this request.<wbr/></p></span> 7502 </li> 7503 <li> 7504 <span class="entry_type_enum_name">DAYLIGHT</span> 7505 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7506the camera device uses daylight light as the assumed scene 7507illumination for white balance.<wbr/></p> 7508<p>While the exact white balance transforms are up to the 7509camera device,<wbr/> they will approximately match the CIE 7510standard illuminant D65.<wbr/></p> 7511<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7512and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7513For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7514values used by the camera device for the transform and gains 7515will be available in the capture result for this request.<wbr/></p></span> 7516 </li> 7517 <li> 7518 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 7519 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7520the camera device uses cloudy daylight light as the assumed scene 7521illumination for white balance.<wbr/></p> 7522<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7523and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7524For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7525values used by the camera device for the transform and gains 7526will be available in the capture result for this request.<wbr/></p></span> 7527 </li> 7528 <li> 7529 <span class="entry_type_enum_name">TWILIGHT</span> 7530 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7531the camera device uses twilight light as the assumed scene 7532illumination for white balance.<wbr/></p> 7533<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7534and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7535For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7536values used by the camera device for the transform and gains 7537will be available in the capture result for this request.<wbr/></p></span> 7538 </li> 7539 <li> 7540 <span class="entry_type_enum_name">SHADE</span> 7541 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7542the camera device uses shade light as the assumed scene 7543illumination for white balance.<wbr/></p> 7544<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7545and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7546For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7547values used by the camera device for the transform and gains 7548will be available in the capture result for this request.<wbr/></p></span> 7549 </li> 7550 </ul> 7551 7552 </td> <!-- entry_type --> 7553 7554 <td class="entry_description"> 7555 <p>Whether auto-white balance (AWB) is currently setting the color 7556transform fields,<wbr/> and what its illumination target 7557is.<wbr/></p> 7558 </td> 7559 7560 <td class="entry_units"> 7561 </td> 7562 7563 <td class="entry_range"> 7564 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 7565 </td> 7566 7567 <td class="entry_tags"> 7568 <ul class="entry_tags"> 7569 <li><a href="#tag_BC">BC</a></li> 7570 </ul> 7571 </td> 7572 7573 </tr> 7574 <tr class="entries_header"> 7575 <th class="th_details" colspan="5">Details</th> 7576 </tr> 7577 <tr class="entry_cont"> 7578 <td class="entry_details" colspan="5"> 7579 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 7580<p>When set to the ON mode,<wbr/> the camera device's auto-white balance 7581routine is enabled,<wbr/> overriding the application's selected 7582<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 7583<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> 7584is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 7585also 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 7586setting AE mode to OFF.<wbr/></p> 7587<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 7588routine is disabled.<wbr/> The application manually controls the white 7589balance 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> 7590and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 7591<p>When set to any other modes,<wbr/> the camera device's auto-white 7592balance routine is disabled.<wbr/> The camera device uses each 7593particular illumination target for white balance 7594adjustment.<wbr/> The application's values for 7595<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 7596<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 7597<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 7598 </td> 7599 </tr> 7600 7601 7602 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7603 <!-- end of entry --> 7604 7605 7606 <tr class="entry" id="dynamic_android.control.awbRegions"> 7607 <td class="entry_name 7608 " rowspan="5"> 7609 android.<wbr/>control.<wbr/>awb<wbr/>Regions 7610 </td> 7611 <td class="entry_type"> 7612 <span class="entry_type_name">int32</span> 7613 <span class="entry_type_container">x</span> 7614 7615 <span class="entry_type_array"> 7616 5 x area_count 7617 </span> 7618 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 7619 7620 7621 7622 7623 7624 7625 </td> <!-- entry_type --> 7626 7627 <td class="entry_description"> 7628 <p>List of metering areas to use for auto-white-balance illuminant 7629estimation.<wbr/></p> 7630 </td> 7631 7632 <td class="entry_units"> 7633 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 7634 </td> 7635 7636 <td class="entry_range"> 7637 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 7638<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 7639 </td> 7640 7641 <td class="entry_tags"> 7642 <ul class="entry_tags"> 7643 <li><a href="#tag_BC">BC</a></li> 7644 </ul> 7645 </td> 7646 7647 </tr> 7648 <tr class="entries_header"> 7649 <th class="th_details" colspan="5">Details</th> 7650 </tr> 7651 <tr class="entry_cont"> 7652 <td class="entry_details" colspan="5"> 7653 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 7654Otherwise will always be present.<wbr/></p> 7655<p>The maximum number of regions supported by the device is determined by the value 7656of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 7657<p>The coordinate system is based on the active pixel array,<wbr/> 7658with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 7659(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 7660<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 7661bottom-right pixel in the active pixel array.<wbr/></p> 7662<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 7663for every pixel in the area.<wbr/> This means that a large metering area 7664with the same weight as a smaller area will have more effect in 7665the metering result.<wbr/> Metering areas can partially overlap and the 7666camera device will add the weights in the overlap region.<wbr/></p> 7667<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 7668only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 76690 weight is ignored.<wbr/></p> 7670<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 7671camera device.<wbr/></p> 7672<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 7673capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 7674region and output only the intersection rectangle as the metering region in the result 7675metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 7676not reported in the result metadata.<wbr/></p> 7677 </td> 7678 </tr> 7679 7680 <tr class="entries_header"> 7681 <th class="th_details" colspan="5">HAL Implementation Details</th> 7682 </tr> 7683 <tr class="entry_cont"> 7684 <td class="entry_details" colspan="5"> 7685 <p>The HAL level representation of MeteringRectangle[] is a 7686int[5 * area_<wbr/>count].<wbr/> 7687Every five elements represent a metering region of 7688(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 7689The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 7690exclusive on xmax and ymax.<wbr/></p> 7691 </td> 7692 </tr> 7693 7694 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7695 <!-- end of entry --> 7696 7697 7698 <tr class="entry" id="dynamic_android.control.captureIntent"> 7699 <td class="entry_name 7700 " rowspan="3"> 7701 android.<wbr/>control.<wbr/>capture<wbr/>Intent 7702 </td> 7703 <td class="entry_type"> 7704 <span class="entry_type_name entry_type_name_enum">byte</span> 7705 7706 <span class="entry_type_visibility"> [public]</span> 7707 7708 7709 <span class="entry_type_hwlevel">[legacy] </span> 7710 7711 7712 7713 <ul class="entry_type_enum"> 7714 <li> 7715 <span class="entry_type_enum_name">CUSTOM</span> 7716 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 7717categories.<wbr/> The camera device will default to preview-like 7718behavior.<wbr/></p></span> 7719 </li> 7720 <li> 7721 <span class="entry_type_enum_name">PREVIEW</span> 7722 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 7723<p>The precapture trigger may be used to start off a metering 7724w/<wbr/>flash sequence.<wbr/></p></span> 7725 </li> 7726 <li> 7727 <span class="entry_type_enum_name">STILL_CAPTURE</span> 7728 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 7729use case.<wbr/></p> 7730<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 7731 </li> 7732 <li> 7733 <span class="entry_type_enum_name">VIDEO_RECORD</span> 7734 <span class="entry_type_enum_notes"><p>This request is for a video recording 7735use case.<wbr/></p></span> 7736 </li> 7737 <li> 7738 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 7739 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 7740image while recording video) use case.<wbr/></p> 7741<p>The camera device should take the highest-quality image 7742possible (given the other settings) without disrupting the 7743frame rate of video recording.<wbr/> </p></span> 7744 </li> 7745 <li> 7746 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 7747 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 7748application will stream full-resolution images and 7749reprocess one or several later for a final 7750capture.<wbr/></p></span> 7751 </li> 7752 <li> 7753 <span class="entry_type_enum_name">MANUAL</span> 7754 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 7755the applications want to directly control the capture parameters.<wbr/></p> 7756<p>For example,<wbr/> the application may wish to manually control 7757<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> 7758 </li> 7759 </ul> 7760 7761 </td> <!-- entry_type --> 7762 7763 <td class="entry_description"> 7764 <p>Information to the camera device 3A (auto-exposure,<wbr/> 7765auto-focus,<wbr/> auto-white balance) routines about the purpose 7766of this capture,<wbr/> to help the camera device to decide optimal 3A 7767strategy.<wbr/></p> 7768 </td> 7769 7770 <td class="entry_units"> 7771 </td> 7772 7773 <td class="entry_range"> 7774 </td> 7775 7776 <td class="entry_tags"> 7777 <ul class="entry_tags"> 7778 <li><a href="#tag_BC">BC</a></li> 7779 </ul> 7780 </td> 7781 7782 </tr> 7783 <tr class="entries_header"> 7784 <th class="th_details" colspan="5">Details</th> 7785 </tr> 7786 <tr class="entry_cont"> 7787 <td class="entry_details" colspan="5"> 7788 <p>This control (except for MANUAL) is only effective if 7789<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 7790<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 7791contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if 7792<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are 7793always supported.<wbr/></p> 7794 </td> 7795 </tr> 7796 7797 7798 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7799 <!-- end of entry --> 7800 7801 7802 <tr class="entry" id="dynamic_android.control.awbState"> 7803 <td class="entry_name 7804 " rowspan="3"> 7805 android.<wbr/>control.<wbr/>awb<wbr/>State 7806 </td> 7807 <td class="entry_type"> 7808 <span class="entry_type_name entry_type_name_enum">byte</span> 7809 7810 <span class="entry_type_visibility"> [public]</span> 7811 7812 7813 <span class="entry_type_hwlevel">[limited] </span> 7814 7815 7816 7817 <ul class="entry_type_enum"> 7818 <li> 7819 <span class="entry_type_enum_name">INACTIVE</span> 7820 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p> 7821<p>When a camera device is opened,<wbr/> it starts in this 7822state.<wbr/> This is a transient state,<wbr/> the camera device may 7823skip reporting this state in capture 7824result.<wbr/></p></span> 7825 </li> 7826 <li> 7827 <span class="entry_type_enum_name">SEARCHING</span> 7828 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control 7829values for the current scene.<wbr/></p> 7830<p>This is a transient state,<wbr/> the camera device 7831may skip reporting this state in capture result.<wbr/></p></span> 7832 </li> 7833 <li> 7834 <span class="entry_type_enum_name">CONVERGED</span> 7835 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the 7836current scene.<wbr/></p></span> 7837 </li> 7838 <li> 7839 <span class="entry_type_enum_name">LOCKED</span> 7840 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span> 7841 </li> 7842 </ul> 7843 7844 </td> <!-- entry_type --> 7845 7846 <td class="entry_description"> 7847 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p> 7848 </td> 7849 7850 <td class="entry_units"> 7851 </td> 7852 7853 <td class="entry_range"> 7854 </td> 7855 7856 <td class="entry_tags"> 7857 </td> 7858 7859 </tr> 7860 <tr class="entries_header"> 7861 <th class="th_details" colspan="5">Details</th> 7862 </tr> 7863 <tr class="entry_cont"> 7864 <td class="entry_details" colspan="5"> 7865 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always 7866resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 7867or <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 7868the algorithm states to INACTIVE.<wbr/></p> 7869<p>The camera device can do several state transitions between two results,<wbr/> if it is 7870allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in 7871a result.<wbr/></p> 7872<p>The state in the result is the state for this image (in sync with this image): if 7873AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should 7874be good to use.<wbr/></p> 7875<p>Below are state transition tables for different AWB modes.<wbr/></p> 7876<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p> 7877<table> 7878<thead> 7879<tr> 7880<th align="center">State</th> 7881<th align="center">Transition Cause</th> 7882<th align="center">New State</th> 7883<th align="center">Notes</th> 7884</tr> 7885</thead> 7886<tbody> 7887<tr> 7888<td align="center">INACTIVE</td> 7889<td align="center"></td> 7890<td align="center">INACTIVE</td> 7891<td align="center">Camera device auto white balance algorithm is disabled</td> 7892</tr> 7893</tbody> 7894</table> 7895<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p> 7896<table> 7897<thead> 7898<tr> 7899<th align="center">State</th> 7900<th align="center">Transition Cause</th> 7901<th align="center">New State</th> 7902<th align="center">Notes</th> 7903</tr> 7904</thead> 7905<tbody> 7906<tr> 7907<td align="center">INACTIVE</td> 7908<td align="center">Camera device initiates AWB scan</td> 7909<td align="center">SEARCHING</td> 7910<td align="center">Values changing</td> 7911</tr> 7912<tr> 7913<td align="center">INACTIVE</td> 7914<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7915<td align="center">LOCKED</td> 7916<td align="center">Values locked</td> 7917</tr> 7918<tr> 7919<td align="center">SEARCHING</td> 7920<td align="center">Camera device finishes AWB scan</td> 7921<td align="center">CONVERGED</td> 7922<td align="center">Good values,<wbr/> not changing</td> 7923</tr> 7924<tr> 7925<td align="center">SEARCHING</td> 7926<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7927<td align="center">LOCKED</td> 7928<td align="center">Values locked</td> 7929</tr> 7930<tr> 7931<td align="center">CONVERGED</td> 7932<td align="center">Camera device initiates AWB scan</td> 7933<td align="center">SEARCHING</td> 7934<td align="center">Values changing</td> 7935</tr> 7936<tr> 7937<td align="center">CONVERGED</td> 7938<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7939<td align="center">LOCKED</td> 7940<td align="center">Values locked</td> 7941</tr> 7942<tr> 7943<td align="center">LOCKED</td> 7944<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 7945<td align="center">SEARCHING</td> 7946<td align="center">Values not good after unlock</td> 7947</tr> 7948</tbody> 7949</table> 7950<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 7951without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 7952can be skipped in that manner is called a transient state.<wbr/></p> 7953<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions 7954listed in above table,<wbr/> it is also legal for the camera device to skip one or more 7955transient states between two results.<wbr/> See below table for examples:</p> 7956<table> 7957<thead> 7958<tr> 7959<th align="center">State</th> 7960<th align="center">Transition Cause</th> 7961<th align="center">New State</th> 7962<th align="center">Notes</th> 7963</tr> 7964</thead> 7965<tbody> 7966<tr> 7967<td align="center">INACTIVE</td> 7968<td align="center">Camera device finished AWB scan</td> 7969<td align="center">CONVERGED</td> 7970<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 7971</tr> 7972<tr> 7973<td align="center">LOCKED</td> 7974<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 7975<td align="center">CONVERGED</td> 7976<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td> 7977</tr> 7978</tbody> 7979</table> 7980 </td> 7981 </tr> 7982 7983 7984 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7985 <!-- end of entry --> 7986 7987 7988 <tr class="entry" id="dynamic_android.control.effectMode"> 7989 <td class="entry_name 7990 " rowspan="3"> 7991 android.<wbr/>control.<wbr/>effect<wbr/>Mode 7992 </td> 7993 <td class="entry_type"> 7994 <span class="entry_type_name entry_type_name_enum">byte</span> 7995 7996 <span class="entry_type_visibility"> [public]</span> 7997 7998 7999 <span class="entry_type_hwlevel">[legacy] </span> 8000 8001 8002 8003 <ul class="entry_type_enum"> 8004 <li> 8005 <span class="entry_type_enum_name">OFF</span> 8006 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 8007 </li> 8008 <li> 8009 <span class="entry_type_enum_name">MONO</span> 8010 <span class="entry_type_enum_optional">[optional]</span> 8011 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 8012a single color.<wbr/></p> 8013<p>This will typically be grayscale.<wbr/></p></span> 8014 </li> 8015 <li> 8016 <span class="entry_type_enum_name">NEGATIVE</span> 8017 <span class="entry_type_enum_optional">[optional]</span> 8018 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 8019are inverted.<wbr/></p></span> 8020 </li> 8021 <li> 8022 <span class="entry_type_enum_name">SOLARIZE</span> 8023 <span class="entry_type_enum_optional">[optional]</span> 8024 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 8025image is wholly or partially reversed in 8026tone.<wbr/></p></span> 8027 </li> 8028 <li> 8029 <span class="entry_type_enum_name">SEPIA</span> 8030 <span class="entry_type_enum_optional">[optional]</span> 8031 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 8032gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 8033 </li> 8034 <li> 8035 <span class="entry_type_enum_name">POSTERIZE</span> 8036 <span class="entry_type_enum_optional">[optional]</span> 8037 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 8038discrete regions of tone rather than a continuous 8039gradient of tones.<wbr/></p></span> 8040 </li> 8041 <li> 8042 <span class="entry_type_enum_name">WHITEBOARD</span> 8043 <span class="entry_type_enum_optional">[optional]</span> 8044 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 8045as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 8046 </li> 8047 <li> 8048 <span class="entry_type_enum_name">BLACKBOARD</span> 8049 <span class="entry_type_enum_optional">[optional]</span> 8050 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 8051as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 8052 </li> 8053 <li> 8054 <span class="entry_type_enum_name">AQUA</span> 8055 <span class="entry_type_enum_optional">[optional]</span> 8056 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 8057 </li> 8058 </ul> 8059 8060 </td> <!-- entry_type --> 8061 8062 <td class="entry_description"> 8063 <p>A special color effect to apply.<wbr/></p> 8064 </td> 8065 8066 <td class="entry_units"> 8067 </td> 8068 8069 <td class="entry_range"> 8070 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 8071 </td> 8072 8073 <td class="entry_tags"> 8074 <ul class="entry_tags"> 8075 <li><a href="#tag_BC">BC</a></li> 8076 </ul> 8077 </td> 8078 8079 </tr> 8080 <tr class="entries_header"> 8081 <th class="th_details" colspan="5">Details</th> 8082 </tr> 8083 <tr class="entry_cont"> 8084 <td class="entry_details" colspan="5"> 8085 <p>When this mode is set,<wbr/> a color effect will be applied 8086to images produced by the camera device.<wbr/> The interpretation 8087and implementation of these color effects is left to the 8088implementor of the camera device,<wbr/> and should not be 8089depended on to be consistent (or present) across all 8090devices.<wbr/></p> 8091 </td> 8092 </tr> 8093 8094 8095 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8096 <!-- end of entry --> 8097 8098 8099 <tr class="entry" id="dynamic_android.control.mode"> 8100 <td class="entry_name 8101 " rowspan="3"> 8102 android.<wbr/>control.<wbr/>mode 8103 </td> 8104 <td class="entry_type"> 8105 <span class="entry_type_name entry_type_name_enum">byte</span> 8106 8107 <span class="entry_type_visibility"> [public]</span> 8108 8109 8110 <span class="entry_type_hwlevel">[legacy] </span> 8111 8112 8113 8114 <ul class="entry_type_enum"> 8115 <li> 8116 <span class="entry_type_enum_name">OFF</span> 8117 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 8118<p>All control by the device's metering and focusing (3A) 8119routines is disabled,<wbr/> and no other settings in 8120android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 8121<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 8122device to select post-processing values for processing 8123blocks that do not allow for manual control,<wbr/> or are not 8124exposed by the camera API.<wbr/></p> 8125<p>However,<wbr/> the camera device's 3A routines may continue to 8126collect statistics and update their internal state so that 8127when control is switched to AUTO mode,<wbr/> good control values 8128can be immediately applied.<wbr/></p></span> 8129 </li> 8130 <li> 8131 <span class="entry_type_enum_name">AUTO</span> 8132 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 8133<p>Manual control of capture parameters is disabled.<wbr/> All 8134controls in android.<wbr/>control.<wbr/>* besides sceneMode take 8135effect.<wbr/></p></span> 8136 </li> 8137 <li> 8138 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 8139 <span class="entry_type_enum_optional">[optional]</span> 8140 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 8141<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 8142control.<wbr/>afMode controls; the camera device will ignore 8143those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 8144FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 8145This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 8146<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 8147contain some modes other than DISABLED).<wbr/></p></span> 8148 </li> 8149 <li> 8150 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 8151 <span class="entry_type_enum_optional">[optional]</span> 8152 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 8153used by camera device background auto-exposure,<wbr/> auto-white balance and 8154auto-focus algorithms (3A) to update their statistics.<wbr/></p> 8155<p>Specifically,<wbr/> the 3A routines are locked to the last 8156values set from a request with AUTO,<wbr/> OFF,<wbr/> or 8157USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 8158collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 8159discarded by the camera device.<wbr/></p></span> 8160 </li> 8161 </ul> 8162 8163 </td> <!-- entry_type --> 8164 8165 <td class="entry_description"> 8166 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 8167routines.<wbr/></p> 8168 </td> 8169 8170 <td class="entry_units"> 8171 </td> 8172 8173 <td class="entry_range"> 8174 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 8175 </td> 8176 8177 <td class="entry_tags"> 8178 <ul class="entry_tags"> 8179 <li><a href="#tag_BC">BC</a></li> 8180 </ul> 8181 </td> 8182 8183 </tr> 8184 <tr class="entries_header"> 8185 <th class="th_details" colspan="5">Details</th> 8186 </tr> 8187 <tr class="entry_cont"> 8188 <td class="entry_details" colspan="5"> 8189 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 8190by the camera device is disabled.<wbr/> The application must set the fields for 8191capture parameters itself.<wbr/></p> 8192<p>When set to AUTO,<wbr/> the individual algorithm controls in 8193android.<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> 8194<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 8195android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 8196one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 8197as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 8198<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 8199<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 8200is that this frame will not be used by camera device background 3A statistics 8201update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 8202where the application doesn't want a 3A manual control capture to affect 8203the subsequent auto 3A capture results.<wbr/></p> 8204 </td> 8205 </tr> 8206 8207 8208 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8209 <!-- end of entry --> 8210 8211 8212 <tr class="entry" id="dynamic_android.control.sceneMode"> 8213 <td class="entry_name 8214 " rowspan="5"> 8215 android.<wbr/>control.<wbr/>scene<wbr/>Mode 8216 </td> 8217 <td class="entry_type"> 8218 <span class="entry_type_name entry_type_name_enum">byte</span> 8219 8220 <span class="entry_type_visibility"> [public]</span> 8221 8222 8223 <span class="entry_type_hwlevel">[legacy] </span> 8224 8225 8226 8227 <ul class="entry_type_enum"> 8228 <li> 8229 <span class="entry_type_enum_name">DISABLED</span> 8230 <span class="entry_type_enum_value">0</span> 8231 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 8232 </li> 8233 <li> 8234 <span class="entry_type_enum_name">FACE_PRIORITY</span> 8235 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 8236detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 8237auto-exposure routines.<wbr/></p> 8238<p>If face detection statistics are disabled 8239(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/> 8240this should still operate correctly (but will not return 8241face detection statistics to the framework).<wbr/></p> 8242<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8243<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> 8244remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 8245 </li> 8246 <li> 8247 <span class="entry_type_enum_name">ACTION</span> 8248 <span class="entry_type_enum_optional">[optional]</span> 8249 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 8250<p>Similar to SPORTS.<wbr/></p></span> 8251 </li> 8252 <li> 8253 <span class="entry_type_enum_name">PORTRAIT</span> 8254 <span class="entry_type_enum_optional">[optional]</span> 8255 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 8256 </li> 8257 <li> 8258 <span class="entry_type_enum_name">LANDSCAPE</span> 8259 <span class="entry_type_enum_optional">[optional]</span> 8260 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 8261 </li> 8262 <li> 8263 <span class="entry_type_enum_name">NIGHT</span> 8264 <span class="entry_type_enum_optional">[optional]</span> 8265 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 8266 </li> 8267 <li> 8268 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 8269 <span class="entry_type_enum_optional">[optional]</span> 8270 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 8271settings.<wbr/></p></span> 8272 </li> 8273 <li> 8274 <span class="entry_type_enum_name">THEATRE</span> 8275 <span class="entry_type_enum_optional">[optional]</span> 8276 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 8277remain off.<wbr/></p></span> 8278 </li> 8279 <li> 8280 <span class="entry_type_enum_name">BEACH</span> 8281 <span class="entry_type_enum_optional">[optional]</span> 8282 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 8283 </li> 8284 <li> 8285 <span class="entry_type_enum_name">SNOW</span> 8286 <span class="entry_type_enum_optional">[optional]</span> 8287 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 8288 </li> 8289 <li> 8290 <span class="entry_type_enum_name">SUNSET</span> 8291 <span class="entry_type_enum_optional">[optional]</span> 8292 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 8293 </li> 8294 <li> 8295 <span class="entry_type_enum_name">STEADYPHOTO</span> 8296 <span class="entry_type_enum_optional">[optional]</span> 8297 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 8298device motion (for example: due to hand shake).<wbr/></p></span> 8299 </li> 8300 <li> 8301 <span class="entry_type_enum_name">FIREWORKS</span> 8302 <span class="entry_type_enum_optional">[optional]</span> 8303 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 8304 </li> 8305 <li> 8306 <span class="entry_type_enum_name">SPORTS</span> 8307 <span class="entry_type_enum_optional">[optional]</span> 8308 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 8309<p>Similar to ACTION.<wbr/></p></span> 8310 </li> 8311 <li> 8312 <span class="entry_type_enum_name">PARTY</span> 8313 <span class="entry_type_enum_optional">[optional]</span> 8314 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 8315people.<wbr/></p></span> 8316 </li> 8317 <li> 8318 <span class="entry_type_enum_name">CANDLELIGHT</span> 8319 <span class="entry_type_enum_optional">[optional]</span> 8320 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 8321is a flame.<wbr/></p></span> 8322 </li> 8323 <li> 8324 <span class="entry_type_enum_name">BARCODE</span> 8325 <span class="entry_type_enum_optional">[optional]</span> 8326 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 8327for use by camera applications that wish to read the 8328barcode value.<wbr/></p></span> 8329 </li> 8330 <li> 8331 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span> 8332 <span class="entry_type_enum_deprecated">[deprecated]</span> 8333 <span class="entry_type_enum_optional">[optional]</span> 8334 <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> 8335and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 8336for high speed video recording.<wbr/></p> 8337<p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 8338<p>The supported high speed video sizes and fps ranges are specified in 8339<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 8340output frame rates,<wbr/> the application is only allowed to select video size 8341and fps range combinations listed in this static metadata.<wbr/> The fps range 8342can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 8343<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 8344ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 8345controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 8346and post-processing parameters is possible.<wbr/> All other controls operate the 8347same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 8348android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 8349<ul> 8350<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 8351<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 8352<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 8353<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 8354<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 8355<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 8356<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 8357<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 8358<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 8359<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 8360</ul> 8361<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 8362<ul> 8363<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> 8364<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 8365<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 8366<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 8367</ul> 8368<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 8369be lower than what camera can output,<wbr/> depending on the destination Surfaces for 8370the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 8371the application need check if the video encoder is capable of supporting the 8372high frame rate for a given video size,<wbr/> or it will end up with lower recording 8373frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 8374rate will be bounded by the screen refresh rate.<wbr/></p> 8375<p>The camera device will only support up to 2 output high speed streams 8376(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 8377in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 8378<ul> 8379<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 8380format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 8381min(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> 8382<li>The stream sizes are selected from the sizes reported by 8383<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 8384<li>No processed non-stalling or raw streams are configured.<wbr/></li> 8385</ul> 8386<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 8387<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/> 8388the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 8389and the returned capture result metadata will give the fps range choosen 8390by the camera device.<wbr/></p> 8391<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 8392reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 8393the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 8394 </li> 8395 <li> 8396 <span class="entry_type_enum_name">HDR</span> 8397 <span class="entry_type_enum_optional">[optional]</span> 8398 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 8399<p>In this scene mode,<wbr/> the camera device captures images 8400that keep a larger range of scene illumination levels 8401visible in the final image.<wbr/> For example,<wbr/> when taking a 8402picture of a object in front of a bright window,<wbr/> both 8403the object and the scene through the window may be 8404visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 8405one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 8406HDR mode generally takes much longer to capture a single 8407image,<wbr/> has no user control,<wbr/> and may have other artifacts 8408depending on the HDR method used.<wbr/></p> 8409<p>Therefore,<wbr/> HDR captures operate at a much slower rate 8410than regular captures.<wbr/></p> 8411<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 8412is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 8413STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 8414using a high dynamic range capture technique.<wbr/> On LEGACY 8415devices,<wbr/> captures that target a JPEG-format output will 8416be captured with HDR,<wbr/> and the capture intent is not 8417relevant.<wbr/></p> 8418<p>The HDR capture may involve the device capturing a burst 8419of images internally and combining them into one,<wbr/> or it 8420may involve the device using specialized high dynamic 8421range capture hardware.<wbr/> In all cases,<wbr/> a single image is 8422produced in response to a capture request submitted 8423while in HDR mode.<wbr/></p> 8424<p>Since substantial post-processing is generally needed to 8425produce an HDR image,<wbr/> only YUV and JPEG outputs are 8426supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only 8427JPEG outputs are supported for LEGACY HDR 8428captures.<wbr/> Using a RAW output for HDR capture is not 8429supported.<wbr/></p></span> 8430 </li> 8431 <li> 8432 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span> 8433 <span class="entry_type_enum_optional">[optional]</span> 8434 <span class="entry_type_enum_hidden">[hidden]</span> 8435 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 8436device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 8437under low light conditions.<wbr/></p> 8438<p>The camera device may be tuned to expose the images in a reduced 8439sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 8440if 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/> 8441the camera device auto-exposure routine tuning process may limit the actual 8442exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 8443exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 8444low light may be under-exposed when the sensor max exposure time (bounded by the 8445<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 8446ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 8447camera device auto-exposure routine to increase the sensitivity up to the max 8448sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 8449dark and the max exposure time is reached.<wbr/> The captured images may be noisier 8450compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 8451recommended that the application only use this scene mode when it is capable of 8452reducing the noise level of the captured images.<wbr/></p> 8453<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8454<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> 8455remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 8456 </li> 8457 </ul> 8458 8459 </td> <!-- entry_type --> 8460 8461 <td class="entry_description"> 8462 <p>Control for which scene mode is currently active.<wbr/></p> 8463 </td> 8464 8465 <td class="entry_units"> 8466 </td> 8467 8468 <td class="entry_range"> 8469 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 8470 </td> 8471 8472 <td class="entry_tags"> 8473 <ul class="entry_tags"> 8474 <li><a href="#tag_BC">BC</a></li> 8475 </ul> 8476 </td> 8477 8478 </tr> 8479 <tr class="entries_header"> 8480 <th class="th_details" colspan="5">Details</th> 8481 </tr> 8482 <tr class="entry_cont"> 8483 <td class="entry_details" colspan="5"> 8484 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 8485capture settings.<wbr/></p> 8486<p>This is the mode that that is active when 8487<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 8488disable <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> 8489while in use.<wbr/></p> 8490<p>The interpretation and implementation of these scene modes is left 8491to the implementor of the camera device.<wbr/> Their behavior will not be 8492consistent across all devices,<wbr/> and any given device may only implement 8493a subset of these modes.<wbr/></p> 8494 </td> 8495 </tr> 8496 8497 <tr class="entries_header"> 8498 <th class="th_details" colspan="5">HAL Implementation Details</th> 8499 </tr> 8500 <tr class="entry_cont"> 8501 <td class="entry_details" colspan="5"> 8502 <p>HAL implementations that include scene modes are expected to provide 8503the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8504<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 8505<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 8506<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/> 8507the HAL must list supported video size and fps range in 8508<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/> 85091280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming 8510mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture 8511requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/> 8512This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 8513<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 8514capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 8515 </td> 8516 </tr> 8517 8518 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8519 <!-- end of entry --> 8520 8521 8522 <tr class="entry" id="dynamic_android.control.videoStabilizationMode"> 8523 <td class="entry_name 8524 " rowspan="3"> 8525 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 8526 </td> 8527 <td class="entry_type"> 8528 <span class="entry_type_name entry_type_name_enum">byte</span> 8529 8530 <span class="entry_type_visibility"> [public]</span> 8531 8532 8533 <span class="entry_type_hwlevel">[legacy] </span> 8534 8535 8536 8537 <ul class="entry_type_enum"> 8538 <li> 8539 <span class="entry_type_enum_name">OFF</span> 8540 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 8541 </li> 8542 <li> 8543 <span class="entry_type_enum_name">ON</span> 8544 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 8545 </li> 8546 </ul> 8547 8548 </td> <!-- entry_type --> 8549 8550 <td class="entry_description"> 8551 <p>Whether video stabilization is 8552active.<wbr/></p> 8553 </td> 8554 8555 <td class="entry_units"> 8556 </td> 8557 8558 <td class="entry_range"> 8559 </td> 8560 8561 <td class="entry_tags"> 8562 <ul class="entry_tags"> 8563 <li><a href="#tag_BC">BC</a></li> 8564 </ul> 8565 </td> 8566 8567 </tr> 8568 <tr class="entries_header"> 8569 <th class="th_details" colspan="5">Details</th> 8570 </tr> 8571 <tr class="entry_cont"> 8572 <td class="entry_details" colspan="5"> 8573 <p>Video stabilization automatically warps images from 8574the camera in order to stabilize motion between consecutive frames.<wbr/></p> 8575<p>If enabled,<wbr/> video stabilization can modify the 8576<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 8577<p>Switching between different video stabilization modes may take several 8578frames to initialize,<wbr/> the camera device will report the current mode 8579in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 8580the video stabilization modes in the first several capture results may 8581still be "OFF",<wbr/> and it will become "ON" when the initialization is 8582done.<wbr/></p> 8583<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 8584stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 8585that an output targeting a MediaRecorder or MediaCodec will be stabilized if 8586the recording resolution is less than or equal to 1920 x 1080 (width less than 8587or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 8588frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult 8589<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return 8590OFF if the recording output is not stabilized,<wbr/> or if there are no output 8591Surface types that can be stabilized.<wbr/></p> 8592<p>If a camera device supports both this mode and OIS 8593(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 8594produce undesirable interaction,<wbr/> so it is recommended not to enable 8595both at the same time.<wbr/></p> 8596 </td> 8597 </tr> 8598 8599 8600 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8601 <!-- end of entry --> 8602 8603 8604 8605 <!-- end of kind --> 8606 </tbody> 8607 8608 <!-- end of section --> 8609 <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr> 8610 8611 8612 <tr><td colspan="6" class="kind">controls</td></tr> 8613 8614 <thead class="entries_header"> 8615 <tr> 8616 <th class="th_name">Property Name</th> 8617 <th class="th_type">Type</th> 8618 <th class="th_description">Description</th> 8619 <th class="th_units">Units</th> 8620 <th class="th_range">Range</th> 8621 <th class="th_tags">Tags</th> 8622 </tr> 8623 </thead> 8624 8625 <tbody> 8626 8627 8628 8629 8630 8631 8632 8633 8634 8635 8636 <tr class="entry" id="controls_android.demosaic.mode"> 8637 <td class="entry_name 8638 " rowspan="1"> 8639 android.<wbr/>demosaic.<wbr/>mode 8640 </td> 8641 <td class="entry_type"> 8642 <span class="entry_type_name entry_type_name_enum">byte</span> 8643 8644 <span class="entry_type_visibility"> [system]</span> 8645 8646 8647 8648 8649 8650 <ul class="entry_type_enum"> 8651 <li> 8652 <span class="entry_type_enum_name">FAST</span> 8653 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to 8654Bayer RAW output.<wbr/></p></span> 8655 </li> 8656 <li> 8657 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8658 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down 8659relative to raw output.<wbr/></p></span> 8660 </li> 8661 </ul> 8662 8663 </td> <!-- entry_type --> 8664 8665 <td class="entry_description"> 8666 <p>Controls the quality of the demosaicing 8667processing.<wbr/></p> 8668 </td> 8669 8670 <td class="entry_units"> 8671 </td> 8672 8673 <td class="entry_range"> 8674 </td> 8675 8676 <td class="entry_tags"> 8677 <ul class="entry_tags"> 8678 <li><a href="#tag_FUTURE">FUTURE</a></li> 8679 </ul> 8680 </td> 8681 8682 </tr> 8683 8684 8685 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8686 <!-- end of entry --> 8687 8688 8689 8690 <!-- end of kind --> 8691 </tbody> 8692 8693 <!-- end of section --> 8694 <tr><td colspan="6" id="section_edge" class="section">edge</td></tr> 8695 8696 8697 <tr><td colspan="6" class="kind">controls</td></tr> 8698 8699 <thead class="entries_header"> 8700 <tr> 8701 <th class="th_name">Property Name</th> 8702 <th class="th_type">Type</th> 8703 <th class="th_description">Description</th> 8704 <th class="th_units">Units</th> 8705 <th class="th_range">Range</th> 8706 <th class="th_tags">Tags</th> 8707 </tr> 8708 </thead> 8709 8710 <tbody> 8711 8712 8713 8714 8715 8716 8717 8718 8719 8720 8721 <tr class="entry" id="controls_android.edge.mode"> 8722 <td class="entry_name 8723 " rowspan="5"> 8724 android.<wbr/>edge.<wbr/>mode 8725 </td> 8726 <td class="entry_type"> 8727 <span class="entry_type_name entry_type_name_enum">byte</span> 8728 8729 <span class="entry_type_visibility"> [public]</span> 8730 8731 8732 <span class="entry_type_hwlevel">[full] </span> 8733 8734 8735 8736 <ul class="entry_type_enum"> 8737 <li> 8738 <span class="entry_type_enum_name">OFF</span> 8739 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 8740 </li> 8741 <li> 8742 <span class="entry_type_enum_name">FAST</span> 8743 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 8744relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 8745slow down frame rate relative to sensor.<wbr/></p></span> 8746 </li> 8747 <li> 8748 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8749 <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> 8750 </li> 8751 <li> 8752 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 8753 <span class="entry_type_enum_optional">[optional]</span> 8754 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/> 8755based 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 8756edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement 8757applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that 8758frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it 8759is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 8760<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 8761with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 8762high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 8763produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 8764high-resolution buffers must not have edge enhancement applied to maximize efficiency of 8765preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 8766buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 8767reasonable preview quality.<wbr/></p> 8768<p>This mode is guaranteed to be supported by devices that support either the 8769YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 8770(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 8771be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 8772 </li> 8773 </ul> 8774 8775 </td> <!-- entry_type --> 8776 8777 <td class="entry_description"> 8778 <p>Operation mode for edge 8779enhancement.<wbr/></p> 8780 </td> 8781 8782 <td class="entry_units"> 8783 </td> 8784 8785 <td class="entry_range"> 8786 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 8787 </td> 8788 8789 <td class="entry_tags"> 8790 <ul class="entry_tags"> 8791 <li><a href="#tag_V1">V1</a></li> 8792 <li><a href="#tag_REPROC">REPROC</a></li> 8793 </ul> 8794 </td> 8795 8796 </tr> 8797 <tr class="entries_header"> 8798 <th class="th_details" colspan="5">Details</th> 8799 </tr> 8800 <tr class="entry_cont"> 8801 <td class="entry_details" colspan="5"> 8802 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 8803no enhancement will be applied by the camera device.<wbr/></p> 8804<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 8805will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 8806camera device will use the highest-quality enhancement algorithms,<wbr/> 8807even if it slows down capture rate.<wbr/> FAST means the camera device will 8808not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 8809edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 8810amount of enhancement applied.<wbr/></p> 8811<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 8812buffer of high-resolution images during preview and reprocess image(s) from that buffer 8813into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 8814edge enhancement to low-resolution streams (below maximum recording resolution) to 8815maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 8816since those will be reprocessed later if necessary.<wbr/></p> 8817<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 8818device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 8819The camera device may adjust its internal edge enhancement parameters for best 8820image 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> 8821 </td> 8822 </tr> 8823 8824 <tr class="entries_header"> 8825 <th class="th_details" colspan="5">HAL Implementation Details</th> 8826 </tr> 8827 <tr class="entry_cont"> 8828 <td class="entry_details" colspan="5"> 8829 <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 8830adjust the internal edge enhancement reduction parameters appropriately to get the best 8831quality images.<wbr/></p> 8832 </td> 8833 </tr> 8834 8835 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8836 <!-- end of entry --> 8837 8838 8839 <tr class="entry" id="controls_android.edge.strength"> 8840 <td class="entry_name 8841 " rowspan="1"> 8842 android.<wbr/>edge.<wbr/>strength 8843 </td> 8844 <td class="entry_type"> 8845 <span class="entry_type_name">byte</span> 8846 8847 <span class="entry_type_visibility"> [system]</span> 8848 8849 8850 8851 8852 8853 8854 </td> <!-- entry_type --> 8855 8856 <td class="entry_description"> 8857 <p>Control the amount of edge enhancement 8858applied to the images</p> 8859 </td> 8860 8861 <td class="entry_units"> 8862 1-10; 10 is maximum sharpening 8863 </td> 8864 8865 <td class="entry_range"> 8866 </td> 8867 8868 <td class="entry_tags"> 8869 <ul class="entry_tags"> 8870 <li><a href="#tag_FUTURE">FUTURE</a></li> 8871 </ul> 8872 </td> 8873 8874 </tr> 8875 8876 8877 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8878 <!-- end of entry --> 8879 8880 8881 8882 <!-- end of kind --> 8883 </tbody> 8884 <tr><td colspan="6" class="kind">static</td></tr> 8885 8886 <thead class="entries_header"> 8887 <tr> 8888 <th class="th_name">Property Name</th> 8889 <th class="th_type">Type</th> 8890 <th class="th_description">Description</th> 8891 <th class="th_units">Units</th> 8892 <th class="th_range">Range</th> 8893 <th class="th_tags">Tags</th> 8894 </tr> 8895 </thead> 8896 8897 <tbody> 8898 8899 8900 8901 8902 8903 8904 8905 8906 8907 8908 <tr class="entry" id="static_android.edge.availableEdgeModes"> 8909 <td class="entry_name 8910 " rowspan="5"> 8911 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes 8912 </td> 8913 <td class="entry_type"> 8914 <span class="entry_type_name">byte</span> 8915 <span class="entry_type_container">x</span> 8916 8917 <span class="entry_type_array"> 8918 n 8919 </span> 8920 <span class="entry_type_visibility"> [public as enumList]</span> 8921 8922 8923 <span class="entry_type_hwlevel">[full] </span> 8924 8925 8926 <div class="entry_type_notes">list of enums</div> 8927 8928 8929 </td> <!-- entry_type --> 8930 8931 <td class="entry_description"> 8932 <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 8933device.<wbr/></p> 8934 </td> 8935 8936 <td class="entry_units"> 8937 </td> 8938 8939 <td class="entry_range"> 8940 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p> 8941 </td> 8942 8943 <td class="entry_tags"> 8944 <ul class="entry_tags"> 8945 <li><a href="#tag_V1">V1</a></li> 8946 <li><a href="#tag_REPROC">REPROC</a></li> 8947 </ul> 8948 </td> 8949 8950 </tr> 8951 <tr class="entries_header"> 8952 <th class="th_details" colspan="5">Details</th> 8953 </tr> 8954 <tr class="entry_cont"> 8955 <td class="entry_details" colspan="5"> 8956 <p>Full-capability camera devices must always support OFF; camera devices that support 8957YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will 8958list FAST.<wbr/></p> 8959 </td> 8960 </tr> 8961 8962 <tr class="entries_header"> 8963 <th class="th_details" colspan="5">HAL Implementation Details</th> 8964 </tr> 8965 <tr class="entry_cont"> 8966 <td class="entry_details" colspan="5"> 8967 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available 8968on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 8969That is,<wbr/> if the highest quality implementation on the camera device does not slow down 8970capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 8971 </td> 8972 </tr> 8973 8974 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8975 <!-- end of entry --> 8976 8977 8978 8979 <!-- end of kind --> 8980 </tbody> 8981 <tr><td colspan="6" class="kind">dynamic</td></tr> 8982 8983 <thead class="entries_header"> 8984 <tr> 8985 <th class="th_name">Property Name</th> 8986 <th class="th_type">Type</th> 8987 <th class="th_description">Description</th> 8988 <th class="th_units">Units</th> 8989 <th class="th_range">Range</th> 8990 <th class="th_tags">Tags</th> 8991 </tr> 8992 </thead> 8993 8994 <tbody> 8995 8996 8997 8998 8999 9000 9001 9002 9003 9004 9005 <tr class="entry" id="dynamic_android.edge.mode"> 9006 <td class="entry_name 9007 " rowspan="5"> 9008 android.<wbr/>edge.<wbr/>mode 9009 </td> 9010 <td class="entry_type"> 9011 <span class="entry_type_name entry_type_name_enum">byte</span> 9012 9013 <span class="entry_type_visibility"> [public]</span> 9014 9015 9016 <span class="entry_type_hwlevel">[full] </span> 9017 9018 9019 9020 <ul class="entry_type_enum"> 9021 <li> 9022 <span class="entry_type_enum_name">OFF</span> 9023 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 9024 </li> 9025 <li> 9026 <span class="entry_type_enum_name">FAST</span> 9027 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 9028relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 9029slow down frame rate relative to sensor.<wbr/></p></span> 9030 </li> 9031 <li> 9032 <span class="entry_type_enum_name">HIGH_QUALITY</span> 9033 <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> 9034 </li> 9035 <li> 9036 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 9037 <span class="entry_type_enum_optional">[optional]</span> 9038 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/> 9039based 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 9040edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement 9041applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that 9042frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it 9043is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 9044<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 9045with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 9046high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 9047produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 9048high-resolution buffers must not have edge enhancement applied to maximize efficiency of 9049preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 9050buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 9051reasonable preview quality.<wbr/></p> 9052<p>This mode is guaranteed to be supported by devices that support either the 9053YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 9054(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 9055be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 9056 </li> 9057 </ul> 9058 9059 </td> <!-- entry_type --> 9060 9061 <td class="entry_description"> 9062 <p>Operation mode for edge 9063enhancement.<wbr/></p> 9064 </td> 9065 9066 <td class="entry_units"> 9067 </td> 9068 9069 <td class="entry_range"> 9070 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 9071 </td> 9072 9073 <td class="entry_tags"> 9074 <ul class="entry_tags"> 9075 <li><a href="#tag_V1">V1</a></li> 9076 <li><a href="#tag_REPROC">REPROC</a></li> 9077 </ul> 9078 </td> 9079 9080 </tr> 9081 <tr class="entries_header"> 9082 <th class="th_details" colspan="5">Details</th> 9083 </tr> 9084 <tr class="entry_cont"> 9085 <td class="entry_details" colspan="5"> 9086 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 9087no enhancement will be applied by the camera device.<wbr/></p> 9088<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 9089will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 9090camera device will use the highest-quality enhancement algorithms,<wbr/> 9091even if it slows down capture rate.<wbr/> FAST means the camera device will 9092not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 9093edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 9094amount of enhancement applied.<wbr/></p> 9095<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 9096buffer of high-resolution images during preview and reprocess image(s) from that buffer 9097into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 9098edge enhancement to low-resolution streams (below maximum recording resolution) to 9099maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 9100since those will be reprocessed later if necessary.<wbr/></p> 9101<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 9102device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 9103The camera device may adjust its internal edge enhancement parameters for best 9104image 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> 9105 </td> 9106 </tr> 9107 9108 <tr class="entries_header"> 9109 <th class="th_details" colspan="5">HAL Implementation Details</th> 9110 </tr> 9111 <tr class="entry_cont"> 9112 <td class="entry_details" colspan="5"> 9113 <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 9114adjust the internal edge enhancement reduction parameters appropriately to get the best 9115quality images.<wbr/></p> 9116 </td> 9117 </tr> 9118 9119 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9120 <!-- end of entry --> 9121 9122 9123 9124 <!-- end of kind --> 9125 </tbody> 9126 9127 <!-- end of section --> 9128 <tr><td colspan="6" id="section_flash" class="section">flash</td></tr> 9129 9130 9131 <tr><td colspan="6" class="kind">controls</td></tr> 9132 9133 <thead class="entries_header"> 9134 <tr> 9135 <th class="th_name">Property Name</th> 9136 <th class="th_type">Type</th> 9137 <th class="th_description">Description</th> 9138 <th class="th_units">Units</th> 9139 <th class="th_range">Range</th> 9140 <th class="th_tags">Tags</th> 9141 </tr> 9142 </thead> 9143 9144 <tbody> 9145 9146 9147 9148 9149 9150 9151 9152 9153 9154 9155 <tr class="entry" id="controls_android.flash.firingPower"> 9156 <td class="entry_name 9157 " rowspan="3"> 9158 android.<wbr/>flash.<wbr/>firing<wbr/>Power 9159 </td> 9160 <td class="entry_type"> 9161 <span class="entry_type_name">byte</span> 9162 9163 <span class="entry_type_visibility"> [system]</span> 9164 9165 9166 9167 9168 9169 9170 </td> <!-- entry_type --> 9171 9172 <td class="entry_description"> 9173 <p>Power for flash firing/<wbr/>torch</p> 9174 </td> 9175 9176 <td class="entry_units"> 9177 10 is max power; 0 is no flash.<wbr/> Linear 9178 </td> 9179 9180 <td class="entry_range"> 9181 <p>0 - 10</p> 9182 </td> 9183 9184 <td class="entry_tags"> 9185 <ul class="entry_tags"> 9186 <li><a href="#tag_FUTURE">FUTURE</a></li> 9187 </ul> 9188 </td> 9189 9190 </tr> 9191 <tr class="entries_header"> 9192 <th class="th_details" colspan="5">Details</th> 9193 </tr> 9194 <tr class="entry_cont"> 9195 <td class="entry_details" colspan="5"> 9196 <p>Power for snapshot may use a different scale than 9197for torch mode.<wbr/> Only one entry for torch mode will be 9198used</p> 9199 </td> 9200 </tr> 9201 9202 9203 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9204 <!-- end of entry --> 9205 9206 9207 <tr class="entry" id="controls_android.flash.firingTime"> 9208 <td class="entry_name 9209 " rowspan="3"> 9210 android.<wbr/>flash.<wbr/>firing<wbr/>Time 9211 </td> 9212 <td class="entry_type"> 9213 <span class="entry_type_name">int64</span> 9214 9215 <span class="entry_type_visibility"> [system]</span> 9216 9217 9218 9219 9220 9221 9222 </td> <!-- entry_type --> 9223 9224 <td class="entry_description"> 9225 <p>Firing time of flash relative to start of 9226exposure</p> 9227 </td> 9228 9229 <td class="entry_units"> 9230 nanoseconds 9231 </td> 9232 9233 <td class="entry_range"> 9234 <p>0-(exposure time-flash duration)</p> 9235 </td> 9236 9237 <td class="entry_tags"> 9238 <ul class="entry_tags"> 9239 <li><a href="#tag_FUTURE">FUTURE</a></li> 9240 </ul> 9241 </td> 9242 9243 </tr> 9244 <tr class="entries_header"> 9245 <th class="th_details" colspan="5">Details</th> 9246 </tr> 9247 <tr class="entry_cont"> 9248 <td class="entry_details" colspan="5"> 9249 <p>Clamped to (0,<wbr/> exposure time - flash 9250duration).<wbr/></p> 9251 </td> 9252 </tr> 9253 9254 9255 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9256 <!-- end of entry --> 9257 9258 9259 <tr class="entry" id="controls_android.flash.mode"> 9260 <td class="entry_name 9261 " rowspan="3"> 9262 android.<wbr/>flash.<wbr/>mode 9263 </td> 9264 <td class="entry_type"> 9265 <span class="entry_type_name entry_type_name_enum">byte</span> 9266 9267 <span class="entry_type_visibility"> [public]</span> 9268 9269 9270 <span class="entry_type_hwlevel">[legacy] </span> 9271 9272 9273 9274 <ul class="entry_type_enum"> 9275 <li> 9276 <span class="entry_type_enum_name">OFF</span> 9277 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 9278 </li> 9279 <li> 9280 <span class="entry_type_enum_name">SINGLE</span> 9281 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 9282for this capture.<wbr/></p></span> 9283 </li> 9284 <li> 9285 <span class="entry_type_enum_name">TORCH</span> 9286 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 9287 </li> 9288 </ul> 9289 9290 </td> <!-- entry_type --> 9291 9292 <td class="entry_description"> 9293 <p>The desired mode for for the camera device's flash control.<wbr/></p> 9294 </td> 9295 9296 <td class="entry_units"> 9297 </td> 9298 9299 <td class="entry_range"> 9300 </td> 9301 9302 <td class="entry_tags"> 9303 <ul class="entry_tags"> 9304 <li><a href="#tag_BC">BC</a></li> 9305 </ul> 9306 </td> 9307 9308 </tr> 9309 <tr class="entries_header"> 9310 <th class="th_details" colspan="5">Details</th> 9311 </tr> 9312 <tr class="entry_cont"> 9313 <td class="entry_details" colspan="5"> 9314 <p>This control is only effective when flash unit is available 9315(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 9316<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/> 9317Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 9318ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 9319<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 9320<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 9321device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 9322control should be used along with auto-exposure (AE) precapture metering sequence 9323(<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> 9324<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 9325for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 9326<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> 9327 </td> 9328 </tr> 9329 9330 9331 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9332 <!-- end of entry --> 9333 9334 9335 9336 <!-- end of kind --> 9337 </tbody> 9338 <tr><td colspan="6" class="kind">static</td></tr> 9339 9340 <thead class="entries_header"> 9341 <tr> 9342 <th class="th_name">Property Name</th> 9343 <th class="th_type">Type</th> 9344 <th class="th_description">Description</th> 9345 <th class="th_units">Units</th> 9346 <th class="th_range">Range</th> 9347 <th class="th_tags">Tags</th> 9348 </tr> 9349 </thead> 9350 9351 <tbody> 9352 9353 9354 9355 9356 9357 9358 9359 9360 9361 9362 9363 9364 <tr class="entry" id="static_android.flash.info.available"> 9365 <td class="entry_name 9366 " rowspan="3"> 9367 android.<wbr/>flash.<wbr/>info.<wbr/>available 9368 </td> 9369 <td class="entry_type"> 9370 <span class="entry_type_name entry_type_name_enum">byte</span> 9371 9372 <span class="entry_type_visibility"> [public as boolean]</span> 9373 9374 9375 <span class="entry_type_hwlevel">[legacy] </span> 9376 9377 9378 9379 <ul class="entry_type_enum"> 9380 <li> 9381 <span class="entry_type_enum_name">FALSE</span> 9382 </li> 9383 <li> 9384 <span class="entry_type_enum_name">TRUE</span> 9385 </li> 9386 </ul> 9387 9388 </td> <!-- entry_type --> 9389 9390 <td class="entry_description"> 9391 <p>Whether this camera device has a 9392flash unit.<wbr/></p> 9393 </td> 9394 9395 <td class="entry_units"> 9396 </td> 9397 9398 <td class="entry_range"> 9399 </td> 9400 9401 <td class="entry_tags"> 9402 <ul class="entry_tags"> 9403 <li><a href="#tag_BC">BC</a></li> 9404 </ul> 9405 </td> 9406 9407 </tr> 9408 <tr class="entries_header"> 9409 <th class="th_details" colspan="5">Details</th> 9410 </tr> 9411 <tr class="entry_cont"> 9412 <td class="entry_details" colspan="5"> 9413 <p>Will be <code>false</code> if no flash is available.<wbr/></p> 9414<p>If there is no flash unit,<wbr/> none of the flash controls do 9415anything.<wbr/></p> 9416 </td> 9417 </tr> 9418 9419 9420 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9421 <!-- end of entry --> 9422 9423 9424 <tr class="entry" id="static_android.flash.info.chargeDuration"> 9425 <td class="entry_name 9426 " rowspan="3"> 9427 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration 9428 </td> 9429 <td class="entry_type"> 9430 <span class="entry_type_name">int64</span> 9431 9432 <span class="entry_type_visibility"> [system]</span> 9433 9434 9435 9436 9437 9438 9439 </td> <!-- entry_type --> 9440 9441 <td class="entry_description"> 9442 <p>Time taken before flash can fire 9443again</p> 9444 </td> 9445 9446 <td class="entry_units"> 9447 nanoseconds 9448 </td> 9449 9450 <td class="entry_range"> 9451 <p>0-1e9</p> 9452 </td> 9453 9454 <td class="entry_tags"> 9455 <ul class="entry_tags"> 9456 <li><a href="#tag_FUTURE">FUTURE</a></li> 9457 </ul> 9458 </td> 9459 9460 </tr> 9461 <tr class="entries_header"> 9462 <th class="th_details" colspan="5">Details</th> 9463 </tr> 9464 <tr class="entry_cont"> 9465 <td class="entry_details" colspan="5"> 9466 <p>1 second too long/<wbr/>too short for recharge? Should 9467this be power-dependent?</p> 9468 </td> 9469 </tr> 9470 9471 9472 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9473 <!-- end of entry --> 9474 9475 9476 9477 9478 9479 <tr class="entry" id="static_android.flash.colorTemperature"> 9480 <td class="entry_name 9481 " rowspan="1"> 9482 android.<wbr/>flash.<wbr/>color<wbr/>Temperature 9483 </td> 9484 <td class="entry_type"> 9485 <span class="entry_type_name">byte</span> 9486 9487 <span class="entry_type_visibility"> [system]</span> 9488 9489 9490 9491 9492 9493 9494 </td> <!-- entry_type --> 9495 9496 <td class="entry_description"> 9497 <p>The x,<wbr/>y whitepoint of the 9498flash</p> 9499 </td> 9500 9501 <td class="entry_units"> 9502 pair of floats 9503 </td> 9504 9505 <td class="entry_range"> 9506 <p>0-1 for both</p> 9507 </td> 9508 9509 <td class="entry_tags"> 9510 <ul class="entry_tags"> 9511 <li><a href="#tag_FUTURE">FUTURE</a></li> 9512 </ul> 9513 </td> 9514 9515 </tr> 9516 9517 9518 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9519 <!-- end of entry --> 9520 9521 9522 <tr class="entry" id="static_android.flash.maxEnergy"> 9523 <td class="entry_name 9524 " rowspan="1"> 9525 android.<wbr/>flash.<wbr/>max<wbr/>Energy 9526 </td> 9527 <td class="entry_type"> 9528 <span class="entry_type_name">byte</span> 9529 9530 <span class="entry_type_visibility"> [system]</span> 9531 9532 9533 9534 9535 9536 9537 </td> <!-- entry_type --> 9538 9539 <td class="entry_description"> 9540 <p>Max energy output of the flash for a full 9541power single flash</p> 9542 </td> 9543 9544 <td class="entry_units"> 9545 lumen-seconds 9546 </td> 9547 9548 <td class="entry_range"> 9549 <p>>= 0</p> 9550 </td> 9551 9552 <td class="entry_tags"> 9553 <ul class="entry_tags"> 9554 <li><a href="#tag_FUTURE">FUTURE</a></li> 9555 </ul> 9556 </td> 9557 9558 </tr> 9559 9560 9561 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9562 <!-- end of entry --> 9563 9564 9565 9566 <!-- end of kind --> 9567 </tbody> 9568 <tr><td colspan="6" class="kind">dynamic</td></tr> 9569 9570 <thead class="entries_header"> 9571 <tr> 9572 <th class="th_name">Property Name</th> 9573 <th class="th_type">Type</th> 9574 <th class="th_description">Description</th> 9575 <th class="th_units">Units</th> 9576 <th class="th_range">Range</th> 9577 <th class="th_tags">Tags</th> 9578 </tr> 9579 </thead> 9580 9581 <tbody> 9582 9583 9584 9585 9586 9587 9588 9589 9590 9591 9592 <tr class="entry" id="dynamic_android.flash.firingPower"> 9593 <td class="entry_name 9594 " rowspan="3"> 9595 android.<wbr/>flash.<wbr/>firing<wbr/>Power 9596 </td> 9597 <td class="entry_type"> 9598 <span class="entry_type_name">byte</span> 9599 9600 <span class="entry_type_visibility"> [system]</span> 9601 9602 9603 9604 9605 9606 9607 </td> <!-- entry_type --> 9608 9609 <td class="entry_description"> 9610 <p>Power for flash firing/<wbr/>torch</p> 9611 </td> 9612 9613 <td class="entry_units"> 9614 10 is max power; 0 is no flash.<wbr/> Linear 9615 </td> 9616 9617 <td class="entry_range"> 9618 <p>0 - 10</p> 9619 </td> 9620 9621 <td class="entry_tags"> 9622 <ul class="entry_tags"> 9623 <li><a href="#tag_FUTURE">FUTURE</a></li> 9624 </ul> 9625 </td> 9626 9627 </tr> 9628 <tr class="entries_header"> 9629 <th class="th_details" colspan="5">Details</th> 9630 </tr> 9631 <tr class="entry_cont"> 9632 <td class="entry_details" colspan="5"> 9633 <p>Power for snapshot may use a different scale than 9634for torch mode.<wbr/> Only one entry for torch mode will be 9635used</p> 9636 </td> 9637 </tr> 9638 9639 9640 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9641 <!-- end of entry --> 9642 9643 9644 <tr class="entry" id="dynamic_android.flash.firingTime"> 9645 <td class="entry_name 9646 " rowspan="3"> 9647 android.<wbr/>flash.<wbr/>firing<wbr/>Time 9648 </td> 9649 <td class="entry_type"> 9650 <span class="entry_type_name">int64</span> 9651 9652 <span class="entry_type_visibility"> [system]</span> 9653 9654 9655 9656 9657 9658 9659 </td> <!-- entry_type --> 9660 9661 <td class="entry_description"> 9662 <p>Firing time of flash relative to start of 9663exposure</p> 9664 </td> 9665 9666 <td class="entry_units"> 9667 nanoseconds 9668 </td> 9669 9670 <td class="entry_range"> 9671 <p>0-(exposure time-flash duration)</p> 9672 </td> 9673 9674 <td class="entry_tags"> 9675 <ul class="entry_tags"> 9676 <li><a href="#tag_FUTURE">FUTURE</a></li> 9677 </ul> 9678 </td> 9679 9680 </tr> 9681 <tr class="entries_header"> 9682 <th class="th_details" colspan="5">Details</th> 9683 </tr> 9684 <tr class="entry_cont"> 9685 <td class="entry_details" colspan="5"> 9686 <p>Clamped to (0,<wbr/> exposure time - flash 9687duration).<wbr/></p> 9688 </td> 9689 </tr> 9690 9691 9692 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9693 <!-- end of entry --> 9694 9695 9696 <tr class="entry" id="dynamic_android.flash.mode"> 9697 <td class="entry_name 9698 " rowspan="3"> 9699 android.<wbr/>flash.<wbr/>mode 9700 </td> 9701 <td class="entry_type"> 9702 <span class="entry_type_name entry_type_name_enum">byte</span> 9703 9704 <span class="entry_type_visibility"> [public]</span> 9705 9706 9707 <span class="entry_type_hwlevel">[legacy] </span> 9708 9709 9710 9711 <ul class="entry_type_enum"> 9712 <li> 9713 <span class="entry_type_enum_name">OFF</span> 9714 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 9715 </li> 9716 <li> 9717 <span class="entry_type_enum_name">SINGLE</span> 9718 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 9719for this capture.<wbr/></p></span> 9720 </li> 9721 <li> 9722 <span class="entry_type_enum_name">TORCH</span> 9723 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 9724 </li> 9725 </ul> 9726 9727 </td> <!-- entry_type --> 9728 9729 <td class="entry_description"> 9730 <p>The desired mode for for the camera device's flash control.<wbr/></p> 9731 </td> 9732 9733 <td class="entry_units"> 9734 </td> 9735 9736 <td class="entry_range"> 9737 </td> 9738 9739 <td class="entry_tags"> 9740 <ul class="entry_tags"> 9741 <li><a href="#tag_BC">BC</a></li> 9742 </ul> 9743 </td> 9744 9745 </tr> 9746 <tr class="entries_header"> 9747 <th class="th_details" colspan="5">Details</th> 9748 </tr> 9749 <tr class="entry_cont"> 9750 <td class="entry_details" colspan="5"> 9751 <p>This control is only effective when flash unit is available 9752(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 9753<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/> 9754Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 9755ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 9756<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 9757<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 9758device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 9759control should be used along with auto-exposure (AE) precapture metering sequence 9760(<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> 9761<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 9762for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 9763<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> 9764 </td> 9765 </tr> 9766 9767 9768 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9769 <!-- end of entry --> 9770 9771 9772 <tr class="entry" id="dynamic_android.flash.state"> 9773 <td class="entry_name 9774 " rowspan="3"> 9775 android.<wbr/>flash.<wbr/>state 9776 </td> 9777 <td class="entry_type"> 9778 <span class="entry_type_name entry_type_name_enum">byte</span> 9779 9780 <span class="entry_type_visibility"> [public]</span> 9781 9782 9783 <span class="entry_type_hwlevel">[limited] </span> 9784 9785 9786 9787 <ul class="entry_type_enum"> 9788 <li> 9789 <span class="entry_type_enum_name">UNAVAILABLE</span> 9790 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span> 9791 </li> 9792 <li> 9793 <span class="entry_type_enum_name">CHARGING</span> 9794 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span> 9795 </li> 9796 <li> 9797 <span class="entry_type_enum_name">READY</span> 9798 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span> 9799 </li> 9800 <li> 9801 <span class="entry_type_enum_name">FIRED</span> 9802 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span> 9803 </li> 9804 <li> 9805 <span class="entry_type_enum_name">PARTIAL</span> 9806 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p> 9807<p>This is usually due to the next or previous frame having 9808the flash fire,<wbr/> and the flash spilling into this capture 9809due to hardware limitations.<wbr/></p></span> 9810 </li> 9811 </ul> 9812 9813 </td> <!-- entry_type --> 9814 9815 <td class="entry_description"> 9816 <p>Current state of the flash 9817unit.<wbr/></p> 9818 </td> 9819 9820 <td class="entry_units"> 9821 </td> 9822 9823 <td class="entry_range"> 9824 </td> 9825 9826 <td class="entry_tags"> 9827 </td> 9828 9829 </tr> 9830 <tr class="entries_header"> 9831 <th class="th_details" colspan="5">Details</th> 9832 </tr> 9833 <tr class="entry_cont"> 9834 <td class="entry_details" colspan="5"> 9835 <p>When the camera device doesn't have flash unit 9836(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/> 9837Other states indicate the current flash status.<wbr/></p> 9838<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p> 9839<ul> 9840<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li> 9841<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH 9842 will always return FIRED.<wbr/></li> 9843<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH 9844 will always return FIRED.<wbr/></li> 9845</ul> 9846<p>In all other conditions the state will not be available on 9847LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p> 9848 </td> 9849 </tr> 9850 9851 9852 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9853 <!-- end of entry --> 9854 9855 9856 9857 <!-- end of kind --> 9858 </tbody> 9859 9860 <!-- end of section --> 9861 <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr> 9862 9863 9864 <tr><td colspan="6" class="kind">controls</td></tr> 9865 9866 <thead class="entries_header"> 9867 <tr> 9868 <th class="th_name">Property Name</th> 9869 <th class="th_type">Type</th> 9870 <th class="th_description">Description</th> 9871 <th class="th_units">Units</th> 9872 <th class="th_range">Range</th> 9873 <th class="th_tags">Tags</th> 9874 </tr> 9875 </thead> 9876 9877 <tbody> 9878 9879 9880 9881 9882 9883 9884 9885 9886 9887 9888 <tr class="entry" id="controls_android.hotPixel.mode"> 9889 <td class="entry_name 9890 " rowspan="3"> 9891 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 9892 </td> 9893 <td class="entry_type"> 9894 <span class="entry_type_name entry_type_name_enum">byte</span> 9895 9896 <span class="entry_type_visibility"> [public]</span> 9897 9898 9899 9900 9901 9902 <ul class="entry_type_enum"> 9903 <li> 9904 <span class="entry_type_enum_name">OFF</span> 9905 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 9906<p>The frame rate must not be reduced relative to sensor raw output 9907for this option.<wbr/></p> 9908<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> 9909 </li> 9910 <li> 9911 <span class="entry_type_enum_name">FAST</span> 9912 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 9913rate relative to sensor raw output.<wbr/></p> 9914<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> 9915 </li> 9916 <li> 9917 <span class="entry_type_enum_name">HIGH_QUALITY</span> 9918 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 9919of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 9920<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> 9921 </li> 9922 </ul> 9923 9924 </td> <!-- entry_type --> 9925 9926 <td class="entry_description"> 9927 <p>Operational mode for hot pixel correction.<wbr/></p> 9928 </td> 9929 9930 <td class="entry_units"> 9931 </td> 9932 9933 <td class="entry_range"> 9934 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 9935 </td> 9936 9937 <td class="entry_tags"> 9938 <ul class="entry_tags"> 9939 <li><a href="#tag_V1">V1</a></li> 9940 <li><a href="#tag_RAW">RAW</a></li> 9941 </ul> 9942 </td> 9943 9944 </tr> 9945 <tr class="entries_header"> 9946 <th class="th_details" colspan="5">Details</th> 9947 </tr> 9948 <tr class="entry_cont"> 9949 <td class="entry_details" colspan="5"> 9950 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 9951that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 9952are stuck at an arbitrary value or are oversensitive).<wbr/></p> 9953 </td> 9954 </tr> 9955 9956 9957 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9958 <!-- end of entry --> 9959 9960 9961 9962 <!-- end of kind --> 9963 </tbody> 9964 <tr><td colspan="6" class="kind">static</td></tr> 9965 9966 <thead class="entries_header"> 9967 <tr> 9968 <th class="th_name">Property Name</th> 9969 <th class="th_type">Type</th> 9970 <th class="th_description">Description</th> 9971 <th class="th_units">Units</th> 9972 <th class="th_range">Range</th> 9973 <th class="th_tags">Tags</th> 9974 </tr> 9975 </thead> 9976 9977 <tbody> 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes"> 9989 <td class="entry_name 9990 " rowspan="5"> 9991 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes 9992 </td> 9993 <td class="entry_type"> 9994 <span class="entry_type_name">byte</span> 9995 <span class="entry_type_container">x</span> 9996 9997 <span class="entry_type_array"> 9998 n 9999 </span> 10000 <span class="entry_type_visibility"> [public as enumList]</span> 10001 10002 10003 10004 10005 <div class="entry_type_notes">list of enums</div> 10006 10007 10008 </td> <!-- entry_type --> 10009 10010 <td class="entry_description"> 10011 <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 10012camera device.<wbr/></p> 10013 </td> 10014 10015 <td class="entry_units"> 10016 </td> 10017 10018 <td class="entry_range"> 10019 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p> 10020 </td> 10021 10022 <td class="entry_tags"> 10023 <ul class="entry_tags"> 10024 <li><a href="#tag_V1">V1</a></li> 10025 <li><a href="#tag_RAW">RAW</a></li> 10026 </ul> 10027 </td> 10028 10029 </tr> 10030 <tr class="entries_header"> 10031 <th class="th_details" colspan="5">Details</th> 10032 </tr> 10033 <tr class="entry_cont"> 10034 <td class="entry_details" colspan="5"> 10035 <p>FULL mode camera devices will always support FAST.<wbr/></p> 10036 </td> 10037 </tr> 10038 10039 <tr class="entries_header"> 10040 <th class="th_details" colspan="5">HAL Implementation Details</th> 10041 </tr> 10042 <tr class="entry_cont"> 10043 <td class="entry_details" colspan="5"> 10044 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot 10045pixels than actual pixels on the camera sensor.<wbr/> 10046HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available 10047on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 10048That is,<wbr/> if the highest quality implementation on the camera device does not slow down 10049capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 10050 </td> 10051 </tr> 10052 10053 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10054 <!-- end of entry --> 10055 10056 10057 10058 <!-- end of kind --> 10059 </tbody> 10060 <tr><td colspan="6" class="kind">dynamic</td></tr> 10061 10062 <thead class="entries_header"> 10063 <tr> 10064 <th class="th_name">Property Name</th> 10065 <th class="th_type">Type</th> 10066 <th class="th_description">Description</th> 10067 <th class="th_units">Units</th> 10068 <th class="th_range">Range</th> 10069 <th class="th_tags">Tags</th> 10070 </tr> 10071 </thead> 10072 10073 <tbody> 10074 10075 10076 10077 10078 10079 10080 10081 10082 10083 10084 <tr class="entry" id="dynamic_android.hotPixel.mode"> 10085 <td class="entry_name 10086 " rowspan="3"> 10087 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 10088 </td> 10089 <td class="entry_type"> 10090 <span class="entry_type_name entry_type_name_enum">byte</span> 10091 10092 <span class="entry_type_visibility"> [public]</span> 10093 10094 10095 10096 10097 10098 <ul class="entry_type_enum"> 10099 <li> 10100 <span class="entry_type_enum_name">OFF</span> 10101 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 10102<p>The frame rate must not be reduced relative to sensor raw output 10103for this option.<wbr/></p> 10104<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> 10105 </li> 10106 <li> 10107 <span class="entry_type_enum_name">FAST</span> 10108 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 10109rate relative to sensor raw output.<wbr/></p> 10110<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> 10111 </li> 10112 <li> 10113 <span class="entry_type_enum_name">HIGH_QUALITY</span> 10114 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 10115of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 10116<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> 10117 </li> 10118 </ul> 10119 10120 </td> <!-- entry_type --> 10121 10122 <td class="entry_description"> 10123 <p>Operational mode for hot pixel correction.<wbr/></p> 10124 </td> 10125 10126 <td class="entry_units"> 10127 </td> 10128 10129 <td class="entry_range"> 10130 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 10131 </td> 10132 10133 <td class="entry_tags"> 10134 <ul class="entry_tags"> 10135 <li><a href="#tag_V1">V1</a></li> 10136 <li><a href="#tag_RAW">RAW</a></li> 10137 </ul> 10138 </td> 10139 10140 </tr> 10141 <tr class="entries_header"> 10142 <th class="th_details" colspan="5">Details</th> 10143 </tr> 10144 <tr class="entry_cont"> 10145 <td class="entry_details" colspan="5"> 10146 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 10147that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 10148are stuck at an arbitrary value or are oversensitive).<wbr/></p> 10149 </td> 10150 </tr> 10151 10152 10153 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10154 <!-- end of entry --> 10155 10156 10157 10158 <!-- end of kind --> 10159 </tbody> 10160 10161 <!-- end of section --> 10162 <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr> 10163 10164 10165 <tr><td colspan="6" class="kind">controls</td></tr> 10166 10167 <thead class="entries_header"> 10168 <tr> 10169 <th class="th_name">Property Name</th> 10170 <th class="th_type">Type</th> 10171 <th class="th_description">Description</th> 10172 <th class="th_units">Units</th> 10173 <th class="th_range">Range</th> 10174 <th class="th_tags">Tags</th> 10175 </tr> 10176 </thead> 10177 10178 <tbody> 10179 10180 10181 10182 10183 10184 10185 10186 10187 10188 10189 <tr class="entry" id="controls_android.jpeg.gpsLocation"> 10190 <td class="entry_name 10191 " rowspan="3"> 10192 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 10193 </td> 10194 <td class="entry_type"> 10195 <span class="entry_type_name">byte</span> 10196 10197 <span class="entry_type_visibility"> [public as location]</span> 10198 10199 <span class="entry_type_synthetic">[synthetic] </span> 10200 10201 <span class="entry_type_hwlevel">[legacy] </span> 10202 10203 10204 10205 10206 </td> <!-- entry_type --> 10207 10208 <td class="entry_description"> 10209 <p>A location object to use when generating image GPS metadata.<wbr/></p> 10210 </td> 10211 10212 <td class="entry_units"> 10213 </td> 10214 10215 <td class="entry_range"> 10216 </td> 10217 10218 <td class="entry_tags"> 10219 </td> 10220 10221 </tr> 10222 <tr class="entries_header"> 10223 <th class="th_details" colspan="5">Details</th> 10224 </tr> 10225 <tr class="entry_cont"> 10226 <td class="entry_details" colspan="5"> 10227 <p>Setting a location object in a request will include the GPS coordinates of the location 10228into any JPEG images captured based on the request.<wbr/> These coordinates can then be 10229viewed by anyone who receives the JPEG image.<wbr/></p> 10230 </td> 10231 </tr> 10232 10233 10234 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10235 <!-- end of entry --> 10236 10237 10238 <tr class="entry" id="controls_android.jpeg.gpsCoordinates"> 10239 <td class="entry_name 10240 " rowspan="1"> 10241 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 10242 </td> 10243 <td class="entry_type"> 10244 <span class="entry_type_name">double</span> 10245 <span class="entry_type_container">x</span> 10246 10247 <span class="entry_type_array"> 10248 3 10249 </span> 10250 <span class="entry_type_visibility"> [hidden]</span> 10251 10252 10253 <span class="entry_type_hwlevel">[legacy] </span> 10254 10255 10256 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 10257 10258 10259 </td> <!-- entry_type --> 10260 10261 <td class="entry_description"> 10262 <p>GPS coordinates to include in output JPEG 10263EXIF.<wbr/></p> 10264 </td> 10265 10266 <td class="entry_units"> 10267 </td> 10268 10269 <td class="entry_range"> 10270 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 10271 </td> 10272 10273 <td class="entry_tags"> 10274 <ul class="entry_tags"> 10275 <li><a href="#tag_BC">BC</a></li> 10276 </ul> 10277 </td> 10278 10279 </tr> 10280 10281 10282 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10283 <!-- end of entry --> 10284 10285 10286 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod"> 10287 <td class="entry_name 10288 " rowspan="1"> 10289 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 10290 </td> 10291 <td class="entry_type"> 10292 <span class="entry_type_name">byte</span> 10293 10294 <span class="entry_type_visibility"> [hidden as string]</span> 10295 10296 10297 <span class="entry_type_hwlevel">[legacy] </span> 10298 10299 10300 10301 10302 </td> <!-- entry_type --> 10303 10304 <td class="entry_description"> 10305 <p>32 characters describing GPS algorithm to 10306include in EXIF.<wbr/></p> 10307 </td> 10308 10309 <td class="entry_units"> 10310 UTF-8 null-terminated string 10311 </td> 10312 10313 <td class="entry_range"> 10314 </td> 10315 10316 <td class="entry_tags"> 10317 <ul class="entry_tags"> 10318 <li><a href="#tag_BC">BC</a></li> 10319 </ul> 10320 </td> 10321 10322 </tr> 10323 10324 10325 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10326 <!-- end of entry --> 10327 10328 10329 <tr class="entry" id="controls_android.jpeg.gpsTimestamp"> 10330 <td class="entry_name 10331 " rowspan="1"> 10332 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 10333 </td> 10334 <td class="entry_type"> 10335 <span class="entry_type_name">int64</span> 10336 10337 <span class="entry_type_visibility"> [hidden]</span> 10338 10339 10340 <span class="entry_type_hwlevel">[legacy] </span> 10341 10342 10343 10344 10345 </td> <!-- entry_type --> 10346 10347 <td class="entry_description"> 10348 <p>Time GPS fix was made to include in 10349EXIF.<wbr/></p> 10350 </td> 10351 10352 <td class="entry_units"> 10353 UTC in seconds since January 1,<wbr/> 1970 10354 </td> 10355 10356 <td class="entry_range"> 10357 </td> 10358 10359 <td class="entry_tags"> 10360 <ul class="entry_tags"> 10361 <li><a href="#tag_BC">BC</a></li> 10362 </ul> 10363 </td> 10364 10365 </tr> 10366 10367 10368 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10369 <!-- end of entry --> 10370 10371 10372 <tr class="entry" id="controls_android.jpeg.orientation"> 10373 <td class="entry_name 10374 " rowspan="3"> 10375 android.<wbr/>jpeg.<wbr/>orientation 10376 </td> 10377 <td class="entry_type"> 10378 <span class="entry_type_name">int32</span> 10379 10380 <span class="entry_type_visibility"> [public]</span> 10381 10382 10383 <span class="entry_type_hwlevel">[legacy] </span> 10384 10385 10386 10387 10388 </td> <!-- entry_type --> 10389 10390 <td class="entry_description"> 10391 <p>The orientation for a JPEG image.<wbr/></p> 10392 </td> 10393 10394 <td class="entry_units"> 10395 Degrees in multiples of 90 10396 </td> 10397 10398 <td class="entry_range"> 10399 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 10400 </td> 10401 10402 <td class="entry_tags"> 10403 <ul class="entry_tags"> 10404 <li><a href="#tag_BC">BC</a></li> 10405 </ul> 10406 </td> 10407 10408 </tr> 10409 <tr class="entries_header"> 10410 <th class="th_details" colspan="5">Details</th> 10411 </tr> 10412 <tr class="entry_cont"> 10413 <td class="entry_details" colspan="5"> 10414 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 10415to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 10416upright.<wbr/></p> 10417<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 10418rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 10419the thumbnail data will also be rotated.<wbr/></p> 10420<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 10421by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 10422<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following 10423sample code may be used:</p> 10424<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 10425 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 10426 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 10427 10428 //<wbr/> Round device orientation to a multiple of 90 10429 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 10430 10431 //<wbr/> Reverse device orientation for front-facing cameras 10432 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 10433 if (facingFront) deviceOrientation = -deviceOrientation; 10434 10435 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 10436 //<wbr/> the image upright relative to the device orientation 10437 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 10438 10439 return jpegOrientation; 10440} 10441</code></pre> 10442 </td> 10443 </tr> 10444 10445 10446 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10447 <!-- end of entry --> 10448 10449 10450 <tr class="entry" id="controls_android.jpeg.quality"> 10451 <td class="entry_name 10452 " rowspan="3"> 10453 android.<wbr/>jpeg.<wbr/>quality 10454 </td> 10455 <td class="entry_type"> 10456 <span class="entry_type_name">byte</span> 10457 10458 <span class="entry_type_visibility"> [public]</span> 10459 10460 10461 <span class="entry_type_hwlevel">[legacy] </span> 10462 10463 10464 10465 10466 </td> <!-- entry_type --> 10467 10468 <td class="entry_description"> 10469 <p>Compression quality of the final JPEG 10470image.<wbr/></p> 10471 </td> 10472 10473 <td class="entry_units"> 10474 </td> 10475 10476 <td class="entry_range"> 10477 <p>1-100; larger is higher quality</p> 10478 </td> 10479 10480 <td class="entry_tags"> 10481 <ul class="entry_tags"> 10482 <li><a href="#tag_BC">BC</a></li> 10483 </ul> 10484 </td> 10485 10486 </tr> 10487 <tr class="entries_header"> 10488 <th class="th_details" colspan="5">Details</th> 10489 </tr> 10490 <tr class="entry_cont"> 10491 <td class="entry_details" colspan="5"> 10492 <p>85-95 is typical usage range.<wbr/></p> 10493 </td> 10494 </tr> 10495 10496 10497 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10498 <!-- end of entry --> 10499 10500 10501 <tr class="entry" id="controls_android.jpeg.thumbnailQuality"> 10502 <td class="entry_name 10503 " rowspan="1"> 10504 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 10505 </td> 10506 <td class="entry_type"> 10507 <span class="entry_type_name">byte</span> 10508 10509 <span class="entry_type_visibility"> [public]</span> 10510 10511 10512 <span class="entry_type_hwlevel">[legacy] </span> 10513 10514 10515 10516 10517 </td> <!-- entry_type --> 10518 10519 <td class="entry_description"> 10520 <p>Compression quality of JPEG 10521thumbnail.<wbr/></p> 10522 </td> 10523 10524 <td class="entry_units"> 10525 </td> 10526 10527 <td class="entry_range"> 10528 <p>1-100; larger is higher quality</p> 10529 </td> 10530 10531 <td class="entry_tags"> 10532 <ul class="entry_tags"> 10533 <li><a href="#tag_BC">BC</a></li> 10534 </ul> 10535 </td> 10536 10537 </tr> 10538 10539 10540 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10541 <!-- end of entry --> 10542 10543 10544 <tr class="entry" id="controls_android.jpeg.thumbnailSize"> 10545 <td class="entry_name 10546 " rowspan="5"> 10547 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 10548 </td> 10549 <td class="entry_type"> 10550 <span class="entry_type_name">int32</span> 10551 <span class="entry_type_container">x</span> 10552 10553 <span class="entry_type_array"> 10554 2 10555 </span> 10556 <span class="entry_type_visibility"> [public as size]</span> 10557 10558 10559 <span class="entry_type_hwlevel">[legacy] </span> 10560 10561 10562 10563 10564 </td> <!-- entry_type --> 10565 10566 <td class="entry_description"> 10567 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 10568 </td> 10569 10570 <td class="entry_units"> 10571 </td> 10572 10573 <td class="entry_range"> 10574 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 10575 </td> 10576 10577 <td class="entry_tags"> 10578 <ul class="entry_tags"> 10579 <li><a href="#tag_BC">BC</a></li> 10580 </ul> 10581 </td> 10582 10583 </tr> 10584 <tr class="entries_header"> 10585 <th class="th_details" colspan="5">Details</th> 10586 </tr> 10587 <tr class="entry_cont"> 10588 <td class="entry_details" colspan="5"> 10589 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 10590but the captured JPEG will still be a valid image.<wbr/></p> 10591<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 10592should have the same aspect ratio as the main JPEG output.<wbr/></p> 10593<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 10594ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 10595For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1059616:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 10597generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 10598Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 10599<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 10600the camera device will handle thumbnail rotation in one of the following ways:</p> 10601<ul> 10602<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 10603 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 10604<li>Rotate the jpeg and thumbnail image data and not set 10605 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 10606 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in 10607 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 10608 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 10609 size.<wbr/></li> 10610</ul> 10611 </td> 10612 </tr> 10613 10614 <tr class="entries_header"> 10615 <th class="th_details" colspan="5">HAL Implementation Details</th> 10616 </tr> 10617 <tr class="entry_cont"> 10618 <td class="entry_details" colspan="5"> 10619 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 10620The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 10621The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 10622thumbnail image cropping.<wbr/></p> 10623 </td> 10624 </tr> 10625 10626 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10627 <!-- end of entry --> 10628 10629 10630 10631 <!-- end of kind --> 10632 </tbody> 10633 <tr><td colspan="6" class="kind">static</td></tr> 10634 10635 <thead class="entries_header"> 10636 <tr> 10637 <th class="th_name">Property Name</th> 10638 <th class="th_type">Type</th> 10639 <th class="th_description">Description</th> 10640 <th class="th_units">Units</th> 10641 <th class="th_range">Range</th> 10642 <th class="th_tags">Tags</th> 10643 </tr> 10644 </thead> 10645 10646 <tbody> 10647 10648 10649 10650 10651 10652 10653 10654 10655 10656 10657 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes"> 10658 <td class="entry_name 10659 " rowspan="3"> 10660 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes 10661 </td> 10662 <td class="entry_type"> 10663 <span class="entry_type_name">int32</span> 10664 <span class="entry_type_container">x</span> 10665 10666 <span class="entry_type_array"> 10667 2 x n 10668 </span> 10669 <span class="entry_type_visibility"> [public as size]</span> 10670 10671 10672 <span class="entry_type_hwlevel">[legacy] </span> 10673 10674 10675 10676 10677 </td> <!-- entry_type --> 10678 10679 <td class="entry_description"> 10680 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this 10681camera device.<wbr/></p> 10682 </td> 10683 10684 <td class="entry_units"> 10685 </td> 10686 10687 <td class="entry_range"> 10688 </td> 10689 10690 <td class="entry_tags"> 10691 <ul class="entry_tags"> 10692 <li><a href="#tag_BC">BC</a></li> 10693 </ul> 10694 </td> 10695 10696 </tr> 10697 <tr class="entries_header"> 10698 <th class="th_details" colspan="5">Details</th> 10699 </tr> 10700 <tr class="entry_cont"> 10701 <td class="entry_details" colspan="5"> 10702 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no 10703thumbnail should be generated.<wbr/></p> 10704<p>Below condiditions will be satisfied for this size list:</p> 10705<ul> 10706<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/> 10707If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li> 10708<li>The aspect ratio of the largest thumbnail size will be same as the 10709aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 10710The largest size is defined as the size that has the largest pixel area 10711in a given size list.<wbr/></li> 10712<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 10713one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> 10714and vice versa.<wbr/></li> 10715<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li> 10716</ul> 10717 </td> 10718 </tr> 10719 10720 10721 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10722 <!-- end of entry --> 10723 10724 10725 <tr class="entry" id="static_android.jpeg.maxSize"> 10726 <td class="entry_name 10727 " rowspan="3"> 10728 android.<wbr/>jpeg.<wbr/>max<wbr/>Size 10729 </td> 10730 <td class="entry_type"> 10731 <span class="entry_type_name">int32</span> 10732 10733 <span class="entry_type_visibility"> [system]</span> 10734 10735 10736 10737 10738 10739 10740 </td> <!-- entry_type --> 10741 10742 <td class="entry_description"> 10743 <p>Maximum size in bytes for the compressed 10744JPEG buffer</p> 10745 </td> 10746 10747 <td class="entry_units"> 10748 </td> 10749 10750 <td class="entry_range"> 10751 <p>Must be large enough to fit any JPEG produced by 10752the camera</p> 10753 </td> 10754 10755 <td class="entry_tags"> 10756 </td> 10757 10758 </tr> 10759 <tr class="entries_header"> 10760 <th class="th_details" colspan="5">Details</th> 10761 </tr> 10762 <tr class="entry_cont"> 10763 <td class="entry_details" colspan="5"> 10764 <p>This is used for sizing the gralloc buffers for 10765JPEG</p> 10766 </td> 10767 </tr> 10768 10769 10770 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10771 <!-- end of entry --> 10772 10773 10774 10775 <!-- end of kind --> 10776 </tbody> 10777 <tr><td colspan="6" class="kind">dynamic</td></tr> 10778 10779 <thead class="entries_header"> 10780 <tr> 10781 <th class="th_name">Property Name</th> 10782 <th class="th_type">Type</th> 10783 <th class="th_description">Description</th> 10784 <th class="th_units">Units</th> 10785 <th class="th_range">Range</th> 10786 <th class="th_tags">Tags</th> 10787 </tr> 10788 </thead> 10789 10790 <tbody> 10791 10792 10793 10794 10795 10796 10797 10798 10799 10800 10801 <tr class="entry" id="dynamic_android.jpeg.gpsLocation"> 10802 <td class="entry_name 10803 " rowspan="3"> 10804 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 10805 </td> 10806 <td class="entry_type"> 10807 <span class="entry_type_name">byte</span> 10808 10809 <span class="entry_type_visibility"> [public as location]</span> 10810 10811 <span class="entry_type_synthetic">[synthetic] </span> 10812 10813 <span class="entry_type_hwlevel">[legacy] </span> 10814 10815 10816 10817 10818 </td> <!-- entry_type --> 10819 10820 <td class="entry_description"> 10821 <p>A location object to use when generating image GPS metadata.<wbr/></p> 10822 </td> 10823 10824 <td class="entry_units"> 10825 </td> 10826 10827 <td class="entry_range"> 10828 </td> 10829 10830 <td class="entry_tags"> 10831 </td> 10832 10833 </tr> 10834 <tr class="entries_header"> 10835 <th class="th_details" colspan="5">Details</th> 10836 </tr> 10837 <tr class="entry_cont"> 10838 <td class="entry_details" colspan="5"> 10839 <p>Setting a location object in a request will include the GPS coordinates of the location 10840into any JPEG images captured based on the request.<wbr/> These coordinates can then be 10841viewed by anyone who receives the JPEG image.<wbr/></p> 10842 </td> 10843 </tr> 10844 10845 10846 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10847 <!-- end of entry --> 10848 10849 10850 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates"> 10851 <td class="entry_name 10852 " rowspan="1"> 10853 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 10854 </td> 10855 <td class="entry_type"> 10856 <span class="entry_type_name">double</span> 10857 <span class="entry_type_container">x</span> 10858 10859 <span class="entry_type_array"> 10860 3 10861 </span> 10862 <span class="entry_type_visibility"> [hidden]</span> 10863 10864 10865 <span class="entry_type_hwlevel">[legacy] </span> 10866 10867 10868 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 10869 10870 10871 </td> <!-- entry_type --> 10872 10873 <td class="entry_description"> 10874 <p>GPS coordinates to include in output JPEG 10875EXIF.<wbr/></p> 10876 </td> 10877 10878 <td class="entry_units"> 10879 </td> 10880 10881 <td class="entry_range"> 10882 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 10883 </td> 10884 10885 <td class="entry_tags"> 10886 <ul class="entry_tags"> 10887 <li><a href="#tag_BC">BC</a></li> 10888 </ul> 10889 </td> 10890 10891 </tr> 10892 10893 10894 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10895 <!-- end of entry --> 10896 10897 10898 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod"> 10899 <td class="entry_name 10900 " rowspan="1"> 10901 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 10902 </td> 10903 <td class="entry_type"> 10904 <span class="entry_type_name">byte</span> 10905 10906 <span class="entry_type_visibility"> [hidden as string]</span> 10907 10908 10909 <span class="entry_type_hwlevel">[legacy] </span> 10910 10911 10912 10913 10914 </td> <!-- entry_type --> 10915 10916 <td class="entry_description"> 10917 <p>32 characters describing GPS algorithm to 10918include in EXIF.<wbr/></p> 10919 </td> 10920 10921 <td class="entry_units"> 10922 UTF-8 null-terminated string 10923 </td> 10924 10925 <td class="entry_range"> 10926 </td> 10927 10928 <td class="entry_tags"> 10929 <ul class="entry_tags"> 10930 <li><a href="#tag_BC">BC</a></li> 10931 </ul> 10932 </td> 10933 10934 </tr> 10935 10936 10937 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10938 <!-- end of entry --> 10939 10940 10941 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp"> 10942 <td class="entry_name 10943 " rowspan="1"> 10944 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 10945 </td> 10946 <td class="entry_type"> 10947 <span class="entry_type_name">int64</span> 10948 10949 <span class="entry_type_visibility"> [hidden]</span> 10950 10951 10952 <span class="entry_type_hwlevel">[legacy] </span> 10953 10954 10955 10956 10957 </td> <!-- entry_type --> 10958 10959 <td class="entry_description"> 10960 <p>Time GPS fix was made to include in 10961EXIF.<wbr/></p> 10962 </td> 10963 10964 <td class="entry_units"> 10965 UTC in seconds since January 1,<wbr/> 1970 10966 </td> 10967 10968 <td class="entry_range"> 10969 </td> 10970 10971 <td class="entry_tags"> 10972 <ul class="entry_tags"> 10973 <li><a href="#tag_BC">BC</a></li> 10974 </ul> 10975 </td> 10976 10977 </tr> 10978 10979 10980 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10981 <!-- end of entry --> 10982 10983 10984 <tr class="entry" id="dynamic_android.jpeg.orientation"> 10985 <td class="entry_name 10986 " rowspan="3"> 10987 android.<wbr/>jpeg.<wbr/>orientation 10988 </td> 10989 <td class="entry_type"> 10990 <span class="entry_type_name">int32</span> 10991 10992 <span class="entry_type_visibility"> [public]</span> 10993 10994 10995 <span class="entry_type_hwlevel">[legacy] </span> 10996 10997 10998 10999 11000 </td> <!-- entry_type --> 11001 11002 <td class="entry_description"> 11003 <p>The orientation for a JPEG image.<wbr/></p> 11004 </td> 11005 11006 <td class="entry_units"> 11007 Degrees in multiples of 90 11008 </td> 11009 11010 <td class="entry_range"> 11011 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 11012 </td> 11013 11014 <td class="entry_tags"> 11015 <ul class="entry_tags"> 11016 <li><a href="#tag_BC">BC</a></li> 11017 </ul> 11018 </td> 11019 11020 </tr> 11021 <tr class="entries_header"> 11022 <th class="th_details" colspan="5">Details</th> 11023 </tr> 11024 <tr class="entry_cont"> 11025 <td class="entry_details" colspan="5"> 11026 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 11027to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 11028upright.<wbr/></p> 11029<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 11030rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 11031the thumbnail data will also be rotated.<wbr/></p> 11032<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 11033by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 11034<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following 11035sample code may be used:</p> 11036<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 11037 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 11038 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 11039 11040 //<wbr/> Round device orientation to a multiple of 90 11041 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 11042 11043 //<wbr/> Reverse device orientation for front-facing cameras 11044 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 11045 if (facingFront) deviceOrientation = -deviceOrientation; 11046 11047 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 11048 //<wbr/> the image upright relative to the device orientation 11049 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 11050 11051 return jpegOrientation; 11052} 11053</code></pre> 11054 </td> 11055 </tr> 11056 11057 11058 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11059 <!-- end of entry --> 11060 11061 11062 <tr class="entry" id="dynamic_android.jpeg.quality"> 11063 <td class="entry_name 11064 " rowspan="3"> 11065 android.<wbr/>jpeg.<wbr/>quality 11066 </td> 11067 <td class="entry_type"> 11068 <span class="entry_type_name">byte</span> 11069 11070 <span class="entry_type_visibility"> [public]</span> 11071 11072 11073 <span class="entry_type_hwlevel">[legacy] </span> 11074 11075 11076 11077 11078 </td> <!-- entry_type --> 11079 11080 <td class="entry_description"> 11081 <p>Compression quality of the final JPEG 11082image.<wbr/></p> 11083 </td> 11084 11085 <td class="entry_units"> 11086 </td> 11087 11088 <td class="entry_range"> 11089 <p>1-100; larger is higher quality</p> 11090 </td> 11091 11092 <td class="entry_tags"> 11093 <ul class="entry_tags"> 11094 <li><a href="#tag_BC">BC</a></li> 11095 </ul> 11096 </td> 11097 11098 </tr> 11099 <tr class="entries_header"> 11100 <th class="th_details" colspan="5">Details</th> 11101 </tr> 11102 <tr class="entry_cont"> 11103 <td class="entry_details" colspan="5"> 11104 <p>85-95 is typical usage range.<wbr/></p> 11105 </td> 11106 </tr> 11107 11108 11109 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11110 <!-- end of entry --> 11111 11112 11113 <tr class="entry" id="dynamic_android.jpeg.size"> 11114 <td class="entry_name 11115 " rowspan="3"> 11116 android.<wbr/>jpeg.<wbr/>size 11117 </td> 11118 <td class="entry_type"> 11119 <span class="entry_type_name">int32</span> 11120 11121 <span class="entry_type_visibility"> [system]</span> 11122 11123 11124 11125 11126 11127 11128 </td> <!-- entry_type --> 11129 11130 <td class="entry_description"> 11131 <p>The size of the compressed JPEG image,<wbr/> in 11132bytes</p> 11133 </td> 11134 11135 <td class="entry_units"> 11136 </td> 11137 11138 <td class="entry_range"> 11139 <p>>= 0</p> 11140 </td> 11141 11142 <td class="entry_tags"> 11143 <ul class="entry_tags"> 11144 <li><a href="#tag_FUTURE">FUTURE</a></li> 11145 </ul> 11146 </td> 11147 11148 </tr> 11149 <tr class="entries_header"> 11150 <th class="th_details" colspan="5">Details</th> 11151 </tr> 11152 <tr class="entry_cont"> 11153 <td class="entry_details" colspan="5"> 11154 <p>If no JPEG output is produced for the request,<wbr/> 11155this must be 0.<wbr/></p> 11156<p>Otherwise,<wbr/> this describes the real size of the compressed 11157JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> 11158if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture 11159has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from 11160the JPEG stream will be 1000000 bytes,<wbr/> of which the first 11161500000 make up the real data.<wbr/></p> 11162 </td> 11163 </tr> 11164 11165 11166 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11167 <!-- end of entry --> 11168 11169 11170 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality"> 11171 <td class="entry_name 11172 " rowspan="1"> 11173 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 11174 </td> 11175 <td class="entry_type"> 11176 <span class="entry_type_name">byte</span> 11177 11178 <span class="entry_type_visibility"> [public]</span> 11179 11180 11181 <span class="entry_type_hwlevel">[legacy] </span> 11182 11183 11184 11185 11186 </td> <!-- entry_type --> 11187 11188 <td class="entry_description"> 11189 <p>Compression quality of JPEG 11190thumbnail.<wbr/></p> 11191 </td> 11192 11193 <td class="entry_units"> 11194 </td> 11195 11196 <td class="entry_range"> 11197 <p>1-100; larger is higher quality</p> 11198 </td> 11199 11200 <td class="entry_tags"> 11201 <ul class="entry_tags"> 11202 <li><a href="#tag_BC">BC</a></li> 11203 </ul> 11204 </td> 11205 11206 </tr> 11207 11208 11209 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11210 <!-- end of entry --> 11211 11212 11213 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize"> 11214 <td class="entry_name 11215 " rowspan="5"> 11216 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 11217 </td> 11218 <td class="entry_type"> 11219 <span class="entry_type_name">int32</span> 11220 <span class="entry_type_container">x</span> 11221 11222 <span class="entry_type_array"> 11223 2 11224 </span> 11225 <span class="entry_type_visibility"> [public as size]</span> 11226 11227 11228 <span class="entry_type_hwlevel">[legacy] </span> 11229 11230 11231 11232 11233 </td> <!-- entry_type --> 11234 11235 <td class="entry_description"> 11236 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 11237 </td> 11238 11239 <td class="entry_units"> 11240 </td> 11241 11242 <td class="entry_range"> 11243 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 11244 </td> 11245 11246 <td class="entry_tags"> 11247 <ul class="entry_tags"> 11248 <li><a href="#tag_BC">BC</a></li> 11249 </ul> 11250 </td> 11251 11252 </tr> 11253 <tr class="entries_header"> 11254 <th class="th_details" colspan="5">Details</th> 11255 </tr> 11256 <tr class="entry_cont"> 11257 <td class="entry_details" colspan="5"> 11258 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 11259but the captured JPEG will still be a valid image.<wbr/></p> 11260<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 11261should have the same aspect ratio as the main JPEG output.<wbr/></p> 11262<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 11263ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 11264For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1126516:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 11266generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 11267Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 11268<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 11269the camera device will handle thumbnail rotation in one of the following ways:</p> 11270<ul> 11271<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 11272 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 11273<li>Rotate the jpeg and thumbnail image data and not set 11274 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 11275 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in 11276 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 11277 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 11278 size.<wbr/></li> 11279</ul> 11280 </td> 11281 </tr> 11282 11283 <tr class="entries_header"> 11284 <th class="th_details" colspan="5">HAL Implementation Details</th> 11285 </tr> 11286 <tr class="entry_cont"> 11287 <td class="entry_details" colspan="5"> 11288 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 11289The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 11290The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 11291thumbnail image cropping.<wbr/></p> 11292 </td> 11293 </tr> 11294 11295 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11296 <!-- end of entry --> 11297 11298 11299 11300 <!-- end of kind --> 11301 </tbody> 11302 11303 <!-- end of section --> 11304 <tr><td colspan="6" id="section_lens" class="section">lens</td></tr> 11305 11306 11307 <tr><td colspan="6" class="kind">controls</td></tr> 11308 11309 <thead class="entries_header"> 11310 <tr> 11311 <th class="th_name">Property Name</th> 11312 <th class="th_type">Type</th> 11313 <th class="th_description">Description</th> 11314 <th class="th_units">Units</th> 11315 <th class="th_range">Range</th> 11316 <th class="th_tags">Tags</th> 11317 </tr> 11318 </thead> 11319 11320 <tbody> 11321 11322 11323 11324 11325 11326 11327 11328 11329 11330 11331 <tr class="entry" id="controls_android.lens.aperture"> 11332 <td class="entry_name 11333 " rowspan="3"> 11334 android.<wbr/>lens.<wbr/>aperture 11335 </td> 11336 <td class="entry_type"> 11337 <span class="entry_type_name">float</span> 11338 11339 <span class="entry_type_visibility"> [public]</span> 11340 11341 11342 <span class="entry_type_hwlevel">[full] </span> 11343 11344 11345 11346 11347 </td> <!-- entry_type --> 11348 11349 <td class="entry_description"> 11350 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 11351effective aperture diameter.<wbr/></p> 11352 </td> 11353 11354 <td class="entry_units"> 11355 The f-number (f/<wbr/>N) 11356 </td> 11357 11358 <td class="entry_range"> 11359 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 11360 </td> 11361 11362 <td class="entry_tags"> 11363 <ul class="entry_tags"> 11364 <li><a href="#tag_V1">V1</a></li> 11365 </ul> 11366 </td> 11367 11368 </tr> 11369 <tr class="entries_header"> 11370 <th class="th_details" colspan="5">Details</th> 11371 </tr> 11372 <tr class="entry_cont"> 11373 <td class="entry_details" colspan="5"> 11374 <p>Setting this value is only supported on the camera devices that have a variable 11375aperture lens.<wbr/></p> 11376<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 11377this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 11378<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> 11379to achieve manual exposure control.<wbr/></p> 11380<p>The requested aperture value may take several frames to reach the 11381requested value; the camera device will report the current (intermediate) 11382aperture size in capture result metadata while the aperture is changing.<wbr/> 11383While 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> 11384<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 11385the ON modes,<wbr/> this will be overridden by the camera device 11386auto-exposure algorithm,<wbr/> the overridden values are then provided 11387back to the user in the corresponding result.<wbr/></p> 11388 </td> 11389 </tr> 11390 11391 11392 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11393 <!-- end of entry --> 11394 11395 11396 <tr class="entry" id="controls_android.lens.filterDensity"> 11397 <td class="entry_name 11398 " rowspan="3"> 11399 android.<wbr/>lens.<wbr/>filter<wbr/>Density 11400 </td> 11401 <td class="entry_type"> 11402 <span class="entry_type_name">float</span> 11403 11404 <span class="entry_type_visibility"> [public]</span> 11405 11406 11407 <span class="entry_type_hwlevel">[full] </span> 11408 11409 11410 11411 11412 </td> <!-- entry_type --> 11413 11414 <td class="entry_description"> 11415 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 11416 </td> 11417 11418 <td class="entry_units"> 11419 Exposure Value (EV) 11420 </td> 11421 11422 <td class="entry_range"> 11423 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 11424 </td> 11425 11426 <td class="entry_tags"> 11427 <ul class="entry_tags"> 11428 <li><a href="#tag_V1">V1</a></li> 11429 </ul> 11430 </td> 11431 11432 </tr> 11433 <tr class="entries_header"> 11434 <th class="th_details" colspan="5">Details</th> 11435 </tr> 11436 <tr class="entry_cont"> 11437 <td class="entry_details" colspan="5"> 11438 <p>This control will not be supported on most camera devices.<wbr/></p> 11439<p>Lens filters are typically used to lower the amount of light the 11440sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 11441step is the standard logarithmic representation,<wbr/> which are 11442non-negative,<wbr/> and inversely proportional to the amount of light 11443hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 11444in no reduction of the incoming light,<wbr/> and setting this to 2 would 11445mean that the filter is set to reduce incoming light by two stops 11446(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 11447<p>It may take several frames before the lens filter density changes 11448to the requested value.<wbr/> While the filter density is still changing,<wbr/> 11449<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 11450 </td> 11451 </tr> 11452 11453 11454 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11455 <!-- end of entry --> 11456 11457 11458 <tr class="entry" id="controls_android.lens.focalLength"> 11459 <td class="entry_name 11460 " rowspan="3"> 11461 android.<wbr/>lens.<wbr/>focal<wbr/>Length 11462 </td> 11463 <td class="entry_type"> 11464 <span class="entry_type_name">float</span> 11465 11466 <span class="entry_type_visibility"> [public]</span> 11467 11468 11469 <span class="entry_type_hwlevel">[legacy] </span> 11470 11471 11472 11473 11474 </td> <!-- entry_type --> 11475 11476 <td class="entry_description"> 11477 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 11478 </td> 11479 11480 <td class="entry_units"> 11481 Millimeters 11482 </td> 11483 11484 <td class="entry_range"> 11485 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 11486 </td> 11487 11488 <td class="entry_tags"> 11489 <ul class="entry_tags"> 11490 <li><a href="#tag_V1">V1</a></li> 11491 </ul> 11492 </td> 11493 11494 </tr> 11495 <tr class="entries_header"> 11496 <th class="th_details" colspan="5">Details</th> 11497 </tr> 11498 <tr class="entry_cont"> 11499 <td class="entry_details" colspan="5"> 11500 <p>This setting controls the physical focal length of the camera 11501device's lens.<wbr/> Changing the focal length changes the field of 11502view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 11503<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 11504setting won't be applied instantaneously,<wbr/> and it may take several 11505frames before the lens can change to the requested focal length.<wbr/> 11506While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 11507be set to MOVING.<wbr/></p> 11508<p>Optical zoom will not be supported on most devices.<wbr/></p> 11509 </td> 11510 </tr> 11511 11512 11513 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11514 <!-- end of entry --> 11515 11516 11517 <tr class="entry" id="controls_android.lens.focusDistance"> 11518 <td class="entry_name 11519 " rowspan="3"> 11520 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 11521 </td> 11522 <td class="entry_type"> 11523 <span class="entry_type_name">float</span> 11524 11525 <span class="entry_type_visibility"> [public]</span> 11526 11527 11528 <span class="entry_type_hwlevel">[full] </span> 11529 11530 11531 11532 11533 </td> <!-- entry_type --> 11534 11535 <td class="entry_description"> 11536 <p>Desired distance to plane of sharpest focus,<wbr/> 11537measured from frontmost surface of the lens.<wbr/></p> 11538 </td> 11539 11540 <td class="entry_units"> 11541 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11542 </td> 11543 11544 <td class="entry_range"> 11545 <p>>= 0</p> 11546 </td> 11547 11548 <td class="entry_tags"> 11549 <ul class="entry_tags"> 11550 <li><a href="#tag_BC">BC</a></li> 11551 <li><a href="#tag_V1">V1</a></li> 11552 </ul> 11553 </td> 11554 11555 </tr> 11556 <tr class="entries_header"> 11557 <th class="th_details" colspan="5">Details</th> 11558 </tr> 11559 <tr class="entry_cont"> 11560 <td class="entry_details" colspan="5"> 11561 <p>This control can be used for setting manual focus,<wbr/> on devices that support 11562the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see 11563<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p> 11564<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to 11565<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> 11566<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied 11567instantaneously,<wbr/> and it may take several frames before the lens 11568can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/> 11569<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 11570<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code> 11571for infinity focus.<wbr/></p> 11572 </td> 11573 </tr> 11574 11575 11576 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11577 <!-- end of entry --> 11578 11579 11580 <tr class="entry" id="controls_android.lens.opticalStabilizationMode"> 11581 <td class="entry_name 11582 " rowspan="3"> 11583 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 11584 </td> 11585 <td class="entry_type"> 11586 <span class="entry_type_name entry_type_name_enum">byte</span> 11587 11588 <span class="entry_type_visibility"> [public]</span> 11589 11590 11591 <span class="entry_type_hwlevel">[limited] </span> 11592 11593 11594 11595 <ul class="entry_type_enum"> 11596 <li> 11597 <span class="entry_type_enum_name">OFF</span> 11598 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 11599 </li> 11600 <li> 11601 <span class="entry_type_enum_name">ON</span> 11602 <span class="entry_type_enum_optional">[optional]</span> 11603 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 11604 </li> 11605 </ul> 11606 11607 </td> <!-- entry_type --> 11608 11609 <td class="entry_description"> 11610 <p>Sets whether the camera device uses optical image stabilization (OIS) 11611when capturing images.<wbr/></p> 11612 </td> 11613 11614 <td class="entry_units"> 11615 </td> 11616 11617 <td class="entry_range"> 11618 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 11619 </td> 11620 11621 <td class="entry_tags"> 11622 <ul class="entry_tags"> 11623 <li><a href="#tag_V1">V1</a></li> 11624 </ul> 11625 </td> 11626 11627 </tr> 11628 <tr class="entries_header"> 11629 <th class="th_details" colspan="5">Details</th> 11630 </tr> 11631 <tr class="entry_cont"> 11632 <td class="entry_details" colspan="5"> 11633 <p>OIS is used to compensate for motion blur due to small 11634movements of the camera during capture.<wbr/> Unlike digital image 11635stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 11636makes use of mechanical elements to stabilize the camera 11637sensor,<wbr/> and thus allows for longer exposure times before 11638camera shake becomes apparent.<wbr/></p> 11639<p>Switching between different optical stabilization modes may take several 11640frames to initialize,<wbr/> the camera device will report the current mode in 11641capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 11642optical stabilization modes in the first several capture results may still 11643be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 11644<p>If a camera device supports both OIS and digital image stabilization 11645(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 11646interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 11647<p>Not all devices will support OIS; see 11648<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 11649available controls.<wbr/></p> 11650 </td> 11651 </tr> 11652 11653 11654 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11655 <!-- end of entry --> 11656 11657 11658 11659 <!-- end of kind --> 11660 </tbody> 11661 <tr><td colspan="6" class="kind">static</td></tr> 11662 11663 <thead class="entries_header"> 11664 <tr> 11665 <th class="th_name">Property Name</th> 11666 <th class="th_type">Type</th> 11667 <th class="th_description">Description</th> 11668 <th class="th_units">Units</th> 11669 <th class="th_range">Range</th> 11670 <th class="th_tags">Tags</th> 11671 </tr> 11672 </thead> 11673 11674 <tbody> 11675 11676 11677 11678 11679 11680 11681 11682 11683 11684 11685 11686 11687 <tr class="entry" id="static_android.lens.info.availableApertures"> 11688 <td class="entry_name 11689 " rowspan="3"> 11690 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures 11691 </td> 11692 <td class="entry_type"> 11693 <span class="entry_type_name">float</span> 11694 <span class="entry_type_container">x</span> 11695 11696 <span class="entry_type_array"> 11697 n 11698 </span> 11699 <span class="entry_type_visibility"> [public]</span> 11700 11701 11702 <span class="entry_type_hwlevel">[full] </span> 11703 11704 11705 11706 11707 </td> <!-- entry_type --> 11708 11709 <td class="entry_description"> 11710 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are 11711supported by this camera device.<wbr/></p> 11712 </td> 11713 11714 <td class="entry_units"> 11715 The aperture f-number 11716 </td> 11717 11718 <td class="entry_range"> 11719 </td> 11720 11721 <td class="entry_tags"> 11722 <ul class="entry_tags"> 11723 <li><a href="#tag_V1">V1</a></li> 11724 </ul> 11725 </td> 11726 11727 </tr> 11728 <tr class="entries_header"> 11729 <th class="th_details" colspan="5">Details</th> 11730 </tr> 11731 <tr class="entry_cont"> 11732 <td class="entry_details" colspan="5"> 11733 <p>If the camera device doesn't support a variable lens aperture,<wbr/> 11734this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p> 11735<p>If the camera device supports a variable aperture,<wbr/> the aperture values 11736in this list will be sorted in ascending order.<wbr/></p> 11737 </td> 11738 </tr> 11739 11740 11741 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11742 <!-- end of entry --> 11743 11744 11745 <tr class="entry" id="static_android.lens.info.availableFilterDensities"> 11746 <td class="entry_name 11747 " rowspan="3"> 11748 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities 11749 </td> 11750 <td class="entry_type"> 11751 <span class="entry_type_name">float</span> 11752 <span class="entry_type_container">x</span> 11753 11754 <span class="entry_type_array"> 11755 n 11756 </span> 11757 <span class="entry_type_visibility"> [public]</span> 11758 11759 11760 <span class="entry_type_hwlevel">[full] </span> 11761 11762 11763 11764 11765 </td> <!-- entry_type --> 11766 11767 <td class="entry_description"> 11768 <p>List of neutral density filter values for 11769<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p> 11770 </td> 11771 11772 <td class="entry_units"> 11773 Exposure value (EV) 11774 </td> 11775 11776 <td class="entry_range"> 11777 <p>Values are >= 0</p> 11778 </td> 11779 11780 <td class="entry_tags"> 11781 <ul class="entry_tags"> 11782 <li><a href="#tag_V1">V1</a></li> 11783 </ul> 11784 </td> 11785 11786 </tr> 11787 <tr class="entries_header"> 11788 <th class="th_details" colspan="5">Details</th> 11789 </tr> 11790 <tr class="entry_cont"> 11791 <td class="entry_details" colspan="5"> 11792 <p>If a neutral density filter is not supported by this camera device,<wbr/> 11793this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every 11794filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p> 11795 </td> 11796 </tr> 11797 11798 11799 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11800 <!-- end of entry --> 11801 11802 11803 <tr class="entry" id="static_android.lens.info.availableFocalLengths"> 11804 <td class="entry_name 11805 " rowspan="3"> 11806 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths 11807 </td> 11808 <td class="entry_type"> 11809 <span class="entry_type_name">float</span> 11810 <span class="entry_type_container">x</span> 11811 11812 <span class="entry_type_array"> 11813 n 11814 </span> 11815 <span class="entry_type_visibility"> [public]</span> 11816 11817 11818 <span class="entry_type_hwlevel">[legacy] </span> 11819 11820 11821 <div class="entry_type_notes">The list of available focal lengths</div> 11822 11823 11824 </td> <!-- entry_type --> 11825 11826 <td class="entry_description"> 11827 <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 11828device.<wbr/></p> 11829 </td> 11830 11831 <td class="entry_units"> 11832 Millimeters 11833 </td> 11834 11835 <td class="entry_range"> 11836 <p>Values are > 0</p> 11837 </td> 11838 11839 <td class="entry_tags"> 11840 <ul class="entry_tags"> 11841 <li><a href="#tag_BC">BC</a></li> 11842 <li><a href="#tag_V1">V1</a></li> 11843 </ul> 11844 </td> 11845 11846 </tr> 11847 <tr class="entries_header"> 11848 <th class="th_details" colspan="5">Details</th> 11849 </tr> 11850 <tr class="entry_cont"> 11851 <td class="entry_details" colspan="5"> 11852 <p>If optical zoom is not supported,<wbr/> this list will only contain 11853a single value corresponding to the fixed focal length of the 11854device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported 11855by the camera device,<wbr/> in ascending order.<wbr/></p> 11856 </td> 11857 </tr> 11858 11859 11860 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11861 <!-- end of entry --> 11862 11863 11864 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization"> 11865 <td class="entry_name 11866 " rowspan="3"> 11867 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization 11868 </td> 11869 <td class="entry_type"> 11870 <span class="entry_type_name">byte</span> 11871 <span class="entry_type_container">x</span> 11872 11873 <span class="entry_type_array"> 11874 n 11875 </span> 11876 <span class="entry_type_visibility"> [public as enumList]</span> 11877 11878 11879 <span class="entry_type_hwlevel">[limited] </span> 11880 11881 11882 <div class="entry_type_notes">list of enums</div> 11883 11884 11885 </td> <!-- entry_type --> 11886 11887 <td class="entry_description"> 11888 <p>List of optical image stabilization (OIS) modes for 11889<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> 11890 </td> 11891 11892 <td class="entry_units"> 11893 </td> 11894 11895 <td class="entry_range"> 11896 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p> 11897 </td> 11898 11899 <td class="entry_tags"> 11900 <ul class="entry_tags"> 11901 <li><a href="#tag_V1">V1</a></li> 11902 </ul> 11903 </td> 11904 11905 </tr> 11906 <tr class="entries_header"> 11907 <th class="th_details" colspan="5">Details</th> 11908 </tr> 11909 <tr class="entry_cont"> 11910 <td class="entry_details" colspan="5"> 11911 <p>If OIS is not supported by a given camera device,<wbr/> this list will 11912contain only OFF.<wbr/></p> 11913 </td> 11914 </tr> 11915 11916 11917 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11918 <!-- end of entry --> 11919 11920 11921 <tr class="entry" id="static_android.lens.info.hyperfocalDistance"> 11922 <td class="entry_name 11923 " rowspan="3"> 11924 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance 11925 </td> 11926 <td class="entry_type"> 11927 <span class="entry_type_name">float</span> 11928 11929 <span class="entry_type_visibility"> [public]</span> 11930 11931 11932 <span class="entry_type_hwlevel">[limited] </span> 11933 11934 11935 11936 11937 </td> <!-- entry_type --> 11938 11939 <td class="entry_description"> 11940 <p>Hyperfocal distance for this lens.<wbr/></p> 11941 </td> 11942 11943 <td class="entry_units"> 11944 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11945 </td> 11946 11947 <td class="entry_range"> 11948 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is 11949within <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> 11950 </td> 11951 11952 <td class="entry_tags"> 11953 </td> 11954 11955 </tr> 11956 <tr class="entries_header"> 11957 <th class="th_details" colspan="5">Details</th> 11958 </tr> 11959 <tr class="entry_cont"> 11960 <td class="entry_details" colspan="5"> 11961 <p>If the lens is not fixed focus,<wbr/> the camera device will report this 11962field 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> 11963 </td> 11964 </tr> 11965 11966 11967 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11968 <!-- end of entry --> 11969 11970 11971 <tr class="entry" id="static_android.lens.info.minimumFocusDistance"> 11972 <td class="entry_name 11973 " rowspan="5"> 11974 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance 11975 </td> 11976 <td class="entry_type"> 11977 <span class="entry_type_name">float</span> 11978 11979 <span class="entry_type_visibility"> [public]</span> 11980 11981 11982 <span class="entry_type_hwlevel">[limited] </span> 11983 11984 11985 11986 11987 </td> <!-- entry_type --> 11988 11989 <td class="entry_description"> 11990 <p>Shortest distance from frontmost surface 11991of the lens that can be brought into sharp focus.<wbr/></p> 11992 </td> 11993 11994 <td class="entry_units"> 11995 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11996 </td> 11997 11998 <td class="entry_range"> 11999 <p>>= 0</p> 12000 </td> 12001 12002 <td class="entry_tags"> 12003 <ul class="entry_tags"> 12004 <li><a href="#tag_V1">V1</a></li> 12005 </ul> 12006 </td> 12007 12008 </tr> 12009 <tr class="entries_header"> 12010 <th class="th_details" colspan="5">Details</th> 12011 </tr> 12012 <tr class="entry_cont"> 12013 <td class="entry_details" colspan="5"> 12014 <p>If the lens is fixed-focus,<wbr/> this will be 120150.<wbr/></p> 12016 </td> 12017 </tr> 12018 12019 <tr class="entries_header"> 12020 <th class="th_details" colspan="5">HAL Implementation Details</th> 12021 </tr> 12022 <tr class="entry_cont"> 12023 <td class="entry_details" colspan="5"> 12024 <p>Mandatory for FULL devices; LIMITED devices 12025must always set this value to 0 for fixed-focus; and may omit 12026the minimum focus distance otherwise.<wbr/></p> 12027<p>This field is also mandatory for all devices advertising 12028the MANUAL_<wbr/>SENSOR capability.<wbr/></p> 12029 </td> 12030 </tr> 12031 12032 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12033 <!-- end of entry --> 12034 12035 12036 <tr class="entry" id="static_android.lens.info.shadingMapSize"> 12037 <td class="entry_name 12038 " rowspan="3"> 12039 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size 12040 </td> 12041 <td class="entry_type"> 12042 <span class="entry_type_name">int32</span> 12043 <span class="entry_type_container">x</span> 12044 12045 <span class="entry_type_array"> 12046 2 12047 </span> 12048 <span class="entry_type_visibility"> [hidden as size]</span> 12049 12050 12051 <span class="entry_type_hwlevel">[full] </span> 12052 12053 12054 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div> 12055 12056 12057 </td> <!-- entry_type --> 12058 12059 <td class="entry_description"> 12060 <p>Dimensions of lens shading map.<wbr/></p> 12061 </td> 12062 12063 <td class="entry_units"> 12064 </td> 12065 12066 <td class="entry_range"> 12067 <p>Both values >= 1</p> 12068 </td> 12069 12070 <td class="entry_tags"> 12071 <ul class="entry_tags"> 12072 <li><a href="#tag_V1">V1</a></li> 12073 </ul> 12074 </td> 12075 12076 </tr> 12077 <tr class="entries_header"> 12078 <th class="th_details" colspan="5">Details</th> 12079 </tr> 12080 <tr class="entry_cont"> 12081 <td class="entry_details" colspan="5"> 12082 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and 12083must be smaller than 64x64.<wbr/></p> 12084 </td> 12085 </tr> 12086 12087 12088 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12089 <!-- end of entry --> 12090 12091 12092 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration"> 12093 <td class="entry_name 12094 " rowspan="5"> 12095 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration 12096 </td> 12097 <td class="entry_type"> 12098 <span class="entry_type_name entry_type_name_enum">byte</span> 12099 12100 <span class="entry_type_visibility"> [public]</span> 12101 12102 12103 <span class="entry_type_hwlevel">[limited] </span> 12104 12105 12106 12107 <ul class="entry_type_enum"> 12108 <li> 12109 <span class="entry_type_enum_name">UNCALIBRATED</span> 12110 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for 12111<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p> 12112<p>Setting the lens to the same focus distance on separate occasions may 12113result in a different real focus distance,<wbr/> depending on factors such 12114as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> 12115and the device temperature.<wbr/> The focus distance value will still be 12116in 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 12117represents the farthest focus.<wbr/></p></span> 12118 </li> 12119 <li> 12120 <span class="entry_type_enum_name">APPROXIMATE</span> 12121 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p> 12122<p>However,<wbr/> setting the lens to the same focus distance 12123on separate occasions may result in a different real 12124focus distance,<wbr/> depending on factors such as the 12125orientation of the device,<wbr/> the age of the focusing 12126mechanism,<wbr/> and the device temperature.<wbr/></p></span> 12127 </li> 12128 <li> 12129 <span class="entry_type_enum_name">CALIBRATED</span> 12130 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and 12131is calibrated.<wbr/></p> 12132<p>The lens mechanism is calibrated so that setting the 12133same focus distance is repeatable on multiple 12134occasions with good accuracy,<wbr/> and the focus distance 12135corresponds to the real physical distance to the plane 12136of best focus.<wbr/></p></span> 12137 </li> 12138 </ul> 12139 12140 </td> <!-- entry_type --> 12141 12142 <td class="entry_description"> 12143 <p>The lens focus distance calibration quality.<wbr/></p> 12144 </td> 12145 12146 <td class="entry_units"> 12147 </td> 12148 12149 <td class="entry_range"> 12150 </td> 12151 12152 <td class="entry_tags"> 12153 <ul class="entry_tags"> 12154 <li><a href="#tag_V1">V1</a></li> 12155 </ul> 12156 </td> 12157 12158 </tr> 12159 <tr class="entries_header"> 12160 <th class="th_details" colspan="5">Details</th> 12161 </tr> 12162 <tr class="entry_cont"> 12163 <td class="entry_details" colspan="5"> 12164 <p>The lens focus distance calibration quality determines the reliability of 12165focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 12166<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 12167<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p> 12168<p>APPROXIMATE and CALIBRATED devices report the focus metadata in 12169units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/> 12170and increasing positive numbers represent focusing closer and closer 12171to the camera device.<wbr/> The focus distance control also uses diopters 12172on these devices.<wbr/></p> 12173<p>UNCALIBRATED devices do not use units that are directly comparable 12174to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest 12175focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the 12176nearest focus the device can achieve.<wbr/></p> 12177 </td> 12178 </tr> 12179 12180 <tr class="entries_header"> 12181 <th class="th_details" colspan="5">HAL Implementation Details</th> 12182 </tr> 12183 <tr class="entry_cont"> 12184 <td class="entry_details" colspan="5"> 12185 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity 12186focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF) 12187and the lens focus distance is set to 0 diopters 12188(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity 12189and is stably focused at infinity even if the device tilts.<wbr/> It may take the 12190lens some time to move; during the move the lens state should be MOVING and 12191the output diopter value should be changing toward 0.<wbr/></p> 12192 </td> 12193 </tr> 12194 12195 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12196 <!-- end of entry --> 12197 12198 12199 12200 12201 12202 <tr class="entry" id="static_android.lens.facing"> 12203 <td class="entry_name 12204 " rowspan="1"> 12205 android.<wbr/>lens.<wbr/>facing 12206 </td> 12207 <td class="entry_type"> 12208 <span class="entry_type_name entry_type_name_enum">byte</span> 12209 12210 <span class="entry_type_visibility"> [public]</span> 12211 12212 12213 <span class="entry_type_hwlevel">[legacy] </span> 12214 12215 12216 12217 <ul class="entry_type_enum"> 12218 <li> 12219 <span class="entry_type_enum_name">FRONT</span> 12220 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span> 12221 </li> 12222 <li> 12223 <span class="entry_type_enum_name">BACK</span> 12224 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span> 12225 </li> 12226 <li> 12227 <span class="entry_type_enum_name">EXTERNAL</span> 12228 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the 12229device's screen.<wbr/></p></span> 12230 </li> 12231 </ul> 12232 12233 </td> <!-- entry_type --> 12234 12235 <td class="entry_description"> 12236 <p>Direction the camera faces relative to 12237device screen.<wbr/></p> 12238 </td> 12239 12240 <td class="entry_units"> 12241 </td> 12242 12243 <td class="entry_range"> 12244 </td> 12245 12246 <td class="entry_tags"> 12247 </td> 12248 12249 </tr> 12250 12251 12252 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12253 <!-- end of entry --> 12254 12255 12256 <tr class="entry" id="static_android.lens.poseRotation"> 12257 <td class="entry_name 12258 " rowspan="3"> 12259 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 12260 </td> 12261 <td class="entry_type"> 12262 <span class="entry_type_name">float</span> 12263 <span class="entry_type_container">x</span> 12264 12265 <span class="entry_type_array"> 12266 4 12267 </span> 12268 <span class="entry_type_visibility"> [public]</span> 12269 12270 12271 12272 12273 12274 12275 </td> <!-- entry_type --> 12276 12277 <td class="entry_description"> 12278 <p>The orientation of the camera relative to the sensor 12279coordinate system.<wbr/></p> 12280 </td> 12281 12282 <td class="entry_units"> 12283 12284 Quaternion coefficients 12285 12286 </td> 12287 12288 <td class="entry_range"> 12289 </td> 12290 12291 <td class="entry_tags"> 12292 <ul class="entry_tags"> 12293 <li><a href="#tag_DEPTH">DEPTH</a></li> 12294 </ul> 12295 </td> 12296 12297 </tr> 12298 <tr class="entries_header"> 12299 <th class="th_details" colspan="5">Details</th> 12300 </tr> 12301 <tr class="entry_cont"> 12302 <td class="entry_details" colspan="5"> 12303 <p>The four coefficients that describe the quaternion 12304rotation from the Android sensor coordinate system to a 12305camera-aligned coordinate system where the X-axis is 12306aligned with the long side of the image sensor,<wbr/> the Y-axis 12307is aligned with the short side of the image sensor,<wbr/> and 12308the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 12309<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 12310to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 12311amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 12312<pre><code> theta = 2 * acos(w) 12313a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 12314a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 12315a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 12316</code></pre> 12317<p>To create a 3x3 rotation matrix that applies the rotation 12318defined by this quaternion,<wbr/> the following matrix can be 12319used:</p> 12320<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 12321 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 12322 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 12323</code></pre> 12324<p>This matrix can then be used to apply the rotation to a 12325 column vector point with</p> 12326<p><code>p' = Rp</code></p> 12327<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 12328 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 12329 </td> 12330 </tr> 12331 12332 12333 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12334 <!-- end of entry --> 12335 12336 12337 <tr class="entry" id="static_android.lens.poseTranslation"> 12338 <td class="entry_name 12339 " rowspan="3"> 12340 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 12341 </td> 12342 <td class="entry_type"> 12343 <span class="entry_type_name">float</span> 12344 <span class="entry_type_container">x</span> 12345 12346 <span class="entry_type_array"> 12347 3 12348 </span> 12349 <span class="entry_type_visibility"> [public]</span> 12350 12351 12352 12353 12354 12355 12356 </td> <!-- entry_type --> 12357 12358 <td class="entry_description"> 12359 <p>Position of the camera optical center.<wbr/></p> 12360 </td> 12361 12362 <td class="entry_units"> 12363 Meters 12364 </td> 12365 12366 <td class="entry_range"> 12367 </td> 12368 12369 <td class="entry_tags"> 12370 <ul class="entry_tags"> 12371 <li><a href="#tag_DEPTH">DEPTH</a></li> 12372 </ul> 12373 </td> 12374 12375 </tr> 12376 <tr class="entries_header"> 12377 <th class="th_details" colspan="5">Details</th> 12378 </tr> 12379 <tr class="entry_cont"> 12380 <td class="entry_details" colspan="5"> 12381 <p>The position of the camera device's lens optical center,<wbr/> 12382as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the 12383optical center of the largest camera device facing in the 12384same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate 12385axes</a>.<wbr/> Note that only the axis definitions are shared with 12386the sensor coordinate system,<wbr/> but not the origin.<wbr/></p> 12387<p>If this device is the largest or only camera device with a 12388given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a 12389camera device with a lens optical center located 3 cm from 12390the main sensor along the +X axis (to the right from the 12391user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> 12392<p>To transform a pixel coordinates between two cameras 12393facing the same direction,<wbr/> first the source camera 12394<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then 12395the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs 12396to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> 12397of the source camera,<wbr/> the translation of the source camera 12398relative to the destination camera,<wbr/> the 12399<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and 12400finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 12401of the destination camera.<wbr/> This obtains a 12402radial-distortion-free coordinate in the destination 12403camera pixel coordinates.<wbr/></p> 12404<p>To compare this against a real image from the destination 12405camera,<wbr/> the destination camera image then needs to be 12406corrected for radial distortion before comparison or 12407sampling.<wbr/></p> 12408 </td> 12409 </tr> 12410 12411 12412 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12413 <!-- end of entry --> 12414 12415 12416 <tr class="entry" id="static_android.lens.intrinsicCalibration"> 12417 <td class="entry_name 12418 " rowspan="3"> 12419 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 12420 </td> 12421 <td class="entry_type"> 12422 <span class="entry_type_name">float</span> 12423 <span class="entry_type_container">x</span> 12424 12425 <span class="entry_type_array"> 12426 5 12427 </span> 12428 <span class="entry_type_visibility"> [public]</span> 12429 12430 12431 12432 12433 12434 12435 </td> <!-- entry_type --> 12436 12437 <td class="entry_description"> 12438 <p>The parameters for this camera device's intrinsic 12439calibration.<wbr/></p> 12440 </td> 12441 12442 <td class="entry_units"> 12443 12444 Pixels in the 12445 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 12446 coordinate system.<wbr/> 12447 12448 </td> 12449 12450 <td class="entry_range"> 12451 </td> 12452 12453 <td class="entry_tags"> 12454 <ul class="entry_tags"> 12455 <li><a href="#tag_DEPTH">DEPTH</a></li> 12456 </ul> 12457 </td> 12458 12459 </tr> 12460 <tr class="entries_header"> 12461 <th class="th_details" colspan="5">Details</th> 12462 </tr> 12463 <tr class="entry_cont"> 12464 <td class="entry_details" colspan="5"> 12465 <p>The five calibration parameters that describe the 12466transform from camera-centric 3D coordinates to sensor 12467pixel coordinates:</p> 12468<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 12469</code></pre> 12470<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 12471focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 12472axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 12473being aligned with the lens plane.<wbr/></p> 12474<p>These are typically used within a transformation matrix K:</p> 12475<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 12476 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 12477 0 0,<wbr/> 1 ] 12478</code></pre> 12479<p>which can then be combined with the camera pose rotation 12480<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 12481<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the 12482complete transform from world coordinates to pixel 12483coordinates:</p> 12484<pre><code>P = [ K 0 * [ R t 12485 0 1 ] 0 1 ] 12486</code></pre> 12487<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system 12488and <code>p_<wbr/>s</code> being a point in the camera active pixel array 12489coordinate system,<wbr/> and with the mapping including the 12490homogeneous division by z:</p> 12491<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 12492p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 12493</code></pre> 12494<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 12495point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 12496(depth) in pixel coordinates.<wbr/></p> 12497<p>Note that the coordinate system for this transform is the 12498<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/> 12499where <code>(0,<wbr/>0)</code> is the top-left of the 12500preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 12501intrinsic calibration transforms have been applied to a 12502world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> 12503transform needs to be applied,<wbr/> and the result adjusted to 12504be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 12505system (where <code>(0,<wbr/> 0)</code> is the top-left of the 12506activeArraySize rectangle),<wbr/> to determine the final pixel 12507coordinate of the world point for processed (non-RAW) 12508output buffers.<wbr/></p> 12509 </td> 12510 </tr> 12511 12512 12513 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12514 <!-- end of entry --> 12515 12516 12517 <tr class="entry" id="static_android.lens.radialDistortion"> 12518 <td class="entry_name 12519 " rowspan="3"> 12520 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 12521 </td> 12522 <td class="entry_type"> 12523 <span class="entry_type_name">float</span> 12524 <span class="entry_type_container">x</span> 12525 12526 <span class="entry_type_array"> 12527 6 12528 </span> 12529 <span class="entry_type_visibility"> [public]</span> 12530 12531 12532 12533 12534 12535 12536 </td> <!-- entry_type --> 12537 12538 <td class="entry_description"> 12539 <p>The correction coefficients to correct for this camera device's 12540radial and tangential lens distortion.<wbr/></p> 12541 </td> 12542 12543 <td class="entry_units"> 12544 12545 Unitless coefficients.<wbr/> 12546 12547 </td> 12548 12549 <td class="entry_range"> 12550 </td> 12551 12552 <td class="entry_tags"> 12553 <ul class="entry_tags"> 12554 <li><a href="#tag_DEPTH">DEPTH</a></li> 12555 </ul> 12556 </td> 12557 12558 </tr> 12559 <tr class="entries_header"> 12560 <th class="th_details" colspan="5">Details</th> 12561 </tr> 12562 <tr class="entry_cont"> 12563 <td class="entry_details" colspan="5"> 12564 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 12565kappa_<wbr/>3]</code> and two tangential distortion coefficients 12566<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 12567lens's geometric distortion with the mapping equations:</p> 12568<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 ) + 12569 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 12570 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 12571 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 12572</code></pre> 12573<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 12574input image that correspond to the pixel values in the 12575corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 12576<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 12577</code></pre> 12578<p>The pixel coordinates are defined in a normalized 12579coordinate system related to the 12580<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 12581Both <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 12582lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 12583of both x and y coordinates are normalized to be 1 at the 12584edge further from the optical center,<wbr/> so the range 12585for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 12586<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 12587optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 12588is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 12589<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 12590 </td> 12591 </tr> 12592 12593 12594 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12595 <!-- end of entry --> 12596 12597 12598 12599 <!-- end of kind --> 12600 </tbody> 12601 <tr><td colspan="6" class="kind">dynamic</td></tr> 12602 12603 <thead class="entries_header"> 12604 <tr> 12605 <th class="th_name">Property Name</th> 12606 <th class="th_type">Type</th> 12607 <th class="th_description">Description</th> 12608 <th class="th_units">Units</th> 12609 <th class="th_range">Range</th> 12610 <th class="th_tags">Tags</th> 12611 </tr> 12612 </thead> 12613 12614 <tbody> 12615 12616 12617 12618 12619 12620 12621 12622 12623 12624 12625 <tr class="entry" id="dynamic_android.lens.aperture"> 12626 <td class="entry_name 12627 " rowspan="3"> 12628 android.<wbr/>lens.<wbr/>aperture 12629 </td> 12630 <td class="entry_type"> 12631 <span class="entry_type_name">float</span> 12632 12633 <span class="entry_type_visibility"> [public]</span> 12634 12635 12636 <span class="entry_type_hwlevel">[full] </span> 12637 12638 12639 12640 12641 </td> <!-- entry_type --> 12642 12643 <td class="entry_description"> 12644 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 12645effective aperture diameter.<wbr/></p> 12646 </td> 12647 12648 <td class="entry_units"> 12649 The f-number (f/<wbr/>N) 12650 </td> 12651 12652 <td class="entry_range"> 12653 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 12654 </td> 12655 12656 <td class="entry_tags"> 12657 <ul class="entry_tags"> 12658 <li><a href="#tag_V1">V1</a></li> 12659 </ul> 12660 </td> 12661 12662 </tr> 12663 <tr class="entries_header"> 12664 <th class="th_details" colspan="5">Details</th> 12665 </tr> 12666 <tr class="entry_cont"> 12667 <td class="entry_details" colspan="5"> 12668 <p>Setting this value is only supported on the camera devices that have a variable 12669aperture lens.<wbr/></p> 12670<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 12671this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 12672<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> 12673to achieve manual exposure control.<wbr/></p> 12674<p>The requested aperture value may take several frames to reach the 12675requested value; the camera device will report the current (intermediate) 12676aperture size in capture result metadata while the aperture is changing.<wbr/> 12677While 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> 12678<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 12679the ON modes,<wbr/> this will be overridden by the camera device 12680auto-exposure algorithm,<wbr/> the overridden values are then provided 12681back to the user in the corresponding result.<wbr/></p> 12682 </td> 12683 </tr> 12684 12685 12686 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12687 <!-- end of entry --> 12688 12689 12690 <tr class="entry" id="dynamic_android.lens.filterDensity"> 12691 <td class="entry_name 12692 " rowspan="3"> 12693 android.<wbr/>lens.<wbr/>filter<wbr/>Density 12694 </td> 12695 <td class="entry_type"> 12696 <span class="entry_type_name">float</span> 12697 12698 <span class="entry_type_visibility"> [public]</span> 12699 12700 12701 <span class="entry_type_hwlevel">[full] </span> 12702 12703 12704 12705 12706 </td> <!-- entry_type --> 12707 12708 <td class="entry_description"> 12709 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 12710 </td> 12711 12712 <td class="entry_units"> 12713 Exposure Value (EV) 12714 </td> 12715 12716 <td class="entry_range"> 12717 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 12718 </td> 12719 12720 <td class="entry_tags"> 12721 <ul class="entry_tags"> 12722 <li><a href="#tag_V1">V1</a></li> 12723 </ul> 12724 </td> 12725 12726 </tr> 12727 <tr class="entries_header"> 12728 <th class="th_details" colspan="5">Details</th> 12729 </tr> 12730 <tr class="entry_cont"> 12731 <td class="entry_details" colspan="5"> 12732 <p>This control will not be supported on most camera devices.<wbr/></p> 12733<p>Lens filters are typically used to lower the amount of light the 12734sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 12735step is the standard logarithmic representation,<wbr/> which are 12736non-negative,<wbr/> and inversely proportional to the amount of light 12737hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 12738in no reduction of the incoming light,<wbr/> and setting this to 2 would 12739mean that the filter is set to reduce incoming light by two stops 12740(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 12741<p>It may take several frames before the lens filter density changes 12742to the requested value.<wbr/> While the filter density is still changing,<wbr/> 12743<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 12744 </td> 12745 </tr> 12746 12747 12748 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12749 <!-- end of entry --> 12750 12751 12752 <tr class="entry" id="dynamic_android.lens.focalLength"> 12753 <td class="entry_name 12754 " rowspan="3"> 12755 android.<wbr/>lens.<wbr/>focal<wbr/>Length 12756 </td> 12757 <td class="entry_type"> 12758 <span class="entry_type_name">float</span> 12759 12760 <span class="entry_type_visibility"> [public]</span> 12761 12762 12763 <span class="entry_type_hwlevel">[legacy] </span> 12764 12765 12766 12767 12768 </td> <!-- entry_type --> 12769 12770 <td class="entry_description"> 12771 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 12772 </td> 12773 12774 <td class="entry_units"> 12775 Millimeters 12776 </td> 12777 12778 <td class="entry_range"> 12779 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 12780 </td> 12781 12782 <td class="entry_tags"> 12783 <ul class="entry_tags"> 12784 <li><a href="#tag_BC">BC</a></li> 12785 </ul> 12786 </td> 12787 12788 </tr> 12789 <tr class="entries_header"> 12790 <th class="th_details" colspan="5">Details</th> 12791 </tr> 12792 <tr class="entry_cont"> 12793 <td class="entry_details" colspan="5"> 12794 <p>This setting controls the physical focal length of the camera 12795device's lens.<wbr/> Changing the focal length changes the field of 12796view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 12797<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 12798setting won't be applied instantaneously,<wbr/> and it may take several 12799frames before the lens can change to the requested focal length.<wbr/> 12800While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 12801be set to MOVING.<wbr/></p> 12802<p>Optical zoom will not be supported on most devices.<wbr/></p> 12803 </td> 12804 </tr> 12805 12806 12807 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12808 <!-- end of entry --> 12809 12810 12811 <tr class="entry" id="dynamic_android.lens.focusDistance"> 12812 <td class="entry_name 12813 " rowspan="3"> 12814 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 12815 </td> 12816 <td class="entry_type"> 12817 <span class="entry_type_name">float</span> 12818 12819 <span class="entry_type_visibility"> [public]</span> 12820 12821 12822 <span class="entry_type_hwlevel">[full] </span> 12823 12824 12825 12826 12827 </td> <!-- entry_type --> 12828 12829 <td class="entry_description"> 12830 <p>Desired distance to plane of sharpest focus,<wbr/> 12831measured from frontmost surface of the lens.<wbr/></p> 12832 </td> 12833 12834 <td class="entry_units"> 12835 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 12836 </td> 12837 12838 <td class="entry_range"> 12839 <p>>= 0</p> 12840 </td> 12841 12842 <td class="entry_tags"> 12843 <ul class="entry_tags"> 12844 <li><a href="#tag_BC">BC</a></li> 12845 </ul> 12846 </td> 12847 12848 </tr> 12849 <tr class="entries_header"> 12850 <th class="th_details" colspan="5">Details</th> 12851 </tr> 12852 <tr class="entry_cont"> 12853 <td class="entry_details" colspan="5"> 12854 <p>Should be zero for fixed-focus cameras</p> 12855 </td> 12856 </tr> 12857 12858 12859 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12860 <!-- end of entry --> 12861 12862 12863 <tr class="entry" id="dynamic_android.lens.focusRange"> 12864 <td class="entry_name 12865 " rowspan="3"> 12866 android.<wbr/>lens.<wbr/>focus<wbr/>Range 12867 </td> 12868 <td class="entry_type"> 12869 <span class="entry_type_name">float</span> 12870 <span class="entry_type_container">x</span> 12871 12872 <span class="entry_type_array"> 12873 2 12874 </span> 12875 <span class="entry_type_visibility"> [public as pairFloatFloat]</span> 12876 12877 12878 <span class="entry_type_hwlevel">[limited] </span> 12879 12880 12881 <div class="entry_type_notes">Range of scene distances that are in focus</div> 12882 12883 12884 </td> <!-- entry_type --> 12885 12886 <td class="entry_description"> 12887 <p>The range of scene distances that are in 12888sharp focus (depth of field).<wbr/></p> 12889 </td> 12890 12891 <td class="entry_units"> 12892 A pair of focus distances in diopters: (near,<wbr/> 12893 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 12894 </td> 12895 12896 <td class="entry_range"> 12897 <p>>=0</p> 12898 </td> 12899 12900 <td class="entry_tags"> 12901 <ul class="entry_tags"> 12902 <li><a href="#tag_BC">BC</a></li> 12903 </ul> 12904 </td> 12905 12906 </tr> 12907 <tr class="entries_header"> 12908 <th class="th_details" colspan="5">Details</th> 12909 </tr> 12910 <tr class="entry_cont"> 12911 <td class="entry_details" colspan="5"> 12912 <p>If variable focus not supported,<wbr/> can still report 12913fixed depth of field range</p> 12914 </td> 12915 </tr> 12916 12917 12918 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12919 <!-- end of entry --> 12920 12921 12922 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode"> 12923 <td class="entry_name 12924 " rowspan="3"> 12925 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 12926 </td> 12927 <td class="entry_type"> 12928 <span class="entry_type_name entry_type_name_enum">byte</span> 12929 12930 <span class="entry_type_visibility"> [public]</span> 12931 12932 12933 <span class="entry_type_hwlevel">[limited] </span> 12934 12935 12936 12937 <ul class="entry_type_enum"> 12938 <li> 12939 <span class="entry_type_enum_name">OFF</span> 12940 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 12941 </li> 12942 <li> 12943 <span class="entry_type_enum_name">ON</span> 12944 <span class="entry_type_enum_optional">[optional]</span> 12945 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 12946 </li> 12947 </ul> 12948 12949 </td> <!-- entry_type --> 12950 12951 <td class="entry_description"> 12952 <p>Sets whether the camera device uses optical image stabilization (OIS) 12953when capturing images.<wbr/></p> 12954 </td> 12955 12956 <td class="entry_units"> 12957 </td> 12958 12959 <td class="entry_range"> 12960 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 12961 </td> 12962 12963 <td class="entry_tags"> 12964 <ul class="entry_tags"> 12965 <li><a href="#tag_V1">V1</a></li> 12966 </ul> 12967 </td> 12968 12969 </tr> 12970 <tr class="entries_header"> 12971 <th class="th_details" colspan="5">Details</th> 12972 </tr> 12973 <tr class="entry_cont"> 12974 <td class="entry_details" colspan="5"> 12975 <p>OIS is used to compensate for motion blur due to small 12976movements of the camera during capture.<wbr/> Unlike digital image 12977stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 12978makes use of mechanical elements to stabilize the camera 12979sensor,<wbr/> and thus allows for longer exposure times before 12980camera shake becomes apparent.<wbr/></p> 12981<p>Switching between different optical stabilization modes may take several 12982frames to initialize,<wbr/> the camera device will report the current mode in 12983capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 12984optical stabilization modes in the first several capture results may still 12985be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 12986<p>If a camera device supports both OIS and digital image stabilization 12987(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 12988interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 12989<p>Not all devices will support OIS; see 12990<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 12991available controls.<wbr/></p> 12992 </td> 12993 </tr> 12994 12995 12996 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12997 <!-- end of entry --> 12998 12999 13000 <tr class="entry" id="dynamic_android.lens.state"> 13001 <td class="entry_name 13002 " rowspan="3"> 13003 android.<wbr/>lens.<wbr/>state 13004 </td> 13005 <td class="entry_type"> 13006 <span class="entry_type_name entry_type_name_enum">byte</span> 13007 13008 <span class="entry_type_visibility"> [public]</span> 13009 13010 13011 <span class="entry_type_hwlevel">[limited] </span> 13012 13013 13014 13015 <ul class="entry_type_enum"> 13016 <li> 13017 <span class="entry_type_enum_name">STATIONARY</span> 13018 <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/> 13019<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> 13020 </li> 13021 <li> 13022 <span class="entry_type_enum_name">MOVING</span> 13023 <span class="entry_type_enum_notes"><p>One or several of the lens parameters 13024(<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/> 13025<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 13026currently changing.<wbr/></p></span> 13027 </li> 13028 </ul> 13029 13030 </td> <!-- entry_type --> 13031 13032 <td class="entry_description"> 13033 <p>Current lens status.<wbr/></p> 13034 </td> 13035 13036 <td class="entry_units"> 13037 </td> 13038 13039 <td class="entry_range"> 13040 </td> 13041 13042 <td class="entry_tags"> 13043 <ul class="entry_tags"> 13044 <li><a href="#tag_V1">V1</a></li> 13045 </ul> 13046 </td> 13047 13048 </tr> 13049 <tr class="entries_header"> 13050 <th class="th_details" colspan="5">Details</th> 13051 </tr> 13052 <tr class="entry_cont"> 13053 <td class="entry_details" colspan="5"> 13054 <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/> 13055<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/> 13056they may take several frames to reach the requested values.<wbr/> This state indicates 13057the current status of the lens parameters.<wbr/></p> 13058<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be 13059either because the parameters are all fixed,<wbr/> or because the lens has had enough 13060time to reach the most recently-requested values.<wbr/> 13061If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p> 13062<ul> 13063<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 13064<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li> 13065<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/> 13066which means the optical zoom is not supported.<wbr/></li> 13067<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> 13068<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> 13069</ul> 13070<p>Then this state will always be STATIONARY.<wbr/></p> 13071<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters 13072is changing.<wbr/></p> 13073 </td> 13074 </tr> 13075 13076 13077 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13078 <!-- end of entry --> 13079 13080 13081 <tr class="entry" id="dynamic_android.lens.poseRotation"> 13082 <td class="entry_name 13083 " rowspan="3"> 13084 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 13085 </td> 13086 <td class="entry_type"> 13087 <span class="entry_type_name">float</span> 13088 <span class="entry_type_container">x</span> 13089 13090 <span class="entry_type_array"> 13091 4 13092 </span> 13093 <span class="entry_type_visibility"> [public]</span> 13094 13095 13096 13097 13098 13099 13100 </td> <!-- entry_type --> 13101 13102 <td class="entry_description"> 13103 <p>The orientation of the camera relative to the sensor 13104coordinate system.<wbr/></p> 13105 </td> 13106 13107 <td class="entry_units"> 13108 13109 Quaternion coefficients 13110 13111 </td> 13112 13113 <td class="entry_range"> 13114 </td> 13115 13116 <td class="entry_tags"> 13117 <ul class="entry_tags"> 13118 <li><a href="#tag_DEPTH">DEPTH</a></li> 13119 </ul> 13120 </td> 13121 13122 </tr> 13123 <tr class="entries_header"> 13124 <th class="th_details" colspan="5">Details</th> 13125 </tr> 13126 <tr class="entry_cont"> 13127 <td class="entry_details" colspan="5"> 13128 <p>The four coefficients that describe the quaternion 13129rotation from the Android sensor coordinate system to a 13130camera-aligned coordinate system where the X-axis is 13131aligned with the long side of the image sensor,<wbr/> the Y-axis 13132is aligned with the short side of the image sensor,<wbr/> and 13133the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 13134<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 13135to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 13136amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 13137<pre><code> theta = 2 * acos(w) 13138a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 13139a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 13140a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 13141</code></pre> 13142<p>To create a 3x3 rotation matrix that applies the rotation 13143defined by this quaternion,<wbr/> the following matrix can be 13144used:</p> 13145<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 13146 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 13147 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 13148</code></pre> 13149<p>This matrix can then be used to apply the rotation to a 13150 column vector point with</p> 13151<p><code>p' = Rp</code></p> 13152<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 13153 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 13154 </td> 13155 </tr> 13156 13157 13158 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13159 <!-- end of entry --> 13160 13161 13162 <tr class="entry" id="dynamic_android.lens.poseTranslation"> 13163 <td class="entry_name 13164 " rowspan="3"> 13165 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 13166 </td> 13167 <td class="entry_type"> 13168 <span class="entry_type_name">float</span> 13169 <span class="entry_type_container">x</span> 13170 13171 <span class="entry_type_array"> 13172 3 13173 </span> 13174 <span class="entry_type_visibility"> [public]</span> 13175 13176 13177 13178 13179 13180 13181 </td> <!-- entry_type --> 13182 13183 <td class="entry_description"> 13184 <p>Position of the camera optical center.<wbr/></p> 13185 </td> 13186 13187 <td class="entry_units"> 13188 Meters 13189 </td> 13190 13191 <td class="entry_range"> 13192 </td> 13193 13194 <td class="entry_tags"> 13195 <ul class="entry_tags"> 13196 <li><a href="#tag_DEPTH">DEPTH</a></li> 13197 </ul> 13198 </td> 13199 13200 </tr> 13201 <tr class="entries_header"> 13202 <th class="th_details" colspan="5">Details</th> 13203 </tr> 13204 <tr class="entry_cont"> 13205 <td class="entry_details" colspan="5"> 13206 <p>The position of the camera device's lens optical center,<wbr/> 13207as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the 13208optical center of the largest camera device facing in the 13209same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate 13210axes</a>.<wbr/> Note that only the axis definitions are shared with 13211the sensor coordinate system,<wbr/> but not the origin.<wbr/></p> 13212<p>If this device is the largest or only camera device with a 13213given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a 13214camera device with a lens optical center located 3 cm from 13215the main sensor along the +X axis (to the right from the 13216user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> 13217<p>To transform a pixel coordinates between two cameras 13218facing the same direction,<wbr/> first the source camera 13219<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then 13220the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs 13221to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> 13222of the source camera,<wbr/> the translation of the source camera 13223relative to the destination camera,<wbr/> the 13224<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and 13225finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 13226of the destination camera.<wbr/> This obtains a 13227radial-distortion-free coordinate in the destination 13228camera pixel coordinates.<wbr/></p> 13229<p>To compare this against a real image from the destination 13230camera,<wbr/> the destination camera image then needs to be 13231corrected for radial distortion before comparison or 13232sampling.<wbr/></p> 13233 </td> 13234 </tr> 13235 13236 13237 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13238 <!-- end of entry --> 13239 13240 13241 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration"> 13242 <td class="entry_name 13243 " rowspan="3"> 13244 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 13245 </td> 13246 <td class="entry_type"> 13247 <span class="entry_type_name">float</span> 13248 <span class="entry_type_container">x</span> 13249 13250 <span class="entry_type_array"> 13251 5 13252 </span> 13253 <span class="entry_type_visibility"> [public]</span> 13254 13255 13256 13257 13258 13259 13260 </td> <!-- entry_type --> 13261 13262 <td class="entry_description"> 13263 <p>The parameters for this camera device's intrinsic 13264calibration.<wbr/></p> 13265 </td> 13266 13267 <td class="entry_units"> 13268 13269 Pixels in the 13270 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 13271 coordinate system.<wbr/> 13272 13273 </td> 13274 13275 <td class="entry_range"> 13276 </td> 13277 13278 <td class="entry_tags"> 13279 <ul class="entry_tags"> 13280 <li><a href="#tag_DEPTH">DEPTH</a></li> 13281 </ul> 13282 </td> 13283 13284 </tr> 13285 <tr class="entries_header"> 13286 <th class="th_details" colspan="5">Details</th> 13287 </tr> 13288 <tr class="entry_cont"> 13289 <td class="entry_details" colspan="5"> 13290 <p>The five calibration parameters that describe the 13291transform from camera-centric 3D coordinates to sensor 13292pixel coordinates:</p> 13293<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 13294</code></pre> 13295<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 13296focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 13297axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 13298being aligned with the lens plane.<wbr/></p> 13299<p>These are typically used within a transformation matrix K:</p> 13300<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 13301 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 13302 0 0,<wbr/> 1 ] 13303</code></pre> 13304<p>which can then be combined with the camera pose rotation 13305<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 13306<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the 13307complete transform from world coordinates to pixel 13308coordinates:</p> 13309<pre><code>P = [ K 0 * [ R t 13310 0 1 ] 0 1 ] 13311</code></pre> 13312<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system 13313and <code>p_<wbr/>s</code> being a point in the camera active pixel array 13314coordinate system,<wbr/> and with the mapping including the 13315homogeneous division by z:</p> 13316<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 13317p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 13318</code></pre> 13319<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 13320point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 13321(depth) in pixel coordinates.<wbr/></p> 13322<p>Note that the coordinate system for this transform is the 13323<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/> 13324where <code>(0,<wbr/>0)</code> is the top-left of the 13325preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 13326intrinsic calibration transforms have been applied to a 13327world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> 13328transform needs to be applied,<wbr/> and the result adjusted to 13329be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 13330system (where <code>(0,<wbr/> 0)</code> is the top-left of the 13331activeArraySize rectangle),<wbr/> to determine the final pixel 13332coordinate of the world point for processed (non-RAW) 13333output buffers.<wbr/></p> 13334 </td> 13335 </tr> 13336 13337 13338 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13339 <!-- end of entry --> 13340 13341 13342 <tr class="entry" id="dynamic_android.lens.radialDistortion"> 13343 <td class="entry_name 13344 " rowspan="3"> 13345 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 13346 </td> 13347 <td class="entry_type"> 13348 <span class="entry_type_name">float</span> 13349 <span class="entry_type_container">x</span> 13350 13351 <span class="entry_type_array"> 13352 6 13353 </span> 13354 <span class="entry_type_visibility"> [public]</span> 13355 13356 13357 13358 13359 13360 13361 </td> <!-- entry_type --> 13362 13363 <td class="entry_description"> 13364 <p>The correction coefficients to correct for this camera device's 13365radial and tangential lens distortion.<wbr/></p> 13366 </td> 13367 13368 <td class="entry_units"> 13369 13370 Unitless coefficients.<wbr/> 13371 13372 </td> 13373 13374 <td class="entry_range"> 13375 </td> 13376 13377 <td class="entry_tags"> 13378 <ul class="entry_tags"> 13379 <li><a href="#tag_DEPTH">DEPTH</a></li> 13380 </ul> 13381 </td> 13382 13383 </tr> 13384 <tr class="entries_header"> 13385 <th class="th_details" colspan="5">Details</th> 13386 </tr> 13387 <tr class="entry_cont"> 13388 <td class="entry_details" colspan="5"> 13389 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 13390kappa_<wbr/>3]</code> and two tangential distortion coefficients 13391<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 13392lens's geometric distortion with the mapping equations:</p> 13393<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 ) + 13394 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 13395 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 13396 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 13397</code></pre> 13398<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 13399input image that correspond to the pixel values in the 13400corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 13401<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 13402</code></pre> 13403<p>The pixel coordinates are defined in a normalized 13404coordinate system related to the 13405<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 13406Both <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 13407lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 13408of both x and y coordinates are normalized to be 1 at the 13409edge further from the optical center,<wbr/> so the range 13410for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 13411<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 13412optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 13413is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 13414<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 13415 </td> 13416 </tr> 13417 13418 13419 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13420 <!-- end of entry --> 13421 13422 13423 13424 <!-- end of kind --> 13425 </tbody> 13426 13427 <!-- end of section --> 13428 <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr> 13429 13430 13431 <tr><td colspan="6" class="kind">controls</td></tr> 13432 13433 <thead class="entries_header"> 13434 <tr> 13435 <th class="th_name">Property Name</th> 13436 <th class="th_type">Type</th> 13437 <th class="th_description">Description</th> 13438 <th class="th_units">Units</th> 13439 <th class="th_range">Range</th> 13440 <th class="th_tags">Tags</th> 13441 </tr> 13442 </thead> 13443 13444 <tbody> 13445 13446 13447 13448 13449 13450 13451 13452 13453 13454 13455 <tr class="entry" id="controls_android.noiseReduction.mode"> 13456 <td class="entry_name 13457 " rowspan="5"> 13458 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 13459 </td> 13460 <td class="entry_type"> 13461 <span class="entry_type_name entry_type_name_enum">byte</span> 13462 13463 <span class="entry_type_visibility"> [public]</span> 13464 13465 13466 <span class="entry_type_hwlevel">[full] </span> 13467 13468 13469 13470 <ul class="entry_type_enum"> 13471 <li> 13472 <span class="entry_type_enum_name">OFF</span> 13473 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 13474 </li> 13475 <li> 13476 <span class="entry_type_enum_name">FAST</span> 13477 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 13478output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 13479relative to sensor.<wbr/></p></span> 13480 </li> 13481 <li> 13482 <span class="entry_type_enum_name">HIGH_QUALITY</span> 13483 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 13484rate relative to sensor output.<wbr/></p></span> 13485 </li> 13486 <li> 13487 <span class="entry_type_enum_name">MINIMAL</span> 13488 <span class="entry_type_enum_optional">[optional]</span> 13489 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 13490sensor output.<wbr/> </p></span> 13491 </li> 13492 <li> 13493 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 13494 <span class="entry_type_enum_optional">[optional]</span> 13495 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 13496based 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 13497reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no 13498noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction 13499for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality 13500is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/> 13501quality may improve from FAST).<wbr/></p> 13502<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 13503with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 13504high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 13505produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 13506high-resolution buffers must not have noise reduction applied to maximize efficiency of 13507preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 13508low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 13509applied for reasonable preview quality.<wbr/></p> 13510<p>This mode is guaranteed to be supported by devices that support either the 13511YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 13512(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 13513be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 13514 </li> 13515 </ul> 13516 13517 </td> <!-- entry_type --> 13518 13519 <td class="entry_description"> 13520 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 13521 </td> 13522 13523 <td class="entry_units"> 13524 </td> 13525 13526 <td class="entry_range"> 13527 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 13528 </td> 13529 13530 <td class="entry_tags"> 13531 <ul class="entry_tags"> 13532 <li><a href="#tag_V1">V1</a></li> 13533 <li><a href="#tag_REPROC">REPROC</a></li> 13534 </ul> 13535 </td> 13536 13537 </tr> 13538 <tr class="entries_header"> 13539 <th class="th_details" colspan="5">Details</th> 13540 </tr> 13541 <tr class="entry_cont"> 13542 <td class="entry_details" colspan="5"> 13543 <p>The noise reduction algorithm attempts to improve image quality by removing 13544excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 13545<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 13546YUV domain.<wbr/></p> 13547<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 13548demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 13549This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 13550<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> 13551<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 13552will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 13553will use the highest-quality noise filtering algorithms,<wbr/> 13554even if it slows down capture rate.<wbr/> FAST means the camera device will not 13555slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 13556MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 13557Every output stream will have a similar amount of enhancement applied.<wbr/></p> 13558<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 13559buffer of high-resolution images during preview and reprocess image(s) from that buffer 13560into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 13561noise reduction to low-resolution streams (below maximum recording resolution) to maximize 13562preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 13563those will be reprocessed later if necessary.<wbr/></p> 13564<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 13565will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 13566may adjust the noise reduction parameters for best image quality based on the 13567<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 13568 </td> 13569 </tr> 13570 13571 <tr class="entries_header"> 13572 <th class="th_details" colspan="5">HAL Implementation Details</th> 13573 </tr> 13574 <tr class="entry_cont"> 13575 <td class="entry_details" colspan="5"> 13576 <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 13577adjust the internal noise reduction parameters appropriately to get the best quality 13578images.<wbr/></p> 13579 </td> 13580 </tr> 13581 13582 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13583 <!-- end of entry --> 13584 13585 13586 <tr class="entry" id="controls_android.noiseReduction.strength"> 13587 <td class="entry_name 13588 " rowspan="1"> 13589 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength 13590 </td> 13591 <td class="entry_type"> 13592 <span class="entry_type_name">byte</span> 13593 13594 <span class="entry_type_visibility"> [system]</span> 13595 13596 13597 13598 13599 13600 13601 </td> <!-- entry_type --> 13602 13603 <td class="entry_description"> 13604 <p>Control the amount of noise reduction 13605applied to the images</p> 13606 </td> 13607 13608 <td class="entry_units"> 13609 1-10; 10 is max noise reduction 13610 </td> 13611 13612 <td class="entry_range"> 13613 <p>1 - 10</p> 13614 </td> 13615 13616 <td class="entry_tags"> 13617 <ul class="entry_tags"> 13618 <li><a href="#tag_FUTURE">FUTURE</a></li> 13619 </ul> 13620 </td> 13621 13622 </tr> 13623 13624 13625 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13626 <!-- end of entry --> 13627 13628 13629 13630 <!-- end of kind --> 13631 </tbody> 13632 <tr><td colspan="6" class="kind">static</td></tr> 13633 13634 <thead class="entries_header"> 13635 <tr> 13636 <th class="th_name">Property Name</th> 13637 <th class="th_type">Type</th> 13638 <th class="th_description">Description</th> 13639 <th class="th_units">Units</th> 13640 <th class="th_range">Range</th> 13641 <th class="th_tags">Tags</th> 13642 </tr> 13643 </thead> 13644 13645 <tbody> 13646 13647 13648 13649 13650 13651 13652 13653 13654 13655 13656 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes"> 13657 <td class="entry_name 13658 " rowspan="5"> 13659 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes 13660 </td> 13661 <td class="entry_type"> 13662 <span class="entry_type_name">byte</span> 13663 <span class="entry_type_container">x</span> 13664 13665 <span class="entry_type_array"> 13666 n 13667 </span> 13668 <span class="entry_type_visibility"> [public as enumList]</span> 13669 13670 13671 <span class="entry_type_hwlevel">[limited] </span> 13672 13673 13674 <div class="entry_type_notes">list of enums</div> 13675 13676 13677 </td> <!-- entry_type --> 13678 13679 <td class="entry_description"> 13680 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported 13681by this camera device.<wbr/></p> 13682 </td> 13683 13684 <td class="entry_units"> 13685 </td> 13686 13687 <td class="entry_range"> 13688 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p> 13689 </td> 13690 13691 <td class="entry_tags"> 13692 <ul class="entry_tags"> 13693 <li><a href="#tag_V1">V1</a></li> 13694 <li><a href="#tag_REPROC">REPROC</a></li> 13695 </ul> 13696 </td> 13697 13698 </tr> 13699 <tr class="entries_header"> 13700 <th class="th_details" colspan="5">Details</th> 13701 </tr> 13702 <tr class="entry_cont"> 13703 <td class="entry_details" colspan="5"> 13704 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p> 13705<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support 13706ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p> 13707<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p> 13708 </td> 13709 </tr> 13710 13711 <tr class="entries_header"> 13712 <th class="th_details" colspan="5">HAL Implementation Details</th> 13713 </tr> 13714 <tr class="entry_cont"> 13715 <td class="entry_details" colspan="5"> 13716 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available 13717on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 13718That is,<wbr/> if the highest quality implementation on the camera device does not slow down 13719capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 13720 </td> 13721 </tr> 13722 13723 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13724 <!-- end of entry --> 13725 13726 13727 13728 <!-- end of kind --> 13729 </tbody> 13730 <tr><td colspan="6" class="kind">dynamic</td></tr> 13731 13732 <thead class="entries_header"> 13733 <tr> 13734 <th class="th_name">Property Name</th> 13735 <th class="th_type">Type</th> 13736 <th class="th_description">Description</th> 13737 <th class="th_units">Units</th> 13738 <th class="th_range">Range</th> 13739 <th class="th_tags">Tags</th> 13740 </tr> 13741 </thead> 13742 13743 <tbody> 13744 13745 13746 13747 13748 13749 13750 13751 13752 13753 13754 <tr class="entry" id="dynamic_android.noiseReduction.mode"> 13755 <td class="entry_name 13756 " rowspan="5"> 13757 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 13758 </td> 13759 <td class="entry_type"> 13760 <span class="entry_type_name entry_type_name_enum">byte</span> 13761 13762 <span class="entry_type_visibility"> [public]</span> 13763 13764 13765 <span class="entry_type_hwlevel">[full] </span> 13766 13767 13768 13769 <ul class="entry_type_enum"> 13770 <li> 13771 <span class="entry_type_enum_name">OFF</span> 13772 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 13773 </li> 13774 <li> 13775 <span class="entry_type_enum_name">FAST</span> 13776 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 13777output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 13778relative to sensor.<wbr/></p></span> 13779 </li> 13780 <li> 13781 <span class="entry_type_enum_name">HIGH_QUALITY</span> 13782 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 13783rate relative to sensor output.<wbr/></p></span> 13784 </li> 13785 <li> 13786 <span class="entry_type_enum_name">MINIMAL</span> 13787 <span class="entry_type_enum_optional">[optional]</span> 13788 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 13789sensor output.<wbr/> </p></span> 13790 </li> 13791 <li> 13792 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 13793 <span class="entry_type_enum_optional">[optional]</span> 13794 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 13795based 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 13796reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no 13797noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction 13798for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality 13799is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/> 13800quality may improve from FAST).<wbr/></p> 13801<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 13802with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 13803high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 13804produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 13805high-resolution buffers must not have noise reduction applied to maximize efficiency of 13806preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 13807low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 13808applied for reasonable preview quality.<wbr/></p> 13809<p>This mode is guaranteed to be supported by devices that support either the 13810YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 13811(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 13812be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 13813 </li> 13814 </ul> 13815 13816 </td> <!-- entry_type --> 13817 13818 <td class="entry_description"> 13819 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 13820 </td> 13821 13822 <td class="entry_units"> 13823 </td> 13824 13825 <td class="entry_range"> 13826 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 13827 </td> 13828 13829 <td class="entry_tags"> 13830 <ul class="entry_tags"> 13831 <li><a href="#tag_V1">V1</a></li> 13832 <li><a href="#tag_REPROC">REPROC</a></li> 13833 </ul> 13834 </td> 13835 13836 </tr> 13837 <tr class="entries_header"> 13838 <th class="th_details" colspan="5">Details</th> 13839 </tr> 13840 <tr class="entry_cont"> 13841 <td class="entry_details" colspan="5"> 13842 <p>The noise reduction algorithm attempts to improve image quality by removing 13843excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 13844<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 13845YUV domain.<wbr/></p> 13846<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 13847demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 13848This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 13849<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> 13850<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 13851will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 13852will use the highest-quality noise filtering algorithms,<wbr/> 13853even if it slows down capture rate.<wbr/> FAST means the camera device will not 13854slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 13855MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 13856Every output stream will have a similar amount of enhancement applied.<wbr/></p> 13857<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 13858buffer of high-resolution images during preview and reprocess image(s) from that buffer 13859into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 13860noise reduction to low-resolution streams (below maximum recording resolution) to maximize 13861preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 13862those will be reprocessed later if necessary.<wbr/></p> 13863<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 13864will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 13865may adjust the noise reduction parameters for best image quality based on the 13866<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 13867 </td> 13868 </tr> 13869 13870 <tr class="entries_header"> 13871 <th class="th_details" colspan="5">HAL Implementation Details</th> 13872 </tr> 13873 <tr class="entry_cont"> 13874 <td class="entry_details" colspan="5"> 13875 <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 13876adjust the internal noise reduction parameters appropriately to get the best quality 13877images.<wbr/></p> 13878 </td> 13879 </tr> 13880 13881 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13882 <!-- end of entry --> 13883 13884 13885 13886 <!-- end of kind --> 13887 </tbody> 13888 13889 <!-- end of section --> 13890 <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr> 13891 13892 13893 <tr><td colspan="6" class="kind">static</td></tr> 13894 13895 <thead class="entries_header"> 13896 <tr> 13897 <th class="th_name">Property Name</th> 13898 <th class="th_type">Type</th> 13899 <th class="th_description">Description</th> 13900 <th class="th_units">Units</th> 13901 <th class="th_range">Range</th> 13902 <th class="th_tags">Tags</th> 13903 </tr> 13904 </thead> 13905 13906 <tbody> 13907 13908 13909 13910 13911 13912 13913 13914 13915 13916 13917 <tr class="entry" id="static_android.quirks.meteringCropRegion"> 13918 <td class="entry_name 13919 entry_name_deprecated 13920 " rowspan="3"> 13921 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region 13922 </td> 13923 <td class="entry_type"> 13924 <span class="entry_type_name">byte</span> 13925 13926 <span class="entry_type_visibility"> [system]</span> 13927 13928 13929 13930 <span class="entry_type_deprecated">[deprecated] </span> 13931 13932 13933 13934 </td> <!-- entry_type --> 13935 13936 <td class="entry_description"> 13937 <p>If set to 1,<wbr/> the camera service does not 13938scale 'normalized' coordinates with respect to the crop 13939region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region 13940and output (face rectangles).<wbr/></p> 13941 </td> 13942 13943 <td class="entry_units"> 13944 </td> 13945 13946 <td class="entry_range"> 13947 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13948 </td> 13949 13950 <td class="entry_tags"> 13951 </td> 13952 13953 </tr> 13954 <tr class="entries_header"> 13955 <th class="th_details" colspan="5">Details</th> 13956 </tr> 13957 <tr class="entry_cont"> 13958 <td class="entry_details" colspan="5"> 13959 <p>Normalized coordinates refer to those in the 13960(-1000,<wbr/>1000) range mentioned in the 13961android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 13962<p>HAL implementations should instead always use and emit 13963sensor array-relative coordinates for all region data.<wbr/> Does 13964not need to be listed in static metadata.<wbr/> Support will be 13965removed in future versions of camera service.<wbr/></p> 13966 </td> 13967 </tr> 13968 13969 13970 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13971 <!-- end of entry --> 13972 13973 13974 <tr class="entry" id="static_android.quirks.triggerAfWithAuto"> 13975 <td class="entry_name 13976 entry_name_deprecated 13977 " rowspan="3"> 13978 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto 13979 </td> 13980 <td class="entry_type"> 13981 <span class="entry_type_name">byte</span> 13982 13983 <span class="entry_type_visibility"> [system]</span> 13984 13985 13986 13987 <span class="entry_type_deprecated">[deprecated] </span> 13988 13989 13990 13991 </td> <!-- entry_type --> 13992 13993 <td class="entry_description"> 13994 <p>If set to 1,<wbr/> then the camera service always 13995switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF 13996trigger.<wbr/></p> 13997 </td> 13998 13999 <td class="entry_units"> 14000 </td> 14001 14002 <td class="entry_range"> 14003 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14004 </td> 14005 14006 <td class="entry_tags"> 14007 </td> 14008 14009 </tr> 14010 <tr class="entries_header"> 14011 <th class="th_details" colspan="5">Details</th> 14012 </tr> 14013 <tr class="entry_cont"> 14014 <td class="entry_details" colspan="5"> 14015 <p>HAL implementations should implement AF trigger 14016modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and 14017CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does 14018not need to be listed in static metadata.<wbr/> Support will be 14019removed in future versions of camera service</p> 14020 </td> 14021 </tr> 14022 14023 14024 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14025 <!-- end of entry --> 14026 14027 14028 <tr class="entry" id="static_android.quirks.useZslFormat"> 14029 <td class="entry_name 14030 entry_name_deprecated 14031 " rowspan="3"> 14032 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format 14033 </td> 14034 <td class="entry_type"> 14035 <span class="entry_type_name">byte</span> 14036 14037 <span class="entry_type_visibility"> [system]</span> 14038 14039 14040 14041 <span class="entry_type_deprecated">[deprecated] </span> 14042 14043 14044 14045 </td> <!-- entry_type --> 14046 14047 <td class="entry_description"> 14048 <p>If set to 1,<wbr/> the camera service uses 14049CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of 14050HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero 14051shutter lag stream</p> 14052 </td> 14053 14054 <td class="entry_units"> 14055 </td> 14056 14057 <td class="entry_range"> 14058 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14059 </td> 14060 14061 <td class="entry_tags"> 14062 </td> 14063 14064 </tr> 14065 <tr class="entries_header"> 14066 <th class="th_details" colspan="5">Details</th> 14067 </tr> 14068 <tr class="entry_cont"> 14069 <td class="entry_details" colspan="5"> 14070 <p>HAL implementations should use gralloc usage flags 14071to determine that a stream will be used for 14072zero-shutter-lag,<wbr/> instead of relying on an explicit 14073format setting.<wbr/> Does not need to be listed in static 14074metadata.<wbr/> Support will be removed in future versions of 14075camera service.<wbr/></p> 14076 </td> 14077 </tr> 14078 14079 14080 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14081 <!-- end of entry --> 14082 14083 14084 <tr class="entry" id="static_android.quirks.usePartialResult"> 14085 <td class="entry_name 14086 entry_name_deprecated 14087 " rowspan="5"> 14088 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result 14089 </td> 14090 <td class="entry_type"> 14091 <span class="entry_type_name">byte</span> 14092 14093 <span class="entry_type_visibility"> [hidden]</span> 14094 14095 14096 14097 <span class="entry_type_deprecated">[deprecated] </span> 14098 14099 14100 14101 </td> <!-- entry_type --> 14102 14103 <td class="entry_description"> 14104 <p>If set to 1,<wbr/> the HAL will always split result 14105metadata for a single capture into multiple buffers,<wbr/> 14106returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p> 14107 </td> 14108 14109 <td class="entry_units"> 14110 </td> 14111 14112 <td class="entry_range"> 14113 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14114 </td> 14115 14116 <td class="entry_tags"> 14117 </td> 14118 14119 </tr> 14120 <tr class="entries_header"> 14121 <th class="th_details" colspan="5">Details</th> 14122 </tr> 14123 <tr class="entry_cont"> 14124 <td class="entry_details" colspan="5"> 14125 <p>Does not need to be listed in static 14126metadata.<wbr/> Support for partial results will be reworked in 14127future versions of camera service.<wbr/> This quirk will stop 14128working at that point; DO NOT USE without careful 14129consideration of future support.<wbr/></p> 14130 </td> 14131 </tr> 14132 14133 <tr class="entries_header"> 14134 <th class="th_details" colspan="5">HAL Implementation Details</th> 14135 </tr> 14136 <tr class="entry_cont"> 14137 <td class="entry_details" colspan="5"> 14138 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 14139for information on how to implement partial results.<wbr/></p> 14140 </td> 14141 </tr> 14142 14143 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14144 <!-- end of entry --> 14145 14146 14147 14148 <!-- end of kind --> 14149 </tbody> 14150 <tr><td colspan="6" class="kind">dynamic</td></tr> 14151 14152 <thead class="entries_header"> 14153 <tr> 14154 <th class="th_name">Property Name</th> 14155 <th class="th_type">Type</th> 14156 <th class="th_description">Description</th> 14157 <th class="th_units">Units</th> 14158 <th class="th_range">Range</th> 14159 <th class="th_tags">Tags</th> 14160 </tr> 14161 </thead> 14162 14163 <tbody> 14164 14165 14166 14167 14168 14169 14170 14171 14172 14173 14174 <tr class="entry" id="dynamic_android.quirks.partialResult"> 14175 <td class="entry_name 14176 entry_name_deprecated 14177 " rowspan="5"> 14178 android.<wbr/>quirks.<wbr/>partial<wbr/>Result 14179 </td> 14180 <td class="entry_type"> 14181 <span class="entry_type_name entry_type_name_enum">byte</span> 14182 14183 <span class="entry_type_visibility"> [hidden as boolean]</span> 14184 14185 14186 14187 <span class="entry_type_deprecated">[deprecated] </span> 14188 14189 14190 <ul class="entry_type_enum"> 14191 <li> 14192 <span class="entry_type_enum_name">FINAL</span> 14193 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer 14194for this capture.<wbr/></p></span> 14195 </li> 14196 <li> 14197 <span class="entry_type_enum_name">PARTIAL</span> 14198 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this 14199capture.<wbr/> More result buffers for this capture will be sent 14200by the camera device,<wbr/> the last of which will be marked 14201FINAL.<wbr/></p></span> 14202 </li> 14203 </ul> 14204 14205 </td> <!-- entry_type --> 14206 14207 <td class="entry_description"> 14208 <p>Whether a result given to the framework is the 14209final one for the capture,<wbr/> or only a partial that contains a 14210subset of the full set of dynamic metadata 14211values.<wbr/></p> 14212 </td> 14213 14214 <td class="entry_units"> 14215 </td> 14216 14217 <td class="entry_range"> 14218 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14219 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p> 14220 </td> 14221 14222 <td class="entry_tags"> 14223 </td> 14224 14225 </tr> 14226 <tr class="entries_header"> 14227 <th class="th_details" colspan="5">Details</th> 14228 </tr> 14229 <tr class="entry_cont"> 14230 <td class="entry_details" colspan="5"> 14231 <p>The entries in the result metadata buffers for a 14232single capture may not overlap,<wbr/> except for this entry.<wbr/> The 14233FINAL buffers must retain FIFO ordering relative to the 14234requests that generate them,<wbr/> so the FINAL buffer for frame 3 must 14235always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and 14236before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned 14237in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given 14238capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may 14239only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p> 14240 </td> 14241 </tr> 14242 14243 <tr class="entries_header"> 14244 <th class="th_details" colspan="5">HAL Implementation Details</th> 14245 </tr> 14246 <tr class="entry_cont"> 14247 <td class="entry_details" colspan="5"> 14248 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 14249for information on how to implement partial results.<wbr/></p> 14250 </td> 14251 </tr> 14252 14253 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14254 <!-- end of entry --> 14255 14256 14257 14258 <!-- end of kind --> 14259 </tbody> 14260 14261 <!-- end of section --> 14262 <tr><td colspan="6" id="section_request" class="section">request</td></tr> 14263 14264 14265 <tr><td colspan="6" class="kind">controls</td></tr> 14266 14267 <thead class="entries_header"> 14268 <tr> 14269 <th class="th_name">Property Name</th> 14270 <th class="th_type">Type</th> 14271 <th class="th_description">Description</th> 14272 <th class="th_units">Units</th> 14273 <th class="th_range">Range</th> 14274 <th class="th_tags">Tags</th> 14275 </tr> 14276 </thead> 14277 14278 <tbody> 14279 14280 14281 14282 14283 14284 14285 14286 14287 14288 14289 <tr class="entry" id="controls_android.request.frameCount"> 14290 <td class="entry_name 14291 entry_name_deprecated 14292 " rowspan="1"> 14293 android.<wbr/>request.<wbr/>frame<wbr/>Count 14294 </td> 14295 <td class="entry_type"> 14296 <span class="entry_type_name">int32</span> 14297 14298 <span class="entry_type_visibility"> [system]</span> 14299 14300 14301 14302 <span class="entry_type_deprecated">[deprecated] </span> 14303 14304 14305 14306 </td> <!-- entry_type --> 14307 14308 <td class="entry_description"> 14309 <p>A frame counter set by the framework.<wbr/> Must 14310be maintained unchanged in output frame.<wbr/> This value monotonically 14311increases with every new result (that is,<wbr/> each new result has a unique 14312frameCount value).<wbr/></p> 14313 </td> 14314 14315 <td class="entry_units"> 14316 incrementing integer 14317 </td> 14318 14319 <td class="entry_range"> 14320 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14321 <p>Any int.<wbr/></p> 14322 </td> 14323 14324 <td class="entry_tags"> 14325 </td> 14326 14327 </tr> 14328 14329 14330 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14331 <!-- end of entry --> 14332 14333 14334 <tr class="entry" id="controls_android.request.id"> 14335 <td class="entry_name 14336 " rowspan="1"> 14337 android.<wbr/>request.<wbr/>id 14338 </td> 14339 <td class="entry_type"> 14340 <span class="entry_type_name">int32</span> 14341 14342 <span class="entry_type_visibility"> [hidden]</span> 14343 14344 14345 14346 14347 14348 14349 </td> <!-- entry_type --> 14350 14351 <td class="entry_description"> 14352 <p>An application-specified ID for the current 14353request.<wbr/> Must be maintained unchanged in output 14354frame</p> 14355 </td> 14356 14357 <td class="entry_units"> 14358 arbitrary integer assigned by application 14359 </td> 14360 14361 <td class="entry_range"> 14362 <p>Any int</p> 14363 </td> 14364 14365 <td class="entry_tags"> 14366 <ul class="entry_tags"> 14367 <li><a href="#tag_V1">V1</a></li> 14368 </ul> 14369 </td> 14370 14371 </tr> 14372 14373 14374 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14375 <!-- end of entry --> 14376 14377 14378 <tr class="entry" id="controls_android.request.inputStreams"> 14379 <td class="entry_name 14380 entry_name_deprecated 14381 " rowspan="3"> 14382 android.<wbr/>request.<wbr/>input<wbr/>Streams 14383 </td> 14384 <td class="entry_type"> 14385 <span class="entry_type_name">int32</span> 14386 <span class="entry_type_container">x</span> 14387 14388 <span class="entry_type_array"> 14389 n 14390 </span> 14391 <span class="entry_type_visibility"> [system]</span> 14392 14393 14394 14395 <span class="entry_type_deprecated">[deprecated] </span> 14396 14397 14398 14399 </td> <!-- entry_type --> 14400 14401 <td class="entry_description"> 14402 <p>List which camera reprocess stream is used 14403for the source of reprocessing data.<wbr/></p> 14404 </td> 14405 14406 <td class="entry_units"> 14407 List of camera reprocess stream IDs 14408 </td> 14409 14410 <td class="entry_range"> 14411 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14412 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p> 14413 </td> 14414 14415 <td class="entry_tags"> 14416 <ul class="entry_tags"> 14417 <li><a href="#tag_HAL2">HAL2</a></li> 14418 </ul> 14419 </td> 14420 14421 </tr> 14422 <tr class="entries_header"> 14423 <th class="th_details" colspan="5">Details</th> 14424 </tr> 14425 <tr class="entry_cont"> 14426 <td class="entry_details" colspan="5"> 14427 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> == 14428REPROCESS.<wbr/> Ignored otherwise</p> 14429 </td> 14430 </tr> 14431 14432 14433 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14434 <!-- end of entry --> 14435 14436 14437 <tr class="entry" id="controls_android.request.metadataMode"> 14438 <td class="entry_name 14439 " rowspan="1"> 14440 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 14441 </td> 14442 <td class="entry_type"> 14443 <span class="entry_type_name entry_type_name_enum">byte</span> 14444 14445 <span class="entry_type_visibility"> [system]</span> 14446 14447 14448 14449 14450 14451 <ul class="entry_type_enum"> 14452 <li> 14453 <span class="entry_type_enum_name">NONE</span> 14454 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 14455for application-bound buffer data.<wbr/> If no 14456application-bound streams exist,<wbr/> no frame should be 14457placed in the output frame queue.<wbr/> If such streams 14458exist,<wbr/> a frame should be placed on the output queue 14459with null metadata but with the necessary output buffer 14460information.<wbr/> Timestamp information should still be 14461included with any output stream buffers</p></span> 14462 </li> 14463 <li> 14464 <span class="entry_type_enum_name">FULL</span> 14465 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 14466only be produced if they are separately 14467enabled</p></span> 14468 </li> 14469 </ul> 14470 14471 </td> <!-- entry_type --> 14472 14473 <td class="entry_description"> 14474 <p>How much metadata to produce on 14475output</p> 14476 </td> 14477 14478 <td class="entry_units"> 14479 </td> 14480 14481 <td class="entry_range"> 14482 </td> 14483 14484 <td class="entry_tags"> 14485 <ul class="entry_tags"> 14486 <li><a href="#tag_FUTURE">FUTURE</a></li> 14487 </ul> 14488 </td> 14489 14490 </tr> 14491 14492 14493 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14494 <!-- end of entry --> 14495 14496 14497 <tr class="entry" id="controls_android.request.outputStreams"> 14498 <td class="entry_name 14499 entry_name_deprecated 14500 " rowspan="3"> 14501 android.<wbr/>request.<wbr/>output<wbr/>Streams 14502 </td> 14503 <td class="entry_type"> 14504 <span class="entry_type_name">int32</span> 14505 <span class="entry_type_container">x</span> 14506 14507 <span class="entry_type_array"> 14508 n 14509 </span> 14510 <span class="entry_type_visibility"> [system]</span> 14511 14512 14513 14514 <span class="entry_type_deprecated">[deprecated] </span> 14515 14516 14517 14518 </td> <!-- entry_type --> 14519 14520 <td class="entry_description"> 14521 <p>Lists which camera output streams image data 14522from this capture must be sent to</p> 14523 </td> 14524 14525 <td class="entry_units"> 14526 List of camera stream IDs 14527 </td> 14528 14529 <td class="entry_range"> 14530 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14531 <p>List must only include streams that have been 14532created</p> 14533 </td> 14534 14535 <td class="entry_tags"> 14536 <ul class="entry_tags"> 14537 <li><a href="#tag_HAL2">HAL2</a></li> 14538 </ul> 14539 </td> 14540 14541 </tr> 14542 <tr class="entries_header"> 14543 <th class="th_details" colspan="5">Details</th> 14544 </tr> 14545 <tr class="entry_cont"> 14546 <td class="entry_details" colspan="5"> 14547 <p>If no output streams are listed,<wbr/> then the image 14548data should simply be discarded.<wbr/> The image data must 14549still be captured for metadata and statistics production,<wbr/> 14550and the lens and flash must operate as requested.<wbr/></p> 14551 </td> 14552 </tr> 14553 14554 14555 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14556 <!-- end of entry --> 14557 14558 14559 <tr class="entry" id="controls_android.request.type"> 14560 <td class="entry_name 14561 entry_name_deprecated 14562 " rowspan="1"> 14563 android.<wbr/>request.<wbr/>type 14564 </td> 14565 <td class="entry_type"> 14566 <span class="entry_type_name entry_type_name_enum">byte</span> 14567 14568 <span class="entry_type_visibility"> [system]</span> 14569 14570 14571 14572 <span class="entry_type_deprecated">[deprecated] </span> 14573 14574 14575 <ul class="entry_type_enum"> 14576 <li> 14577 <span class="entry_type_enum_name">CAPTURE</span> 14578 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/> 14579and process it according to the 14580settings</p></span> 14581 </li> 14582 <li> 14583 <span class="entry_type_enum_name">REPROCESS</span> 14584 <span class="entry_type_enum_notes"><p>Process previously captured data; the 14585<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the 14586source reprocessing stream.<wbr/> TODO: Mark dynamic metadata 14587needed for reprocessing with [RP]</p></span> 14588 </li> 14589 </ul> 14590 14591 </td> <!-- entry_type --> 14592 14593 <td class="entry_description"> 14594 <p>The type of the request; either CAPTURE or 14595REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p> 14596 </td> 14597 14598 <td class="entry_units"> 14599 </td> 14600 14601 <td class="entry_range"> 14602 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14603 </td> 14604 14605 <td class="entry_tags"> 14606 <ul class="entry_tags"> 14607 <li><a href="#tag_HAL2">HAL2</a></li> 14608 </ul> 14609 </td> 14610 14611 </tr> 14612 14613 14614 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14615 <!-- end of entry --> 14616 14617 14618 14619 <!-- end of kind --> 14620 </tbody> 14621 <tr><td colspan="6" class="kind">static</td></tr> 14622 14623 <thead class="entries_header"> 14624 <tr> 14625 <th class="th_name">Property Name</th> 14626 <th class="th_type">Type</th> 14627 <th class="th_description">Description</th> 14628 <th class="th_units">Units</th> 14629 <th class="th_range">Range</th> 14630 <th class="th_tags">Tags</th> 14631 </tr> 14632 </thead> 14633 14634 <tbody> 14635 14636 14637 14638 14639 14640 14641 14642 14643 14644 14645 <tr class="entry" id="static_android.request.maxNumOutputStreams"> 14646 <td class="entry_name 14647 " rowspan="3"> 14648 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams 14649 </td> 14650 <td class="entry_type"> 14651 <span class="entry_type_name">int32</span> 14652 <span class="entry_type_container">x</span> 14653 14654 <span class="entry_type_array"> 14655 3 14656 </span> 14657 <span class="entry_type_visibility"> [hidden]</span> 14658 14659 14660 <span class="entry_type_hwlevel">[legacy] </span> 14661 14662 14663 14664 14665 </td> <!-- entry_type --> 14666 14667 <td class="entry_description"> 14668 <p>The maximum numbers of different types of output streams 14669that can be configured and used simultaneously by a camera device.<wbr/></p> 14670 </td> 14671 14672 <td class="entry_units"> 14673 </td> 14674 14675 <td class="entry_range"> 14676 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p> 14677<p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p> 14678<p>For processed (but not stalling) format streams,<wbr/> >= 3 14679for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 14680>= 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> 14681 </td> 14682 14683 <td class="entry_tags"> 14684 <ul class="entry_tags"> 14685 <li><a href="#tag_BC">BC</a></li> 14686 </ul> 14687 </td> 14688 14689 </tr> 14690 <tr class="entries_header"> 14691 <th class="th_details" colspan="5">Details</th> 14692 </tr> 14693 <tr class="entry_cont"> 14694 <td class="entry_details" colspan="5"> 14695 <p>This is a 3 element tuple that contains the max number of output simultaneous 14696streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling) 14697formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and 14698stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams 14699number 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> 14700<p>This lists the upper bound of the number of output streams supported by 14701the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14702CPU resources that will consume more power.<wbr/> The image format for an output stream can 14703be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 14704The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized 14705into the 3 stream types as below:</p> 14706<ul> 14707<li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/> 14708 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li> 14709<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> 14710<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> 14711 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/> 14712 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or 14713 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li> 14714</ul> 14715 </td> 14716 </tr> 14717 14718 14719 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14720 <!-- end of entry --> 14721 14722 14723 <tr class="entry" id="static_android.request.maxNumOutputRaw"> 14724 <td class="entry_name 14725 " rowspan="3"> 14726 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw 14727 </td> 14728 <td class="entry_type"> 14729 <span class="entry_type_name">int32</span> 14730 14731 <span class="entry_type_visibility"> [public]</span> 14732 14733 <span class="entry_type_synthetic">[synthetic] </span> 14734 14735 <span class="entry_type_hwlevel">[legacy] </span> 14736 14737 14738 14739 14740 </td> <!-- entry_type --> 14741 14742 <td class="entry_description"> 14743 <p>The maximum numbers of different types of output streams 14744that can be configured and used simultaneously by a camera device 14745for any <code>RAW</code> formats.<wbr/></p> 14746 </td> 14747 14748 <td class="entry_units"> 14749 </td> 14750 14751 <td class="entry_range"> 14752 <p>>= 0</p> 14753 </td> 14754 14755 <td class="entry_tags"> 14756 </td> 14757 14758 </tr> 14759 <tr class="entries_header"> 14760 <th class="th_details" colspan="5">Details</th> 14761 </tr> 14762 <tr class="entry_cont"> 14763 <td class="entry_details" colspan="5"> 14764 <p>This value contains the max number of output simultaneous 14765streams from the raw sensor.<wbr/></p> 14766<p>This lists the upper bound of the number of output streams supported by 14767the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14768CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 14769be 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> 14770<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p> 14771<ul> 14772<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li> 14773<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li> 14774<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li> 14775</ul> 14776<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY) 14777never support raw streams.<wbr/></p> 14778 </td> 14779 </tr> 14780 14781 14782 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14783 <!-- end of entry --> 14784 14785 14786 <tr class="entry" id="static_android.request.maxNumOutputProc"> 14787 <td class="entry_name 14788 " rowspan="3"> 14789 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc 14790 </td> 14791 <td class="entry_type"> 14792 <span class="entry_type_name">int32</span> 14793 14794 <span class="entry_type_visibility"> [public]</span> 14795 14796 <span class="entry_type_synthetic">[synthetic] </span> 14797 14798 <span class="entry_type_hwlevel">[legacy] </span> 14799 14800 14801 14802 14803 </td> <!-- entry_type --> 14804 14805 <td class="entry_description"> 14806 <p>The maximum numbers of different types of output streams 14807that can be configured and used simultaneously by a camera device 14808for any processed (but not-stalling) formats.<wbr/></p> 14809 </td> 14810 14811 <td class="entry_units"> 14812 </td> 14813 14814 <td class="entry_range"> 14815 <p>>= 3 14816for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 14817>= 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> 14818 </td> 14819 14820 <td class="entry_tags"> 14821 </td> 14822 14823 </tr> 14824 <tr class="entries_header"> 14825 <th class="th_details" colspan="5">Details</th> 14826 </tr> 14827 <tr class="entry_cont"> 14828 <td class="entry_details" colspan="5"> 14829 <p>This value contains the max number of output simultaneous 14830streams for any processed (but not-stalling) formats.<wbr/></p> 14831<p>This lists the upper bound of the number of output streams supported by 14832the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14833CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 14834be 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> 14835<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/> 14836Typically:</p> 14837<ul> 14838<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li> 14839<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li> 14840<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li> 14841<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> 14842</ul> 14843<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 14844processed format -- it will return 0 for a non-stalling stream.<wbr/></p> 14845<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p> 14846 </td> 14847 </tr> 14848 14849 14850 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14851 <!-- end of entry --> 14852 14853 14854 <tr class="entry" id="static_android.request.maxNumOutputProcStalling"> 14855 <td class="entry_name 14856 " rowspan="3"> 14857 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling 14858 </td> 14859 <td class="entry_type"> 14860 <span class="entry_type_name">int32</span> 14861 14862 <span class="entry_type_visibility"> [public]</span> 14863 14864 <span class="entry_type_synthetic">[synthetic] </span> 14865 14866 <span class="entry_type_hwlevel">[legacy] </span> 14867 14868 14869 14870 14871 </td> <!-- entry_type --> 14872 14873 <td class="entry_description"> 14874 <p>The maximum numbers of different types of output streams 14875that can be configured and used simultaneously by a camera device 14876for any processed (and stalling) formats.<wbr/></p> 14877 </td> 14878 14879 <td class="entry_units"> 14880 </td> 14881 14882 <td class="entry_range"> 14883 <p>>= 1</p> 14884 </td> 14885 14886 <td class="entry_tags"> 14887 </td> 14888 14889 </tr> 14890 <tr class="entries_header"> 14891 <th class="th_details" colspan="5">Details</th> 14892 </tr> 14893 <tr class="entry_cont"> 14894 <td class="entry_details" colspan="5"> 14895 <p>This value contains the max number of output simultaneous 14896streams for any processed (but not-stalling) formats.<wbr/></p> 14897<p>This lists the upper bound of the number of output streams supported by 14898the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14899CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 14900be 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> 14901<p>A processed and stalling format is defined as any non-RAW format with a stallDurations 14902> 0.<wbr/> Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a 14903stalling format.<wbr/></p> 14904<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 14905processed format -- it will return a non-0 value for a stalling stream.<wbr/></p> 14906<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p> 14907 </td> 14908 </tr> 14909 14910 14911 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14912 <!-- end of entry --> 14913 14914 14915 <tr class="entry" id="static_android.request.maxNumReprocessStreams"> 14916 <td class="entry_name 14917 entry_name_deprecated 14918 " rowspan="3"> 14919 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams 14920 </td> 14921 <td class="entry_type"> 14922 <span class="entry_type_name">int32</span> 14923 <span class="entry_type_container">x</span> 14924 14925 <span class="entry_type_array"> 14926 1 14927 </span> 14928 <span class="entry_type_visibility"> [system]</span> 14929 14930 14931 14932 <span class="entry_type_deprecated">[deprecated] </span> 14933 14934 14935 14936 </td> <!-- entry_type --> 14937 14938 <td class="entry_description"> 14939 <p>How many reprocessing streams of any type 14940can be allocated at the same time.<wbr/></p> 14941 </td> 14942 14943 <td class="entry_units"> 14944 </td> 14945 14946 <td class="entry_range"> 14947 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14948 <p>>= 0</p> 14949 </td> 14950 14951 <td class="entry_tags"> 14952 <ul class="entry_tags"> 14953 <li><a href="#tag_HAL2">HAL2</a></li> 14954 </ul> 14955 </td> 14956 14957 </tr> 14958 <tr class="entries_header"> 14959 <th class="th_details" colspan="5">Details</th> 14960 </tr> 14961 <tr class="entry_cont"> 14962 <td class="entry_details" colspan="5"> 14963 <p>Only used by HAL2.<wbr/>x.<wbr/></p> 14964<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p> 14965 </td> 14966 </tr> 14967 14968 14969 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14970 <!-- end of entry --> 14971 14972 14973 <tr class="entry" id="static_android.request.maxNumInputStreams"> 14974 <td class="entry_name 14975 " rowspan="5"> 14976 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams 14977 </td> 14978 <td class="entry_type"> 14979 <span class="entry_type_name">int32</span> 14980 14981 <span class="entry_type_visibility"> [public]</span> 14982 14983 14984 <span class="entry_type_hwlevel">[full] </span> 14985 14986 14987 14988 14989 </td> <!-- entry_type --> 14990 14991 <td class="entry_description"> 14992 <p>The maximum numbers of any type of input streams 14993that can be configured and used simultaneously by a camera device.<wbr/></p> 14994 </td> 14995 14996 <td class="entry_units"> 14997 </td> 14998 14999 <td class="entry_range"> 15000 <p>0 or 1.<wbr/></p> 15001 </td> 15002 15003 <td class="entry_tags"> 15004 <ul class="entry_tags"> 15005 <li><a href="#tag_REPROC">REPROC</a></li> 15006 </ul> 15007 </td> 15008 15009 </tr> 15010 <tr class="entries_header"> 15011 <th class="th_details" colspan="5">Details</th> 15012 </tr> 15013 <tr class="entry_cont"> 15014 <td class="entry_details" colspan="5"> 15015 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p> 15016<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 15017input stream,<wbr/> there must be at least one output stream configured to to receive the 15018reprocessed images.<wbr/></p> 15019<p>When an input stream and some output streams are used in a reprocessing request,<wbr/> 15020only the input buffer will be used to produce these output stream buffers,<wbr/> and a 15021new sensor image will not be captured.<wbr/></p> 15022<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input 15023stream image format will be PRIVATE,<wbr/> the associated output stream image format 15024should be JPEG.<wbr/></p> 15025 </td> 15026 </tr> 15027 15028 <tr class="entries_header"> 15029 <th class="th_details" colspan="5">HAL Implementation Details</th> 15030 </tr> 15031 <tr class="entry_cont"> 15032 <td class="entry_details" colspan="5"> 15033 <p>For the reprocessing flow and controls,<wbr/> see 15034hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p> 15035 </td> 15036 </tr> 15037 15038 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15039 <!-- end of entry --> 15040 15041 15042 <tr class="entry" id="static_android.request.pipelineMaxDepth"> 15043 <td class="entry_name 15044 " rowspan="5"> 15045 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth 15046 </td> 15047 <td class="entry_type"> 15048 <span class="entry_type_name">byte</span> 15049 15050 <span class="entry_type_visibility"> [public]</span> 15051 15052 15053 <span class="entry_type_hwlevel">[legacy] </span> 15054 15055 15056 15057 15058 </td> <!-- entry_type --> 15059 15060 <td class="entry_description"> 15061 <p>Specifies the number of maximum pipeline stages a frame 15062has to go through from when it's exposed to when it's available 15063to the framework.<wbr/></p> 15064 </td> 15065 15066 <td class="entry_units"> 15067 </td> 15068 15069 <td class="entry_range"> 15070 </td> 15071 15072 <td class="entry_tags"> 15073 </td> 15074 15075 </tr> 15076 <tr class="entries_header"> 15077 <th class="th_details" colspan="5">Details</th> 15078 </tr> 15079 <tr class="entry_cont"> 15080 <td class="entry_details" colspan="5"> 15081 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/> 15082one stage to readout) from the sensor.<wbr/> The ISP then usually adds 15083its own stages to do custom HW processing.<wbr/> Further stages may be 15084added by SW processing.<wbr/></p> 15085<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what 15086processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline 15087depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than 15088the max pipeline depth.<wbr/></p> 15089<p>A pipeline depth of X stages is equivalent to a pipeline latency of 15090X frame intervals.<wbr/></p> 15091<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/> 15092the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p> 15093 </td> 15094 </tr> 15095 15096 <tr class="entries_header"> 15097 <th class="th_details" colspan="5">HAL Implementation Details</th> 15098 </tr> 15099 <tr class="entry_cont"> 15100 <td class="entry_details" colspan="5"> 15101 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the 15102max batch sizes may be larger than 1.<wbr/></p> 15103 </td> 15104 </tr> 15105 15106 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15107 <!-- end of entry --> 15108 15109 15110 <tr class="entry" id="static_android.request.partialResultCount"> 15111 <td class="entry_name 15112 " rowspan="3"> 15113 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count 15114 </td> 15115 <td class="entry_type"> 15116 <span class="entry_type_name">int32</span> 15117 15118 <span class="entry_type_visibility"> [public]</span> 15119 15120 15121 15122 15123 15124 15125 </td> <!-- entry_type --> 15126 15127 <td class="entry_description"> 15128 <p>Defines how many sub-components 15129a result will be composed of.<wbr/></p> 15130 </td> 15131 15132 <td class="entry_units"> 15133 </td> 15134 15135 <td class="entry_range"> 15136 <p>>= 1</p> 15137 </td> 15138 15139 <td class="entry_tags"> 15140 </td> 15141 15142 </tr> 15143 <tr class="entries_header"> 15144 <th class="th_details" colspan="5">Details</th> 15145 </tr> 15146 <tr class="entry_cont"> 15147 <td class="entry_details" colspan="5"> 15148 <p>In order to combat the pipeline latency,<wbr/> partial results 15149may be delivered to the application layer from the camera device as 15150soon as they are available.<wbr/></p> 15151<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial 15152results are not supported,<wbr/> and only the final TotalCaptureResult will 15153be produced by the camera device.<wbr/></p> 15154<p>A typical use case for this might be: after requesting an 15155auto-focus (AF) lock the new AF state might be available 50% 15156of the way through the pipeline.<wbr/> The camera device could 15157then immediately dispatch this state via a partial result to 15158the application,<wbr/> and the rest of the metadata via later 15159partial results.<wbr/></p> 15160 </td> 15161 </tr> 15162 15163 15164 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15165 <!-- end of entry --> 15166 15167 15168 <tr class="entry" id="static_android.request.availableCapabilities"> 15169 <td class="entry_name 15170 " rowspan="5"> 15171 android.<wbr/>request.<wbr/>available<wbr/>Capabilities 15172 </td> 15173 <td class="entry_type"> 15174 <span class="entry_type_name entry_type_name_enum">byte</span> 15175 <span class="entry_type_container">x</span> 15176 15177 <span class="entry_type_array"> 15178 n 15179 </span> 15180 <span class="entry_type_visibility"> [public]</span> 15181 15182 15183 <span class="entry_type_hwlevel">[legacy] </span> 15184 15185 15186 15187 <ul class="entry_type_enum"> 15188 <li> 15189 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span> 15190 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera 15191device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>) 15192supports.<wbr/></p> 15193<p>This capability is listed by all normal devices,<wbr/> and 15194indicates that the camera device has a feature set 15195that's comparable to the baseline requirements for the 15196older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 15197<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this 15198capability,<wbr/> indicating that they support only depth measurement,<wbr/> 15199not standard color output.<wbr/></p></span> 15200 </li> 15201 <li> 15202 <span class="entry_type_enum_name">MANUAL_SENSOR</span> 15203 <span class="entry_type_enum_optional">[optional]</span> 15204 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such 15205as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/> 15206The camera device supports basic manual control of the sensor image 15207acquisition related stages.<wbr/> This means the following controls are 15208guaranteed to be supported:</p> 15209<ul> 15210<li>Manual frame duration control<ul> 15211<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li> 15212<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> 15213</ul> 15214</li> 15215<li>Manual exposure control<ul> 15216<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 15217<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 15218</ul> 15219</li> 15220<li>Manual sensitivity control<ul> 15221<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 15222<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> 15223</ul> 15224</li> 15225<li>Manual lens control (if the lens is adjustable)<ul> 15226<li>android.<wbr/>lens.<wbr/>*</li> 15227</ul> 15228</li> 15229<li>Manual flash control (if a flash unit is present)<ul> 15230<li>android.<wbr/>flash.<wbr/>*</li> 15231</ul> 15232</li> 15233<li>Manual black level locking<ul> 15234<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li> 15235</ul> 15236</li> 15237<li>Auto exposure lock<ul> 15238<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 15239</ul> 15240</li> 15241</ul> 15242<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera 15243device will accurately report the values applied by 3A in the 15244result.<wbr/></p> 15245<p>A given camera device may also support additional manual sensor controls,<wbr/> 15246but this capability only covers the above list of controls.<wbr/></p> 15247<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will 15248additionally return a min frame duration that is greater than 15249zero for each supported size-format combination.<wbr/></p></span> 15250 </li> 15251 <li> 15252 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span> 15253 <span class="entry_type_enum_optional">[optional]</span> 15254 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/> 15255The camera device supports basic manual control of the image post-processing 15256stages.<wbr/> This means the following controls are guaranteed to be supported:</p> 15257<ul> 15258<li> 15259<p>Manual tonemap control</p> 15260<ul> 15261<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li> 15262<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li> 15263<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li> 15264<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li> 15265<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li> 15266</ul> 15267</li> 15268<li> 15269<p>Manual white balance control</p> 15270<ul> 15271<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li> 15272<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li> 15273</ul> 15274</li> 15275<li>Manual lens shading map control<ul> 15276<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li> 15277<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li> 15278<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li> 15279<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li> 15280</ul> 15281</li> 15282<li>Manual aberration correction control (if aberration correction is supported)<ul> 15283<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li> 15284<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li> 15285</ul> 15286</li> 15287<li>Auto white balance lock<ul> 15288<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 15289</ul> 15290</li> 15291</ul> 15292<p>If auto white balance is enabled,<wbr/> then the camera device 15293will accurately report the values applied by AWB in the result.<wbr/></p> 15294<p>A given camera device may also support additional post-processing 15295controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span> 15296 </li> 15297 <li> 15298 <span class="entry_type_enum_name">RAW</span> 15299 <span class="entry_type_enum_optional">[optional]</span> 15300 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and 15301metadata for interpreting them.<wbr/></p> 15302<p>Devices supporting the RAW capability allow both for 15303saving DNG files,<wbr/> and for direct application processing of 15304raw sensor images.<wbr/></p> 15305<ul> 15306<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li> 15307<li>The maximum available resolution for RAW_<wbr/>SENSOR streams 15308 will match either the value in 15309 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or 15310 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 15311<li>All DNG-related optional metadata entries are provided 15312 by the camera device.<wbr/></li> 15313</ul></span> 15314 </li> 15315 <li> 15316 <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span> 15317 <span class="entry_type_enum_optional">[optional]</span> 15318 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p> 15319<ul> 15320<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> 15321<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/> 15322 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of 15323 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> 15324<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 15325 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> 15326<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> 15327<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop 15328 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 15329<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both 15330 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and 15331 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li> 15332<li>The maximum available resolution for PRIVATE streams 15333 (both input/<wbr/>output) will match the maximum available 15334 resolution of JPEG streams.<wbr/></li> 15335<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 15336<li>Only below controls are effective for reprocessing requests and 15337 will be present in capture results,<wbr/> other controls in reprocess 15338 requests will be ignored by the camera device.<wbr/><ul> 15339<li>android.<wbr/>jpeg.<wbr/>*</li> 15340<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 15341<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 15342</ul> 15343</li> 15344<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 15345 <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> 15346</ul></span> 15347 </li> 15348 <li> 15349 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span> 15350 <span class="entry_type_enum_optional">[optional]</span> 15351 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of 15352the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows 15353reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p> 15354<p>The values reported for the following controls are guaranteed to be available 15355in the CaptureResult,<wbr/> including when 3A is enabled:</p> 15356<ul> 15357<li>Exposure control<ul> 15358<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 15359</ul> 15360</li> 15361<li>Sensitivity control<ul> 15362<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 15363</ul> 15364</li> 15365<li>Lens controls (if the lens is adjustable)<ul> 15366<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li> 15367<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li> 15368</ul> 15369</li> 15370</ul> 15371<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will 15372always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span> 15373 </li> 15374 <li> 15375 <span class="entry_type_enum_name">BURST_CAPTURE</span> 15376 <span class="entry_type_enum_optional">[optional]</span> 15377 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per 15378second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set 15379to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at >= 10 frames 15380per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum 15381resolution of the device,<wbr/> whichever is smaller.<wbr/></p> 15382<p>More specifically,<wbr/> this means that a size matching the camera device's active array 15383size 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/> 15384with a minimum frame duration for that format and size of either <= 1/<wbr/>20 s,<wbr/> or 15385<= 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 15386lists at least one FPS range where the minimum FPS is >= 1 /<wbr/> minimumFrameDuration 15387for 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/> 15388then 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 15389least one resolution >= 8 megapixels,<wbr/> with a minimum frame duration of <= 1/<wbr/>20 15390s.<wbr/></p> 15391<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 15392as the maximum-size YUV_<wbr/>420_<wbr/>888 resolution is.<wbr/></p> 15393<p>If the device supports the PRIVATE_<wbr/>REPROCESSING capability,<wbr/> then the same guarantees 15394as 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> 15395<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 15396and 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> 15397are also guaranteed to be <code>true</code> so burst capture with these two locks ON yields 15398consistent image output.<wbr/></p></span> 15399 </li> 15400 <li> 15401 <span class="entry_type_enum_name">YUV_REPROCESSING</span> 15402 <span class="entry_type_enum_optional">[optional]</span> 15403 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as 15404PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the 15405following:</p> 15406<ul> 15407<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> 15408<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/> 15409 YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by 15410 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and 15411 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li> 15412<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 15413 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> 15414<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> 15415<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 15416 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 15417<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 15418 <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> 15419<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 15420 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li> 15421<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 15422<li>Only the below controls are effective for reprocessing requests and will be present 15423 in capture results.<wbr/> The reprocess requests are from the original capture results that 15424 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> 15425 output buffers.<wbr/> All other controls in the reprocess requests will be ignored by the 15426 camera device.<wbr/><ul> 15427<li>android.<wbr/>jpeg.<wbr/>*</li> 15428<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 15429<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 15430<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li> 15431</ul> 15432</li> 15433<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 15434 <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> 15435</ul></span> 15436 </li> 15437 <li> 15438 <span class="entry_type_enum_name">DEPTH_OUTPUT</span> 15439 <span class="entry_type_enum_optional">[optional]</span> 15440 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p> 15441<p>This capability requires the camera device to support the following:</p> 15442<ul> 15443<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li> 15444<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 15445 output format.<wbr/></li> 15446<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/> 15447 will list the following calibration entries in both 15448 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and 15449 <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul> 15450<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 15451<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 15452<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 15453<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li> 15454</ul> 15455</li> 15456<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> 15457<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support 15458 normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16 15459 format.<wbr/></li> 15460</ul> 15461<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/> 15462so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that 15463should be accounted for (see 15464<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/> 15465On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/> 15466using a repeating burst is recommended,<wbr/> where a depth-output target is only included 15467once every N frames,<wbr/> where N is the ratio between preview output rate and depth output 15468rate,<wbr/> including depth stall time.<wbr/></p></span> 15469 </li> 15470 <li> 15471 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span> 15472 <span class="entry_type_enum_optional">[optional]</span> 15473 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) 15474use case.<wbr/> The camera device will support high speed capture session created by 15475<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which 15476only accepts high speed request lists created by 15477<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p> 15478<p>A camera device can still support high speed video streaming by advertising the high speed 15479FPS 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 15480capture request per frame control and synchronization requirements will apply to 15481the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability describes 15482the capability of a specialized operating mode with many limitations (see below),<wbr/> which 15483is only targeted at high speed video recording.<wbr/></p> 15484<p>The supported high speed video sizes and fps ranges are specified in 15485<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/> 15486To get desired output frame rates,<wbr/> the application is only allowed to select video size 15487and FPS range combinations provided by 15488<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/> 15489The 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> 15490<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 15491ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 15492controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 15493and post-processing parameters is possible.<wbr/> All other controls operate the 15494same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 15495android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 15496<ul> 15497<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 15498<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 15499<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 15500<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 15501<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 15502<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 15503<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 15504<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 15505<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 15506<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 15507</ul> 15508<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 15509<ul> 15510<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not 15511work since aeMode is ON)</li> 15512<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 15513<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 15514<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li> 15515</ul> 15516<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 15517be lower than what camera can output,<wbr/> depending on the destination Surfaces for 15518the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 15519the application need check if the video encoder is capable of supporting the 15520high frame rate for a given video size,<wbr/> or it will end up with lower recording 15521frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame 15522rate will be bounded by the screen refresh rate.<wbr/></p> 15523<p>The camera device will only support up to 2 high speed simultaneous output surfaces 15524(preview and recording surfaces) 15525in this mode.<wbr/> Above controls will be effective only if all of below conditions are true:</p> 15526<ul> 15527<li>The application creates a camera capture session with no more than 2 surfaces via 15528<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The 15529targeted surfaces must be preview surface (either from 15530<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 15531recording surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or 15532<a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li> 15533<li>The stream sizes are selected from the sizes reported by 15534<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li> 15535<li>The FPS ranges are selected from 15536<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li> 15537</ul> 15538<p>When above conditions are NOT satistied,<wbr/> 15539<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a> 15540will fail.<wbr/></p> 15541<p>Switching to a FPS range that has different maximum FPS may trigger some camera device 15542reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 15543the application avoids unnecessary maximum target FPS changes as much as possible 15544during high speed streaming.<wbr/></p></span> 15545 </li> 15546 </ul> 15547 15548 </td> <!-- entry_type --> 15549 15550 <td class="entry_description"> 15551 <p>List of capabilities that this camera device 15552advertises as fully supporting.<wbr/></p> 15553 </td> 15554 15555 <td class="entry_units"> 15556 </td> 15557 15558 <td class="entry_range"> 15559 </td> 15560 15561 <td class="entry_tags"> 15562 </td> 15563 15564 </tr> 15565 <tr class="entries_header"> 15566 <th class="th_details" colspan="5">Details</th> 15567 </tr> 15568 <tr class="entry_cont"> 15569 <td class="entry_details" colspan="5"> 15570 <p>A capability is a contract that the camera device makes in order 15571to be able to satisfy one or more use cases.<wbr/></p> 15572<p>Listing a capability guarantees that the whole set of features 15573required to support a common use will all be available.<wbr/></p> 15574<p>Using a subset of the functionality provided by an unsupported 15575capability may be possible on a specific camera device implementation; 15576to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/> 15577<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/> 15578<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p> 15579<p>The following capabilities are guaranteed to be available on 15580<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p> 15581<ul> 15582<li>MANUAL_<wbr/>SENSOR</li> 15583<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li> 15584</ul> 15585<p>Other capabilities may be available on either FULL or LIMITED 15586devices,<wbr/> but the application should query this key to be sure.<wbr/></p> 15587 </td> 15588 </tr> 15589 15590 <tr class="entries_header"> 15591 <th class="th_details" colspan="5">HAL Implementation Details</th> 15592 </tr> 15593 <tr class="entry_cont"> 15594 <td class="entry_details" colspan="5"> 15595 <p>Additional constraint details per-capability will be available 15596in the Compatibility Test Suite.<wbr/></p> 15597<p>Minimum baseline requirements required for the 15598BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/> 15599Instead refer to "BC" tags and the camera CTS tests in the 15600android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p> 15601<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/> 15602<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the 15603request and the result in order to be considered to be 15604capability-compliant.<wbr/></p> 15605<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/> 15606then exposure time must be configurable via the request <em>and</em> 15607the actual exposure applied must be available via 15608the result.<wbr/></p> 15609<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the 15610<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p> 15611<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see 15612hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p> 15613<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the 15614CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p> 15615<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the 15616YUV_<wbr/>REPROCESSING capability must support the 15617CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p> 15618<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys 15619<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/> 15620<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> 15621<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in 15622addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT 15623enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available 15624if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace 15625DEPTH).<wbr/></p> 15626 </td> 15627 </tr> 15628 15629 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15630 <!-- end of entry --> 15631 15632 15633 <tr class="entry" id="static_android.request.availableRequestKeys"> 15634 <td class="entry_name 15635 " rowspan="5"> 15636 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys 15637 </td> 15638 <td class="entry_type"> 15639 <span class="entry_type_name">int32</span> 15640 <span class="entry_type_container">x</span> 15641 15642 <span class="entry_type_array"> 15643 n 15644 </span> 15645 <span class="entry_type_visibility"> [hidden]</span> 15646 15647 15648 <span class="entry_type_hwlevel">[legacy] </span> 15649 15650 15651 15652 15653 </td> <!-- entry_type --> 15654 15655 <td class="entry_description"> 15656 <p>A list of all keys that the camera device has available 15657to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p> 15658 </td> 15659 15660 <td class="entry_units"> 15661 </td> 15662 15663 <td class="entry_range"> 15664 </td> 15665 15666 <td class="entry_tags"> 15667 </td> 15668 15669 </tr> 15670 <tr class="entries_header"> 15671 <th class="th_details" colspan="5">Details</th> 15672 </tr> 15673 <tr class="entry_cont"> 15674 <td class="entry_details" colspan="5"> 15675 <p>Attempting to set a key into a CaptureRequest that is not 15676listed here will result in an invalid request and will be rejected 15677by the camera device.<wbr/></p> 15678<p>This field can be used to query the feature set of a camera device 15679at a more granular level than capabilities.<wbr/> This is especially 15680important for optional keys that are not listed under any capability 15681in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 15682 </td> 15683 </tr> 15684 15685 <tr class="entries_header"> 15686 <th class="th_details" colspan="5">HAL Implementation Details</th> 15687 </tr> 15688 <tr class="entry_cont"> 15689 <td class="entry_details" colspan="5"> 15690 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 15691extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 15692<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 15693vendor extensions API and not against this field.<wbr/></p> 15694<p>The HAL must not consume any request tags that are not listed either 15695here or in the vendor tag list.<wbr/></p> 15696<p>The public camera2 API will always make the vendor tags visible 15697via 15698<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> 15699 </td> 15700 </tr> 15701 15702 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15703 <!-- end of entry --> 15704 15705 15706 <tr class="entry" id="static_android.request.availableResultKeys"> 15707 <td class="entry_name 15708 " rowspan="5"> 15709 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys 15710 </td> 15711 <td class="entry_type"> 15712 <span class="entry_type_name">int32</span> 15713 <span class="entry_type_container">x</span> 15714 15715 <span class="entry_type_array"> 15716 n 15717 </span> 15718 <span class="entry_type_visibility"> [hidden]</span> 15719 15720 15721 <span class="entry_type_hwlevel">[legacy] </span> 15722 15723 15724 15725 15726 </td> <!-- entry_type --> 15727 15728 <td class="entry_description"> 15729 <p>A list of all keys that the camera device has available 15730to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p> 15731 </td> 15732 15733 <td class="entry_units"> 15734 </td> 15735 15736 <td class="entry_range"> 15737 </td> 15738 15739 <td class="entry_tags"> 15740 </td> 15741 15742 </tr> 15743 <tr class="entries_header"> 15744 <th class="th_details" colspan="5">Details</th> 15745 </tr> 15746 <tr class="entry_cont"> 15747 <td class="entry_details" colspan="5"> 15748 <p>Attempting to get a key from a CaptureResult that is not 15749listed here will always return a <code>null</code> value.<wbr/> Getting a key from 15750a CaptureResult that is listed here will generally never return a <code>null</code> 15751value.<wbr/></p> 15752<p>The following keys may return <code>null</code> unless they are enabled:</p> 15753<ul> 15754<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> 15755</ul> 15756<p>(Those sometimes-null keys will nevertheless be listed here 15757if they are available.<wbr/>)</p> 15758<p>This field can be used to query the feature set of a camera device 15759at a more granular level than capabilities.<wbr/> This is especially 15760important for optional keys that are not listed under any capability 15761in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 15762 </td> 15763 </tr> 15764 15765 <tr class="entries_header"> 15766 <th class="th_details" colspan="5">HAL Implementation Details</th> 15767 </tr> 15768 <tr class="entry_cont"> 15769 <td class="entry_details" colspan="5"> 15770 <p>Tags listed here must always have an entry in the result metadata,<wbr/> 15771even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 15772matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 15773<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 15774extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 15775<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 15776vendor extensions API and not against this field.<wbr/></p> 15777<p>The HAL must not produce any result tags that are not listed either 15778here or in the vendor tag list.<wbr/></p> 15779<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> 15780 </td> 15781 </tr> 15782 15783 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15784 <!-- end of entry --> 15785 15786 15787 <tr class="entry" id="static_android.request.availableCharacteristicsKeys"> 15788 <td class="entry_name 15789 " rowspan="5"> 15790 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys 15791 </td> 15792 <td class="entry_type"> 15793 <span class="entry_type_name">int32</span> 15794 <span class="entry_type_container">x</span> 15795 15796 <span class="entry_type_array"> 15797 n 15798 </span> 15799 <span class="entry_type_visibility"> [hidden]</span> 15800 15801 15802 <span class="entry_type_hwlevel">[legacy] </span> 15803 15804 15805 15806 15807 </td> <!-- entry_type --> 15808 15809 <td class="entry_description"> 15810 <p>A list of all keys that the camera device has available 15811to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p> 15812 </td> 15813 15814 <td class="entry_units"> 15815 </td> 15816 15817 <td class="entry_range"> 15818 </td> 15819 15820 <td class="entry_tags"> 15821 </td> 15822 15823 </tr> 15824 <tr class="entries_header"> 15825 <th class="th_details" colspan="5">Details</th> 15826 </tr> 15827 <tr class="entry_cont"> 15828 <td class="entry_details" colspan="5"> 15829 <p>This entry follows the same rules as 15830<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for 15831CameraCharacteristics instead of CaptureResult).<wbr/> See above for more 15832details.<wbr/></p> 15833 </td> 15834 </tr> 15835 15836 <tr class="entries_header"> 15837 <th class="th_details" colspan="5">HAL Implementation Details</th> 15838 </tr> 15839 <tr class="entry_cont"> 15840 <td class="entry_details" colspan="5"> 15841 <p>Keys listed here must always have an entry in the static info metadata,<wbr/> 15842even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 15843matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 15844<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 15845extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 15846<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 15847vendor extensions API and not against this field.<wbr/></p> 15848<p>The HAL must not have any tags in its static info that are not listed 15849either here or in the vendor tag list.<wbr/></p> 15850<p>The public camera2 API will always make the vendor tags visible 15851via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p> 15852 </td> 15853 </tr> 15854 15855 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15856 <!-- end of entry --> 15857 15858 15859 15860 <!-- end of kind --> 15861 </tbody> 15862 <tr><td colspan="6" class="kind">dynamic</td></tr> 15863 15864 <thead class="entries_header"> 15865 <tr> 15866 <th class="th_name">Property Name</th> 15867 <th class="th_type">Type</th> 15868 <th class="th_description">Description</th> 15869 <th class="th_units">Units</th> 15870 <th class="th_range">Range</th> 15871 <th class="th_tags">Tags</th> 15872 </tr> 15873 </thead> 15874 15875 <tbody> 15876 15877 15878 15879 15880 15881 15882 15883 15884 15885 15886 <tr class="entry" id="dynamic_android.request.frameCount"> 15887 <td class="entry_name 15888 entry_name_deprecated 15889 " rowspan="3"> 15890 android.<wbr/>request.<wbr/>frame<wbr/>Count 15891 </td> 15892 <td class="entry_type"> 15893 <span class="entry_type_name">int32</span> 15894 15895 <span class="entry_type_visibility"> [hidden]</span> 15896 15897 15898 15899 <span class="entry_type_deprecated">[deprecated] </span> 15900 15901 15902 15903 </td> <!-- entry_type --> 15904 15905 <td class="entry_description"> 15906 <p>A frame counter set by the framework.<wbr/> This value monotonically 15907increases with every new result (that is,<wbr/> each new result has a unique 15908frameCount value).<wbr/></p> 15909 </td> 15910 15911 <td class="entry_units"> 15912 count of frames 15913 </td> 15914 15915 <td class="entry_range"> 15916 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15917 <p>> 0</p> 15918 </td> 15919 15920 <td class="entry_tags"> 15921 </td> 15922 15923 </tr> 15924 <tr class="entries_header"> 15925 <th class="th_details" colspan="5">Details</th> 15926 </tr> 15927 <tr class="entry_cont"> 15928 <td class="entry_details" colspan="5"> 15929 <p>Reset on release()</p> 15930 </td> 15931 </tr> 15932 15933 15934 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15935 <!-- end of entry --> 15936 15937 15938 <tr class="entry" id="dynamic_android.request.id"> 15939 <td class="entry_name 15940 " rowspan="1"> 15941 android.<wbr/>request.<wbr/>id 15942 </td> 15943 <td class="entry_type"> 15944 <span class="entry_type_name">int32</span> 15945 15946 <span class="entry_type_visibility"> [hidden]</span> 15947 15948 15949 15950 15951 15952 15953 </td> <!-- entry_type --> 15954 15955 <td class="entry_description"> 15956 <p>An application-specified ID for the current 15957request.<wbr/> Must be maintained unchanged in output 15958frame</p> 15959 </td> 15960 15961 <td class="entry_units"> 15962 arbitrary integer assigned by application 15963 </td> 15964 15965 <td class="entry_range"> 15966 <p>Any int</p> 15967 </td> 15968 15969 <td class="entry_tags"> 15970 <ul class="entry_tags"> 15971 <li><a href="#tag_V1">V1</a></li> 15972 </ul> 15973 </td> 15974 15975 </tr> 15976 15977 15978 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15979 <!-- end of entry --> 15980 15981 15982 <tr class="entry" id="dynamic_android.request.metadataMode"> 15983 <td class="entry_name 15984 " rowspan="1"> 15985 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 15986 </td> 15987 <td class="entry_type"> 15988 <span class="entry_type_name entry_type_name_enum">byte</span> 15989 15990 <span class="entry_type_visibility"> [system]</span> 15991 15992 15993 15994 15995 15996 <ul class="entry_type_enum"> 15997 <li> 15998 <span class="entry_type_enum_name">NONE</span> 15999 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 16000for application-bound buffer data.<wbr/> If no 16001application-bound streams exist,<wbr/> no frame should be 16002placed in the output frame queue.<wbr/> If such streams 16003exist,<wbr/> a frame should be placed on the output queue 16004with null metadata but with the necessary output buffer 16005information.<wbr/> Timestamp information should still be 16006included with any output stream buffers</p></span> 16007 </li> 16008 <li> 16009 <span class="entry_type_enum_name">FULL</span> 16010 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 16011only be produced if they are separately 16012enabled</p></span> 16013 </li> 16014 </ul> 16015 16016 </td> <!-- entry_type --> 16017 16018 <td class="entry_description"> 16019 <p>How much metadata to produce on 16020output</p> 16021 </td> 16022 16023 <td class="entry_units"> 16024 </td> 16025 16026 <td class="entry_range"> 16027 </td> 16028 16029 <td class="entry_tags"> 16030 <ul class="entry_tags"> 16031 <li><a href="#tag_FUTURE">FUTURE</a></li> 16032 </ul> 16033 </td> 16034 16035 </tr> 16036 16037 16038 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16039 <!-- end of entry --> 16040 16041 16042 <tr class="entry" id="dynamic_android.request.outputStreams"> 16043 <td class="entry_name 16044 entry_name_deprecated 16045 " rowspan="3"> 16046 android.<wbr/>request.<wbr/>output<wbr/>Streams 16047 </td> 16048 <td class="entry_type"> 16049 <span class="entry_type_name">int32</span> 16050 <span class="entry_type_container">x</span> 16051 16052 <span class="entry_type_array"> 16053 n 16054 </span> 16055 <span class="entry_type_visibility"> [system]</span> 16056 16057 16058 16059 <span class="entry_type_deprecated">[deprecated] </span> 16060 16061 16062 16063 </td> <!-- entry_type --> 16064 16065 <td class="entry_description"> 16066 <p>Lists which camera output streams image data 16067from this capture must be sent to</p> 16068 </td> 16069 16070 <td class="entry_units"> 16071 List of camera stream IDs 16072 </td> 16073 16074 <td class="entry_range"> 16075 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16076 <p>List must only include streams that have been 16077created</p> 16078 </td> 16079 16080 <td class="entry_tags"> 16081 <ul class="entry_tags"> 16082 <li><a href="#tag_HAL2">HAL2</a></li> 16083 </ul> 16084 </td> 16085 16086 </tr> 16087 <tr class="entries_header"> 16088 <th class="th_details" colspan="5">Details</th> 16089 </tr> 16090 <tr class="entry_cont"> 16091 <td class="entry_details" colspan="5"> 16092 <p>If no output streams are listed,<wbr/> then the image 16093data should simply be discarded.<wbr/> The image data must 16094still be captured for metadata and statistics production,<wbr/> 16095and the lens and flash must operate as requested.<wbr/></p> 16096 </td> 16097 </tr> 16098 16099 16100 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16101 <!-- end of entry --> 16102 16103 16104 <tr class="entry" id="dynamic_android.request.pipelineDepth"> 16105 <td class="entry_name 16106 " rowspan="5"> 16107 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth 16108 </td> 16109 <td class="entry_type"> 16110 <span class="entry_type_name">byte</span> 16111 16112 <span class="entry_type_visibility"> [public]</span> 16113 16114 16115 <span class="entry_type_hwlevel">[legacy] </span> 16116 16117 16118 16119 16120 </td> <!-- entry_type --> 16121 16122 <td class="entry_description"> 16123 <p>Specifies the number of pipeline stages the frame went 16124through from when it was exposed to when the final completed result 16125was available to the framework.<wbr/></p> 16126 </td> 16127 16128 <td class="entry_units"> 16129 </td> 16130 16131 <td class="entry_range"> 16132 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p> 16133 </td> 16134 16135 <td class="entry_tags"> 16136 </td> 16137 16138 </tr> 16139 <tr class="entries_header"> 16140 <th class="th_details" colspan="5">Details</th> 16141 </tr> 16142 <tr class="entry_cont"> 16143 <td class="entry_details" colspan="5"> 16144 <p>Depending on what settings are used in the request,<wbr/> and 16145what streams are configured,<wbr/> the data may undergo less processing,<wbr/> 16146and some pipeline stages skipped.<wbr/></p> 16147<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p> 16148 </td> 16149 </tr> 16150 16151 <tr class="entries_header"> 16152 <th class="th_details" colspan="5">HAL Implementation Details</th> 16153 </tr> 16154 <tr class="entry_cont"> 16155 <td class="entry_details" colspan="5"> 16156 <p>This value must always represent the accurate count of how many 16157pipeline stages were actually used.<wbr/></p> 16158 </td> 16159 </tr> 16160 16161 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16162 <!-- end of entry --> 16163 16164 16165 16166 <!-- end of kind --> 16167 </tbody> 16168 16169 <!-- end of section --> 16170 <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr> 16171 16172 16173 <tr><td colspan="6" class="kind">controls</td></tr> 16174 16175 <thead class="entries_header"> 16176 <tr> 16177 <th class="th_name">Property Name</th> 16178 <th class="th_type">Type</th> 16179 <th class="th_description">Description</th> 16180 <th class="th_units">Units</th> 16181 <th class="th_range">Range</th> 16182 <th class="th_tags">Tags</th> 16183 </tr> 16184 </thead> 16185 16186 <tbody> 16187 16188 16189 16190 16191 16192 16193 16194 16195 16196 16197 <tr class="entry" id="controls_android.scaler.cropRegion"> 16198 <td class="entry_name 16199 " rowspan="5"> 16200 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 16201 </td> 16202 <td class="entry_type"> 16203 <span class="entry_type_name">int32</span> 16204 <span class="entry_type_container">x</span> 16205 16206 <span class="entry_type_array"> 16207 4 16208 </span> 16209 <span class="entry_type_visibility"> [public as rectangle]</span> 16210 16211 16212 <span class="entry_type_hwlevel">[legacy] </span> 16213 16214 16215 16216 16217 </td> <!-- entry_type --> 16218 16219 <td class="entry_description"> 16220 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 16221 </td> 16222 16223 <td class="entry_units"> 16224 Pixel coordinates relative to 16225 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 16226 </td> 16227 16228 <td class="entry_range"> 16229 </td> 16230 16231 <td class="entry_tags"> 16232 <ul class="entry_tags"> 16233 <li><a href="#tag_BC">BC</a></li> 16234 </ul> 16235 </td> 16236 16237 </tr> 16238 <tr class="entries_header"> 16239 <th class="th_details" colspan="5">Details</th> 16240 </tr> 16241 <tr class="entry_cont"> 16242 <td class="entry_details" colspan="5"> 16243 <p>This control can be used to implement digital zoom.<wbr/></p> 16244<p>The crop region coordinate system is based off 16245<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 16246top-left corner of the sensor active array.<wbr/></p> 16247<p>Output streams use this rectangle to produce their output,<wbr/> 16248cropping to a smaller region if necessary to maintain the 16249stream's aspect ratio,<wbr/> then scaling the sensor input to 16250match the output's configured resolution.<wbr/></p> 16251<p>The crop region is applied after the RAW to other color 16252space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 16253(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 16254croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 16255<p>For non-raw streams,<wbr/> any additional per-stream cropping will 16256be done to maximize the final pixel area of the stream.<wbr/></p> 16257<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 16258ratio,<wbr/> then 4:3 streams will use the exact crop 16259region.<wbr/> 16:9 streams will further crop vertically 16260(letterbox).<wbr/></p> 16261<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 16262outputs will crop horizontally (pillarbox),<wbr/> and 16:9 16263streams will match exactly.<wbr/> These additional crops will 16264be centered within the crop region.<wbr/></p> 16265<p>The width and height of the crop region cannot 16266be set to be smaller than 16267<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 16268<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> 16269<p>The camera device may adjust the crop region to account 16270for rounding and other hardware requirements; the final 16271crop region used will be included in the output capture 16272result.<wbr/></p> 16273 </td> 16274 </tr> 16275 16276 <tr class="entries_header"> 16277 <th class="th_details" colspan="5">HAL Implementation Details</th> 16278 </tr> 16279 <tr class="entry_cont"> 16280 <td class="entry_details" colspan="5"> 16281 <p>The output streams must maintain square pixels at all 16282times,<wbr/> no matter what the relative aspect ratios of the 16283crop region and the stream are.<wbr/> Negative values for 16284corner are allowed for raw output if full pixel array is 16285larger than active pixel array.<wbr/> Width and height may be 16286rounded to nearest larger supportable width,<wbr/> especially 16287for raw output,<wbr/> where only a few fixed scales may be 16288possible.<wbr/></p> 16289<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller 16290size than active array size,<wbr/> the HAL need follow below cropping rules:</p> 16291<ul> 16292<li> 16293<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active 16294array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from 16295<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> 16296<ol> 16297<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor 16298cropped pixel area by (tx,<wbr/> ty),<wbr/> 16299where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code> 16300and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The 16301(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the 16302<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 16303<li>Scale the width and height of requested cropRegion with scaling factor of 16304sensor<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 16305respectively.<wbr/> 16306Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image 16307with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need 16308follow the general cropping rule for this new cropRegion and effective active 16309array size.<wbr/></li> 16310</ol> 16311</li> 16312<li> 16313<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/> 16314The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/> 16315The reported cropRegion may be slightly different with the requested cropRegion since 16316the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other 16317hardware limitations.<wbr/></p> 16318</li> 16319</ul> 16320<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 16321 </td> 16322 </tr> 16323 16324 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16325 <!-- end of entry --> 16326 16327 16328 16329 <!-- end of kind --> 16330 </tbody> 16331 <tr><td colspan="6" class="kind">static</td></tr> 16332 16333 <thead class="entries_header"> 16334 <tr> 16335 <th class="th_name">Property Name</th> 16336 <th class="th_type">Type</th> 16337 <th class="th_description">Description</th> 16338 <th class="th_units">Units</th> 16339 <th class="th_range">Range</th> 16340 <th class="th_tags">Tags</th> 16341 </tr> 16342 </thead> 16343 16344 <tbody> 16345 16346 16347 16348 16349 16350 16351 16352 16353 16354 16355 <tr class="entry" id="static_android.scaler.availableFormats"> 16356 <td class="entry_name 16357 entry_name_deprecated 16358 " rowspan="5"> 16359 android.<wbr/>scaler.<wbr/>available<wbr/>Formats 16360 </td> 16361 <td class="entry_type"> 16362 <span class="entry_type_name entry_type_name_enum">int32</span> 16363 <span class="entry_type_container">x</span> 16364 16365 <span class="entry_type_array"> 16366 n 16367 </span> 16368 <span class="entry_type_visibility"> [hidden as imageFormat]</span> 16369 16370 16371 16372 <span class="entry_type_deprecated">[deprecated] </span> 16373 16374 16375 <ul class="entry_type_enum"> 16376 <li> 16377 <span class="entry_type_enum_name">RAW16</span> 16378 <span class="entry_type_enum_optional">[optional]</span> 16379 <span class="entry_type_enum_value">0x20</span> 16380 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image 16381buffers with 16-bit pixels.<wbr/></p> 16382<p>Buffers of this format are typically expected to have a 16383Bayer Color Filter Array (CFA) layout,<wbr/> which is given in 16384<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with 16385CFAs that are not representable by a format in 16386<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not 16387use this format.<wbr/></p> 16388<p>Buffers of this format will also follow the constraints given for 16389RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p> 16390<p>This format is intended to give users access to the full contents 16391of the buffers coming directly from the image sensor prior to any 16392cropping or scaling operations,<wbr/> and all coordinate systems for 16393metadata used for this format are relative to the size of the 16394active region of the image sensor before any geometric distortion 16395correction has been applied (i.<wbr/>e.<wbr/> 16396<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 16397dimensions for this format are limited to the full dimensions of 16398the 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 16399<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 16400only supported output size).<wbr/></p> 16401<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for 16402the full set of performance guarantees.<wbr/></p></span> 16403 </li> 16404 <li> 16405 <span class="entry_type_enum_name">RAW_OPAQUE</span> 16406 <span class="entry_type_enum_optional">[optional]</span> 16407 <span class="entry_type_enum_value">0x24</span> 16408 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE is a format for raw image buffers coming from an 16409image sensor.<wbr/></p> 16410<p>The actual structure of buffers of this format is 16411platform-specific,<wbr/> but must follow several constraints:</p> 16412<ol> 16413<li>No image post-processing operations may have been applied to 16414buffers of this type.<wbr/> These buffers contain raw image data coming 16415directly from the image sensor.<wbr/></li> 16416<li>If a buffer of this format is passed to the camera device for 16417reprocessing,<wbr/> the resulting images will be identical to the images 16418produced if the buffer had come directly from the sensor and was 16419processed with the same settings.<wbr/></li> 16420</ol> 16421<p>The intended use for this format is to allow access to the native 16422raw format buffers coming directly from the camera sensor without 16423any additional conversions or decrease in framerate.<wbr/></p> 16424<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 16425performance guarantees.<wbr/></p></span> 16426 </li> 16427 <li> 16428 <span class="entry_type_enum_name">YV12</span> 16429 <span class="entry_type_enum_optional">[optional]</span> 16430 <span class="entry_type_enum_value">0x32315659</span> 16431 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span> 16432 </li> 16433 <li> 16434 <span class="entry_type_enum_name">YCrCb_420_SP</span> 16435 <span class="entry_type_enum_optional">[optional]</span> 16436 <span class="entry_type_enum_value">0x11</span> 16437 <span class="entry_type_enum_notes"><p>NV21</p></span> 16438 </li> 16439 <li> 16440 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span> 16441 <span class="entry_type_enum_value">0x22</span> 16442 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span> 16443 </li> 16444 <li> 16445 <span class="entry_type_enum_name">YCbCr_420_888</span> 16446 <span class="entry_type_enum_value">0x23</span> 16447 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span> 16448 </li> 16449 <li> 16450 <span class="entry_type_enum_name">BLOB</span> 16451 <span class="entry_type_enum_value">0x21</span> 16452 <span class="entry_type_enum_notes"><p>JPEG format</p></span> 16453 </li> 16454 </ul> 16455 16456 </td> <!-- entry_type --> 16457 16458 <td class="entry_description"> 16459 <p>The list of image formats that are supported by this 16460camera device for output streams.<wbr/></p> 16461 </td> 16462 16463 <td class="entry_units"> 16464 </td> 16465 16466 <td class="entry_range"> 16467 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16468 </td> 16469 16470 <td class="entry_tags"> 16471 <ul class="entry_tags"> 16472 <li><a href="#tag_BC">BC</a></li> 16473 </ul> 16474 </td> 16475 16476 </tr> 16477 <tr class="entries_header"> 16478 <th class="th_details" colspan="5">Details</th> 16479 </tr> 16480 <tr class="entry_cont"> 16481 <td class="entry_details" colspan="5"> 16482 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p> 16483<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p> 16484 </td> 16485 </tr> 16486 16487 <tr class="entries_header"> 16488 <th class="th_details" colspan="5">HAL Implementation Details</th> 16489 </tr> 16490 <tr class="entry_cont"> 16491 <td class="entry_details" colspan="5"> 16492 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 16493system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> 16494<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform 16495gralloc module will select a format based on the usage flags provided 16496by the camera HAL device and the other endpoint of the stream.<wbr/> It is 16497usually used by preview and recording streams,<wbr/> where the application doesn't 16498need access the image data.<wbr/></p> 16499<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream 16500needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p> 16501<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p> 16502<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly 16503recommended that any information used by the camera device when 16504processing images is fully expressed by the result metadata 16505for that image buffer.<wbr/></p> 16506 </td> 16507 </tr> 16508 16509 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16510 <!-- end of entry --> 16511 16512 16513 <tr class="entry" id="static_android.scaler.availableJpegMinDurations"> 16514 <td class="entry_name 16515 entry_name_deprecated 16516 " rowspan="3"> 16517 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations 16518 </td> 16519 <td class="entry_type"> 16520 <span class="entry_type_name">int64</span> 16521 <span class="entry_type_container">x</span> 16522 16523 <span class="entry_type_array"> 16524 n 16525 </span> 16526 <span class="entry_type_visibility"> [hidden]</span> 16527 16528 16529 16530 <span class="entry_type_deprecated">[deprecated] </span> 16531 16532 16533 16534 </td> <!-- entry_type --> 16535 16536 <td class="entry_description"> 16537 <p>The minimum frame duration that is supported 16538for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p> 16539 </td> 16540 16541 <td class="entry_units"> 16542 Nanoseconds 16543 </td> 16544 16545 <td class="entry_range"> 16546 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16547 <p>TODO: Remove property.<wbr/></p> 16548 </td> 16549 16550 <td class="entry_tags"> 16551 <ul class="entry_tags"> 16552 <li><a href="#tag_BC">BC</a></li> 16553 </ul> 16554 </td> 16555 16556 </tr> 16557 <tr class="entries_header"> 16558 <th class="th_details" colspan="5">Details</th> 16559 </tr> 16560 <tr class="entry_cont"> 16561 <td class="entry_details" colspan="5"> 16562 <p>This corresponds to the minimum steady-state frame duration when only 16563that JPEG stream is active and captured in a burst,<wbr/> with all 16564processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> 16565<p>When multiple streams are configured,<wbr/> the minimum 16566frame duration will be >= max(individual stream min 16567durations)</p> 16568 </td> 16569 </tr> 16570 16571 16572 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16573 <!-- end of entry --> 16574 16575 16576 <tr class="entry" id="static_android.scaler.availableJpegSizes"> 16577 <td class="entry_name 16578 entry_name_deprecated 16579 " rowspan="5"> 16580 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes 16581 </td> 16582 <td class="entry_type"> 16583 <span class="entry_type_name">int32</span> 16584 <span class="entry_type_container">x</span> 16585 16586 <span class="entry_type_array"> 16587 n x 2 16588 </span> 16589 <span class="entry_type_visibility"> [hidden as size]</span> 16590 16591 16592 16593 <span class="entry_type_deprecated">[deprecated] </span> 16594 16595 16596 16597 </td> <!-- entry_type --> 16598 16599 <td class="entry_description"> 16600 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p> 16601 </td> 16602 16603 <td class="entry_units"> 16604 </td> 16605 16606 <td class="entry_range"> 16607 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16608 <p>TODO: Remove property.<wbr/></p> 16609 </td> 16610 16611 <td class="entry_tags"> 16612 <ul class="entry_tags"> 16613 <li><a href="#tag_BC">BC</a></li> 16614 </ul> 16615 </td> 16616 16617 </tr> 16618 <tr class="entries_header"> 16619 <th class="th_details" colspan="5">Details</th> 16620 </tr> 16621 <tr class="entry_cont"> 16622 <td class="entry_details" colspan="5"> 16623 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support 16624sensor 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> 16625 </td> 16626 </tr> 16627 16628 <tr class="entries_header"> 16629 <th class="th_details" colspan="5">HAL Implementation Details</th> 16630 </tr> 16631 <tr class="entry_cont"> 16632 <td class="entry_details" colspan="5"> 16633 <p>The HAL must include sensor maximum resolution 16634(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/> 16635and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p> 16636 </td> 16637 </tr> 16638 16639 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16640 <!-- end of entry --> 16641 16642 16643 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom"> 16644 <td class="entry_name 16645 " rowspan="3"> 16646 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom 16647 </td> 16648 <td class="entry_type"> 16649 <span class="entry_type_name">float</span> 16650 16651 <span class="entry_type_visibility"> [public]</span> 16652 16653 16654 <span class="entry_type_hwlevel">[legacy] </span> 16655 16656 16657 16658 16659 </td> <!-- entry_type --> 16660 16661 <td class="entry_description"> 16662 <p>The maximum ratio between both active area width 16663and crop region width,<wbr/> and active area height and 16664crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 16665 </td> 16666 16667 <td class="entry_units"> 16668 Zoom scale factor 16669 </td> 16670 16671 <td class="entry_range"> 16672 <p>>=1</p> 16673 </td> 16674 16675 <td class="entry_tags"> 16676 <ul class="entry_tags"> 16677 <li><a href="#tag_BC">BC</a></li> 16678 </ul> 16679 </td> 16680 16681 </tr> 16682 <tr class="entries_header"> 16683 <th class="th_details" colspan="5">Details</th> 16684 </tr> 16685 <tr class="entry_cont"> 16686 <td class="entry_details" colspan="5"> 16687 <p>This represents the maximum amount of zooming possible by 16688the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping 16689window size.<wbr/></p> 16690<p>Crop regions that have a width or height that is smaller 16691than this ratio allows will be rounded up to the minimum 16692allowed size by the camera device.<wbr/></p> 16693 </td> 16694 </tr> 16695 16696 16697 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16698 <!-- end of entry --> 16699 16700 16701 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations"> 16702 <td class="entry_name 16703 entry_name_deprecated 16704 " rowspan="3"> 16705 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations 16706 </td> 16707 <td class="entry_type"> 16708 <span class="entry_type_name">int64</span> 16709 <span class="entry_type_container">x</span> 16710 16711 <span class="entry_type_array"> 16712 n 16713 </span> 16714 <span class="entry_type_visibility"> [hidden]</span> 16715 16716 16717 16718 <span class="entry_type_deprecated">[deprecated] </span> 16719 16720 16721 16722 </td> <!-- entry_type --> 16723 16724 <td class="entry_description"> 16725 <p>For each available processed output size (defined in 16726<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the 16727minimum supportable frame duration for that size.<wbr/></p> 16728 </td> 16729 16730 <td class="entry_units"> 16731 Nanoseconds 16732 </td> 16733 16734 <td class="entry_range"> 16735 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16736 </td> 16737 16738 <td class="entry_tags"> 16739 <ul class="entry_tags"> 16740 <li><a href="#tag_BC">BC</a></li> 16741 </ul> 16742 </td> 16743 16744 </tr> 16745 <tr class="entries_header"> 16746 <th class="th_details" colspan="5">Details</th> 16747 </tr> 16748 <tr class="entry_cont"> 16749 <td class="entry_details" colspan="5"> 16750 <p>This should correspond to the frame duration when only that processed 16751stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 16752set to FAST.<wbr/></p> 16753<p>When multiple streams are configured,<wbr/> the minimum frame duration will 16754be >= max(individual stream min durations).<wbr/></p> 16755 </td> 16756 </tr> 16757 16758 16759 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16760 <!-- end of entry --> 16761 16762 16763 <tr class="entry" id="static_android.scaler.availableProcessedSizes"> 16764 <td class="entry_name 16765 entry_name_deprecated 16766 " rowspan="5"> 16767 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes 16768 </td> 16769 <td class="entry_type"> 16770 <span class="entry_type_name">int32</span> 16771 <span class="entry_type_container">x</span> 16772 16773 <span class="entry_type_array"> 16774 n x 2 16775 </span> 16776 <span class="entry_type_visibility"> [hidden as size]</span> 16777 16778 16779 16780 <span class="entry_type_deprecated">[deprecated] </span> 16781 16782 16783 16784 </td> <!-- entry_type --> 16785 16786 <td class="entry_description"> 16787 <p>The resolutions available for use with 16788processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and 16789platform opaque YUV/<wbr/>RGB streams to the GPU or video 16790encoders.<wbr/></p> 16791 </td> 16792 16793 <td class="entry_units"> 16794 </td> 16795 16796 <td class="entry_range"> 16797 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16798 </td> 16799 16800 <td class="entry_tags"> 16801 <ul class="entry_tags"> 16802 <li><a href="#tag_BC">BC</a></li> 16803 </ul> 16804 </td> 16805 16806 </tr> 16807 <tr class="entries_header"> 16808 <th class="th_details" colspan="5">Details</th> 16809 </tr> 16810 <tr class="entry_cont"> 16811 <td class="entry_details" colspan="5"> 16812 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p> 16813<p>For a given use case,<wbr/> the actual maximum supported resolution 16814may be lower than what is listed here,<wbr/> depending on the destination 16815Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 16816the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 16817smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 16818can provide.<wbr/></p> 16819<p>Please reference the documentation for the image data destination to 16820check if it limits the maximum size for image data.<wbr/></p> 16821 </td> 16822 </tr> 16823 16824 <tr class="entries_header"> 16825 <th class="th_details" colspan="5">HAL Implementation Details</th> 16826 </tr> 16827 <tr class="entry_cont"> 16828 <td class="entry_details" colspan="5"> 16829 <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/> 16830the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a> 16831and each below resolution if it is smaller than or equal to the sensor 16832maximum resolution (if they are not listed in JPEG sizes already):</p> 16833<ul> 16834<li>240p (320 x 240)</li> 16835<li>480p (640 x 480)</li> 16836<li>720p (1280 x 720)</li> 16837<li>1080p (1920 x 1080)</li> 16838</ul> 16839<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/> 16840the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p> 16841 </td> 16842 </tr> 16843 16844 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16845 <!-- end of entry --> 16846 16847 16848 <tr class="entry" id="static_android.scaler.availableRawMinDurations"> 16849 <td class="entry_name 16850 entry_name_deprecated 16851 " rowspan="3"> 16852 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations 16853 </td> 16854 <td class="entry_type"> 16855 <span class="entry_type_name">int64</span> 16856 <span class="entry_type_container">x</span> 16857 16858 <span class="entry_type_array"> 16859 n 16860 </span> 16861 <span class="entry_type_visibility"> [system]</span> 16862 16863 16864 16865 <span class="entry_type_deprecated">[deprecated] </span> 16866 16867 16868 16869 </td> <!-- entry_type --> 16870 16871 <td class="entry_description"> 16872 <p>For each available raw output size (defined in 16873<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum 16874supportable frame duration for that size.<wbr/></p> 16875 </td> 16876 16877 <td class="entry_units"> 16878 Nanoseconds 16879 </td> 16880 16881 <td class="entry_range"> 16882 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16883 </td> 16884 16885 <td class="entry_tags"> 16886 <ul class="entry_tags"> 16887 <li><a href="#tag_BC">BC</a></li> 16888 </ul> 16889 </td> 16890 16891 </tr> 16892 <tr class="entries_header"> 16893 <th class="th_details" colspan="5">Details</th> 16894 </tr> 16895 <tr class="entry_cont"> 16896 <td class="entry_details" colspan="5"> 16897 <p>Should correspond to the frame duration when only the raw stream is 16898active.<wbr/></p> 16899<p>When multiple streams are configured,<wbr/> the minimum 16900frame duration will be >= max(individual stream min 16901durations)</p> 16902 </td> 16903 </tr> 16904 16905 16906 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16907 <!-- end of entry --> 16908 16909 16910 <tr class="entry" id="static_android.scaler.availableRawSizes"> 16911 <td class="entry_name 16912 entry_name_deprecated 16913 " rowspan="1"> 16914 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes 16915 </td> 16916 <td class="entry_type"> 16917 <span class="entry_type_name">int32</span> 16918 <span class="entry_type_container">x</span> 16919 16920 <span class="entry_type_array"> 16921 n x 2 16922 </span> 16923 <span class="entry_type_visibility"> [system as size]</span> 16924 16925 16926 16927 <span class="entry_type_deprecated">[deprecated] </span> 16928 16929 16930 16931 </td> <!-- entry_type --> 16932 16933 <td class="entry_description"> 16934 <p>The resolutions available for use with raw 16935sensor output streams,<wbr/> listed as width,<wbr/> 16936height</p> 16937 </td> 16938 16939 <td class="entry_units"> 16940 </td> 16941 16942 <td class="entry_range"> 16943 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16944 </td> 16945 16946 <td class="entry_tags"> 16947 </td> 16948 16949 </tr> 16950 16951 16952 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16953 <!-- end of entry --> 16954 16955 16956 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap"> 16957 <td class="entry_name 16958 " rowspan="5"> 16959 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map 16960 </td> 16961 <td class="entry_type"> 16962 <span class="entry_type_name">int32</span> 16963 16964 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span> 16965 16966 16967 16968 16969 16970 16971 </td> <!-- entry_type --> 16972 16973 <td class="entry_description"> 16974 <p>The mapping of image formats that are supported by this 16975camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> 16976 </td> 16977 16978 <td class="entry_units"> 16979 </td> 16980 16981 <td class="entry_range"> 16982 </td> 16983 16984 <td class="entry_tags"> 16985 <ul class="entry_tags"> 16986 <li><a href="#tag_REPROC">REPROC</a></li> 16987 </ul> 16988 </td> 16989 16990 </tr> 16991 <tr class="entries_header"> 16992 <th class="th_details" colspan="5">Details</th> 16993 </tr> 16994 <tr class="entry_cont"> 16995 <td class="entry_details" colspan="5"> 16996 <p>All camera devices with at least 1 16997<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one 16998available input format.<wbr/></p> 16999<p>The camera device will support the following map of formats,<wbr/> 17000if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p> 17001<table> 17002<thead> 17003<tr> 17004<th align="left">Input Format</th> 17005<th align="left">Output Format</th> 17006<th align="left">Capability</th> 17007</tr> 17008</thead> 17009<tbody> 17010<tr> 17011<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 17012<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17013<td align="left">PRIVATE_<wbr/>REPROCESSING</td> 17014</tr> 17015<tr> 17016<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 17017<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> 17018<td align="left">PRIVATE_<wbr/>REPROCESSING</td> 17019</tr> 17020<tr> 17021<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> 17022<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17023<td align="left">YUV_<wbr/>REPROCESSING</td> 17024</tr> 17025<tr> 17026<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> 17027<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> 17028<td align="left">YUV_<wbr/>REPROCESSING</td> 17029</tr> 17030</tbody> 17031</table> 17032<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A 17033PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a> 17034with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p> 17035<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input 17036or 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> 17037<p>Attempting to configure an input stream with output streams not 17038listed as available in this map is not valid.<wbr/></p> 17039 </td> 17040 </tr> 17041 17042 <tr class="entries_header"> 17043 <th class="th_details" colspan="5">HAL Implementation Details</th> 17044 </tr> 17045 <tr class="entry_cont"> 17046 <td class="entry_details" colspan="5"> 17047 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition 17048of the image format enumerations.<wbr/> The PRIVATE format refers to the 17049HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine 17050the actual format by using the gralloc usage flags.<wbr/> 17051For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially 17052processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/> 17053See camera3.<wbr/>h for more details.<wbr/></p> 17054<p>This value is encoded as a variable-size array-of-arrays.<wbr/> 17055The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where 17056<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another 17057inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p> 17058<p>A code sample to read/<wbr/>write this encoding (with a device that 17059supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/> 17060and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p> 17061<pre><code>//<wbr/> reading 17062int32_<wbr/>t* contents = &entry.<wbr/>i32[0]; 17063for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) { 17064 int32_<wbr/>t format = contents[i++]; 17065 int32_<wbr/>t length = contents[i++]; 17066 int32_<wbr/>t output_<wbr/>formats[length]; 17067 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/> 17068 length * sizeof(int32_<wbr/>t)); 17069 i += length; 17070} 17071 17072//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING) 17073int32_<wbr/>t[] contents = { 17074 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 17075 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 17076}; 17077update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/> 17078 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry); 17079</code></pre> 17080<p>If the HAL claims to support any of the capabilities listed in the 17081above details,<wbr/> then it must also support all the input-output 17082combinations listed for that capability.<wbr/> It can optionally support 17083additional formats if it so chooses.<wbr/></p> 17084 </td> 17085 </tr> 17086 17087 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17088 <!-- end of entry --> 17089 17090 17091 <tr class="entry" id="static_android.scaler.availableStreamConfigurations"> 17092 <td class="entry_name 17093 " rowspan="5"> 17094 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations 17095 </td> 17096 <td class="entry_type"> 17097 <span class="entry_type_name entry_type_name_enum">int32</span> 17098 <span class="entry_type_container">x</span> 17099 17100 <span class="entry_type_array"> 17101 n x 4 17102 </span> 17103 <span class="entry_type_visibility"> [hidden as streamConfiguration]</span> 17104 17105 17106 <span class="entry_type_hwlevel">[legacy] </span> 17107 17108 17109 17110 <ul class="entry_type_enum"> 17111 <li> 17112 <span class="entry_type_enum_name">OUTPUT</span> 17113 </li> 17114 <li> 17115 <span class="entry_type_enum_name">INPUT</span> 17116 </li> 17117 </ul> 17118 17119 </td> <!-- entry_type --> 17120 17121 <td class="entry_description"> 17122 <p>The available stream configurations that this 17123camera device supports 17124(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 17125 </td> 17126 17127 <td class="entry_units"> 17128 </td> 17129 17130 <td class="entry_range"> 17131 </td> 17132 17133 <td class="entry_tags"> 17134 </td> 17135 17136 </tr> 17137 <tr class="entries_header"> 17138 <th class="th_details" colspan="5">Details</th> 17139 </tr> 17140 <tr class="entry_cont"> 17141 <td class="entry_details" colspan="5"> 17142 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> 17143tuples.<wbr/></p> 17144<p>For a given use case,<wbr/> the actual maximum supported resolution 17145may be lower than what is listed here,<wbr/> depending on the destination 17146Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 17147the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 17148smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 17149can provide.<wbr/></p> 17150<p>Please reference the documentation for the image data destination to 17151check if it limits the maximum size for image data.<wbr/></p> 17152<p>Not all output formats may be supported in a configuration with 17153an input stream of a particular format.<wbr/> For more details,<wbr/> see 17154<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 17155<p>The following table describes the minimum required output stream 17156configurations based on the hardware level 17157(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 17158<table> 17159<thead> 17160<tr> 17161<th align="center">Format</th> 17162<th align="center">Size</th> 17163<th align="center">Hardware Level</th> 17164<th align="center">Notes</th> 17165</tr> 17166</thead> 17167<tbody> 17168<tr> 17169<td align="center">JPEG</td> 17170<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 17171<td align="center">Any</td> 17172<td align="center"></td> 17173</tr> 17174<tr> 17175<td align="center">JPEG</td> 17176<td align="center">1920x1080 (1080p)</td> 17177<td align="center">Any</td> 17178<td align="center">if 1080p <= activeArraySize</td> 17179</tr> 17180<tr> 17181<td align="center">JPEG</td> 17182<td align="center">1280x720 (720)</td> 17183<td align="center">Any</td> 17184<td align="center">if 720p <= activeArraySize</td> 17185</tr> 17186<tr> 17187<td align="center">JPEG</td> 17188<td align="center">640x480 (480p)</td> 17189<td align="center">Any</td> 17190<td align="center">if 480p <= activeArraySize</td> 17191</tr> 17192<tr> 17193<td align="center">JPEG</td> 17194<td align="center">320x240 (240p)</td> 17195<td align="center">Any</td> 17196<td align="center">if 240p <= activeArraySize</td> 17197</tr> 17198<tr> 17199<td align="center">YUV_<wbr/>420_<wbr/>888</td> 17200<td align="center">all output sizes available for JPEG</td> 17201<td align="center">FULL</td> 17202<td align="center"></td> 17203</tr> 17204<tr> 17205<td align="center">YUV_<wbr/>420_<wbr/>888</td> 17206<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 17207<td align="center">LIMITED</td> 17208<td align="center"></td> 17209</tr> 17210<tr> 17211<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> 17212<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 17213<td align="center">Any</td> 17214<td align="center"></td> 17215</tr> 17216</tbody> 17217</table> 17218<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional 17219mandatory stream configurations on a per-capability basis.<wbr/></p> 17220 </td> 17221 </tr> 17222 17223 <tr class="entries_header"> 17224 <th class="th_details" colspan="5">HAL Implementation Details</th> 17225 </tr> 17226 <tr class="entry_cont"> 17227 <td class="entry_details" colspan="5"> 17228 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 17229of sensor maximum resolution for JPEG formats (regardless of hardware 17230level).<wbr/></p> 17231<p>(The following is a rewording of the above required table):</p> 17232<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 17233<ul> 17234<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 17235(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 17236(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/> 17237it does not have to be included in the supported JPEG sizes.<wbr/></li> 17238<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 17239the dimensions being a multiple of 16.<wbr/></li> 17240</ul> 17241<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 17242However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum 17243resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 17244additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 17245if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 17246ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 172473264x2448.<wbr/></p> 17248<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/> 17249the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 17250here as output streams.<wbr/></p> 17251<p>It must also include each below resolution if it is smaller than or 17252equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 17253formats),<wbr/> as output streams:</p> 17254<ul> 17255<li>240p (320 x 240)</li> 17256<li>480p (640 x 480)</li> 17257<li>720p (1280 x 720)</li> 17258<li>1080p (1920 x 1080)</li> 17259</ul> 17260<p>For LIMITED capability devices 17261(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 17262the HAL only has to list up to the maximum video size 17263supported by the device.<wbr/></p> 17264<p>Regardless of hardware level,<wbr/> every output resolution available for 17265YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 17266<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 17267<ul> 17268<li>availableFormats</li> 17269<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 17270</ul> 17271 </td> 17272 </tr> 17273 17274 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17275 <!-- end of entry --> 17276 17277 17278 <tr class="entry" id="static_android.scaler.availableMinFrameDurations"> 17279 <td class="entry_name 17280 " rowspan="3"> 17281 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations 17282 </td> 17283 <td class="entry_type"> 17284 <span class="entry_type_name">int64</span> 17285 <span class="entry_type_container">x</span> 17286 17287 <span class="entry_type_array"> 17288 4 x n 17289 </span> 17290 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 17291 17292 17293 <span class="entry_type_hwlevel">[legacy] </span> 17294 17295 17296 17297 17298 </td> <!-- entry_type --> 17299 17300 <td class="entry_description"> 17301 <p>This lists the minimum frame duration for each 17302format/<wbr/>size combination.<wbr/></p> 17303 </td> 17304 17305 <td class="entry_units"> 17306 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 17307 </td> 17308 17309 <td class="entry_range"> 17310 </td> 17311 17312 <td class="entry_tags"> 17313 <ul class="entry_tags"> 17314 <li><a href="#tag_V1">V1</a></li> 17315 </ul> 17316 </td> 17317 17318 </tr> 17319 <tr class="entries_header"> 17320 <th class="th_details" colspan="5">Details</th> 17321 </tr> 17322 <tr class="entry_cont"> 17323 <td class="entry_details" colspan="5"> 17324 <p>This should correspond to the frame duration when only that 17325stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 17326set to either OFF or FAST.<wbr/></p> 17327<p>When multiple streams are used in a request,<wbr/> the minimum frame 17328duration will be max(individual stream min durations).<wbr/></p> 17329<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 17330is the same regardless of whether the stream is input or output.<wbr/></p> 17331<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 17332<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 17333calculating the max frame rate.<wbr/></p> 17334<p>(Keep in sync with 17335<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p> 17336 </td> 17337 </tr> 17338 17339 17340 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17341 <!-- end of entry --> 17342 17343 17344 <tr class="entry" id="static_android.scaler.availableStallDurations"> 17345 <td class="entry_name 17346 " rowspan="5"> 17347 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations 17348 </td> 17349 <td class="entry_type"> 17350 <span class="entry_type_name">int64</span> 17351 <span class="entry_type_container">x</span> 17352 17353 <span class="entry_type_array"> 17354 4 x n 17355 </span> 17356 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 17357 17358 17359 <span class="entry_type_hwlevel">[legacy] </span> 17360 17361 17362 17363 17364 </td> <!-- entry_type --> 17365 17366 <td class="entry_description"> 17367 <p>This lists the maximum stall duration for each 17368output format/<wbr/>size combination.<wbr/></p> 17369 </td> 17370 17371 <td class="entry_units"> 17372 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 17373 </td> 17374 17375 <td class="entry_range"> 17376 </td> 17377 17378 <td class="entry_tags"> 17379 <ul class="entry_tags"> 17380 <li><a href="#tag_V1">V1</a></li> 17381 </ul> 17382 </td> 17383 17384 </tr> 17385 <tr class="entries_header"> 17386 <th class="th_details" colspan="5">Details</th> 17387 </tr> 17388 <tr class="entry_cont"> 17389 <td class="entry_details" colspan="5"> 17390 <p>A stall duration is how much extra time would get added 17391to the normal minimum frame duration for a repeating request 17392that has streams with non-zero stall.<wbr/></p> 17393<p>For example,<wbr/> consider JPEG captures which have the following 17394characteristics:</p> 17395<ul> 17396<li>JPEG streams act like processed YUV streams in requests for which 17397they are not included; in requests in which they are directly 17398referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a 17399JPEG stream requires the underlying YUV data to always be ready for 17400use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact 17401frame duration) on requests that actually reference a JPEG stream.<wbr/></li> 17402<li>The JPEG processor can run concurrently to the rest of the camera 17403pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> 17404</ul> 17405<p>In other words,<wbr/> using a repeating YUV request would result 17406in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single 17407JPEG request is submitted periodically,<wbr/> the frame rate will stay 17408at 30 FPS (as long as we wait for the previous JPEG to return each 17409time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then 17410the frame rate will drop from 30 FPS.<wbr/></p> 17411<p>In general,<wbr/> submitting a new request with a non-0 stall time 17412stream will <em>not</em> cause a frame rate drop unless there are still 17413outstanding buffers for that stream from previous requests.<wbr/></p> 17414<p>Submitting a repeating request with streams (call this <code>S</code>) 17415is the same as setting the minimum frame duration from 17416the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with 17417the maximum stall duration for <code>S</code>.<wbr/></p> 17418<p>If interleaving requests with and without a stall duration,<wbr/> 17419a request will stall by the maximum of the remaining times 17420for each can-stall stream with outstanding buffers.<wbr/></p> 17421<p>This means that a stalling request will not have an exposure start 17422until the stall has completed.<wbr/></p> 17423<p>This should correspond to the stall duration when only that stream is 17424active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST 17425or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY 17426effectively results in an indeterminate stall duration for all 17427streams in a request (the regular stall calculation rules are 17428ignored).<wbr/></p> 17429<p>The following formats may always have a stall duration:</p> 17430<ul> 17431<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li> 17432<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li> 17433</ul> 17434<p>The following formats will never have a stall duration:</p> 17435<ul> 17436<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> 17437<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li> 17438</ul> 17439<p>All other formats may or may not have an allowed stall duration on 17440a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 17441for more details.<wbr/></p> 17442<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about 17443calculating the max frame rate (absent stalls).<wbr/></p> 17444<p>(Keep up to date with 17445<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p> 17446 </td> 17447 </tr> 17448 17449 <tr class="entries_header"> 17450 <th class="th_details" colspan="5">HAL Implementation Details</th> 17451 </tr> 17452 <tr class="entry_cont"> 17453 <td class="entry_details" colspan="5"> 17454 <p>If possible,<wbr/> it is recommended that all non-JPEG formats 17455(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE 17456and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p> 17457 </td> 17458 </tr> 17459 17460 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17461 <!-- end of entry --> 17462 17463 17464 <tr class="entry" id="static_android.scaler.streamConfigurationMap"> 17465 <td class="entry_name 17466 " rowspan="5"> 17467 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map 17468 </td> 17469 <td class="entry_type"> 17470 <span class="entry_type_name">int32</span> 17471 17472 <span class="entry_type_visibility"> [public as streamConfigurationMap]</span> 17473 17474 <span class="entry_type_synthetic">[synthetic] </span> 17475 17476 <span class="entry_type_hwlevel">[legacy] </span> 17477 17478 17479 17480 17481 </td> <!-- entry_type --> 17482 17483 <td class="entry_description"> 17484 <p>The available stream configurations that this 17485camera device supports; also includes the minimum frame durations 17486and the stall durations for each format/<wbr/>size combination.<wbr/></p> 17487 </td> 17488 17489 <td class="entry_units"> 17490 </td> 17491 17492 <td class="entry_range"> 17493 </td> 17494 17495 <td class="entry_tags"> 17496 </td> 17497 17498 </tr> 17499 <tr class="entries_header"> 17500 <th class="th_details" colspan="5">Details</th> 17501 </tr> 17502 <tr class="entry_cont"> 17503 <td class="entry_details" colspan="5"> 17504 <p>All camera devices will support sensor maximum resolution (defined by 17505<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> 17506<p>For a given use case,<wbr/> the actual maximum supported resolution 17507may be lower than what is listed here,<wbr/> depending on the destination 17508Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 17509the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 17510smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 17511can provide.<wbr/></p> 17512<p>Please reference the documentation for the image data destination to 17513check if it limits the maximum size for image data.<wbr/></p> 17514<p>The following table describes the minimum required output stream 17515configurations based on the hardware level 17516(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 17517<table> 17518<thead> 17519<tr> 17520<th align="center">Format</th> 17521<th align="center">Size</th> 17522<th align="center">Hardware Level</th> 17523<th align="center">Notes</th> 17524</tr> 17525</thead> 17526<tbody> 17527<tr> 17528<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17529<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td> 17530<td align="center">Any</td> 17531<td align="center"></td> 17532</tr> 17533<tr> 17534<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17535<td align="center">1920x1080 (1080p)</td> 17536<td align="center">Any</td> 17537<td align="center">if 1080p <= activeArraySize</td> 17538</tr> 17539<tr> 17540<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17541<td align="center">1280x720 (720p)</td> 17542<td align="center">Any</td> 17543<td align="center">if 720p <= activeArraySize</td> 17544</tr> 17545<tr> 17546<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17547<td align="center">640x480 (480p)</td> 17548<td align="center">Any</td> 17549<td align="center">if 480p <= activeArraySize</td> 17550</tr> 17551<tr> 17552<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17553<td align="center">320x240 (240p)</td> 17554<td align="center">Any</td> 17555<td align="center">if 240p <= activeArraySize</td> 17556</tr> 17557<tr> 17558<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> 17559<td align="center">all output sizes available for JPEG</td> 17560<td align="center">FULL</td> 17561<td align="center"></td> 17562</tr> 17563<tr> 17564<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> 17565<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 17566<td align="center">LIMITED</td> 17567<td align="center"></td> 17568</tr> 17569<tr> 17570<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 17571<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 17572<td align="center">Any</td> 17573<td align="center"></td> 17574</tr> 17575</tbody> 17576</table> 17577<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 17578stream configurations on a per-capability basis.<wbr/></p> 17579<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 17580<ul> 17581<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 17582(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 17583(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/> 17584it does not have to be included in the supported JPEG sizes.<wbr/></li> 17585<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 17586the dimensions being a multiple of 16.<wbr/> 17587Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 17588However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum 17589resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 17590additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 17591if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 17592ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 175933264x2448.<wbr/></li> 17594</ul> 17595 </td> 17596 </tr> 17597 17598 <tr class="entries_header"> 17599 <th class="th_details" colspan="5">HAL Implementation Details</th> 17600 </tr> 17601 <tr class="entry_cont"> 17602 <td class="entry_details" colspan="5"> 17603 <p>Do not set this property directly 17604(it is synthetic and will not be available at the HAL layer); 17605set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p> 17606<p>Not all output formats may be supported in a configuration with 17607an input stream of a particular format.<wbr/> For more details,<wbr/> see 17608<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 17609<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 17610of sensor maximum resolution for JPEG formats (regardless of hardware 17611level).<wbr/></p> 17612<p>(The following is a rewording of the above required table):</p> 17613<p>The HAL must include sensor maximum resolution (defined by 17614<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> 17615<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/> 17616the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 17617here as output streams.<wbr/></p> 17618<p>It must also include each below resolution if it is smaller than or 17619equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 17620formats),<wbr/> as output streams:</p> 17621<ul> 17622<li>240p (320 x 240)</li> 17623<li>480p (640 x 480)</li> 17624<li>720p (1280 x 720)</li> 17625<li>1080p (1920 x 1080)</li> 17626</ul> 17627<p>For LIMITED capability devices 17628(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 17629the HAL only has to list up to the maximum video size 17630supported by the device.<wbr/></p> 17631<p>Regardless of hardware level,<wbr/> every output resolution available for 17632YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 17633<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 17634<ul> 17635<li>availableFormats</li> 17636<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 17637</ul> 17638 </td> 17639 </tr> 17640 17641 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17642 <!-- end of entry --> 17643 17644 17645 <tr class="entry" id="static_android.scaler.croppingType"> 17646 <td class="entry_name 17647 " rowspan="3"> 17648 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type 17649 </td> 17650 <td class="entry_type"> 17651 <span class="entry_type_name entry_type_name_enum">byte</span> 17652 17653 <span class="entry_type_visibility"> [public]</span> 17654 17655 17656 <span class="entry_type_hwlevel">[legacy] </span> 17657 17658 17659 17660 <ul class="entry_type_enum"> 17661 <li> 17662 <span class="entry_type_enum_name">CENTER_ONLY</span> 17663 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span> 17664 </li> 17665 <li> 17666 <span class="entry_type_enum_name">FREEFORM</span> 17667 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span> 17668 </li> 17669 </ul> 17670 17671 </td> <!-- entry_type --> 17672 17673 <td class="entry_description"> 17674 <p>The crop type that this camera device supports.<wbr/></p> 17675 </td> 17676 17677 <td class="entry_units"> 17678 </td> 17679 17680 <td class="entry_range"> 17681 </td> 17682 17683 <td class="entry_tags"> 17684 </td> 17685 17686 </tr> 17687 <tr class="entries_header"> 17688 <th class="th_details" colspan="5">Details</th> 17689 </tr> 17690 <tr class="entry_cont"> 17691 <td class="entry_details" colspan="5"> 17692 <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 17693device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the 17694crop 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>) 17695and keep the crop region width and height unchanged.<wbr/> The camera device will return the 17696final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 17697<p>Camera devices that support FREEFORM cropping will support any crop region that 17698is inside of the active array.<wbr/> The camera device will apply the same crop region and 17699return 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> 17700<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p> 17701 </td> 17702 </tr> 17703 17704 17705 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17706 <!-- end of entry --> 17707 17708 17709 17710 <!-- end of kind --> 17711 </tbody> 17712 <tr><td colspan="6" class="kind">dynamic</td></tr> 17713 17714 <thead class="entries_header"> 17715 <tr> 17716 <th class="th_name">Property Name</th> 17717 <th class="th_type">Type</th> 17718 <th class="th_description">Description</th> 17719 <th class="th_units">Units</th> 17720 <th class="th_range">Range</th> 17721 <th class="th_tags">Tags</th> 17722 </tr> 17723 </thead> 17724 17725 <tbody> 17726 17727 17728 17729 17730 17731 17732 17733 17734 17735 17736 <tr class="entry" id="dynamic_android.scaler.cropRegion"> 17737 <td class="entry_name 17738 " rowspan="5"> 17739 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 17740 </td> 17741 <td class="entry_type"> 17742 <span class="entry_type_name">int32</span> 17743 <span class="entry_type_container">x</span> 17744 17745 <span class="entry_type_array"> 17746 4 17747 </span> 17748 <span class="entry_type_visibility"> [public as rectangle]</span> 17749 17750 17751 <span class="entry_type_hwlevel">[legacy] </span> 17752 17753 17754 17755 17756 </td> <!-- entry_type --> 17757 17758 <td class="entry_description"> 17759 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 17760 </td> 17761 17762 <td class="entry_units"> 17763 Pixel coordinates relative to 17764 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 17765 </td> 17766 17767 <td class="entry_range"> 17768 </td> 17769 17770 <td class="entry_tags"> 17771 <ul class="entry_tags"> 17772 <li><a href="#tag_BC">BC</a></li> 17773 </ul> 17774 </td> 17775 17776 </tr> 17777 <tr class="entries_header"> 17778 <th class="th_details" colspan="5">Details</th> 17779 </tr> 17780 <tr class="entry_cont"> 17781 <td class="entry_details" colspan="5"> 17782 <p>This control can be used to implement digital zoom.<wbr/></p> 17783<p>The crop region coordinate system is based off 17784<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 17785top-left corner of the sensor active array.<wbr/></p> 17786<p>Output streams use this rectangle to produce their output,<wbr/> 17787cropping to a smaller region if necessary to maintain the 17788stream's aspect ratio,<wbr/> then scaling the sensor input to 17789match the output's configured resolution.<wbr/></p> 17790<p>The crop region is applied after the RAW to other color 17791space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 17792(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 17793croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 17794<p>For non-raw streams,<wbr/> any additional per-stream cropping will 17795be done to maximize the final pixel area of the stream.<wbr/></p> 17796<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 17797ratio,<wbr/> then 4:3 streams will use the exact crop 17798region.<wbr/> 16:9 streams will further crop vertically 17799(letterbox).<wbr/></p> 17800<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 17801outputs will crop horizontally (pillarbox),<wbr/> and 16:9 17802streams will match exactly.<wbr/> These additional crops will 17803be centered within the crop region.<wbr/></p> 17804<p>The width and height of the crop region cannot 17805be set to be smaller than 17806<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 17807<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> 17808<p>The camera device may adjust the crop region to account 17809for rounding and other hardware requirements; the final 17810crop region used will be included in the output capture 17811result.<wbr/></p> 17812 </td> 17813 </tr> 17814 17815 <tr class="entries_header"> 17816 <th class="th_details" colspan="5">HAL Implementation Details</th> 17817 </tr> 17818 <tr class="entry_cont"> 17819 <td class="entry_details" colspan="5"> 17820 <p>The output streams must maintain square pixels at all 17821times,<wbr/> no matter what the relative aspect ratios of the 17822crop region and the stream are.<wbr/> Negative values for 17823corner are allowed for raw output if full pixel array is 17824larger than active pixel array.<wbr/> Width and height may be 17825rounded to nearest larger supportable width,<wbr/> especially 17826for raw output,<wbr/> where only a few fixed scales may be 17827possible.<wbr/></p> 17828<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller 17829size than active array size,<wbr/> the HAL need follow below cropping rules:</p> 17830<ul> 17831<li> 17832<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active 17833array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from 17834<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> 17835<ol> 17836<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor 17837cropped pixel area by (tx,<wbr/> ty),<wbr/> 17838where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code> 17839and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The 17840(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the 17841<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 17842<li>Scale the width and height of requested cropRegion with scaling factor of 17843sensor<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 17844respectively.<wbr/> 17845Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image 17846with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need 17847follow the general cropping rule for this new cropRegion and effective active 17848array size.<wbr/></li> 17849</ol> 17850</li> 17851<li> 17852<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/> 17853The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/> 17854The reported cropRegion may be slightly different with the requested cropRegion since 17855the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other 17856hardware limitations.<wbr/></p> 17857</li> 17858</ul> 17859<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 17860 </td> 17861 </tr> 17862 17863 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17864 <!-- end of entry --> 17865 17866 17867 17868 <!-- end of kind --> 17869 </tbody> 17870 17871 <!-- end of section --> 17872 <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr> 17873 17874 17875 <tr><td colspan="6" class="kind">controls</td></tr> 17876 17877 <thead class="entries_header"> 17878 <tr> 17879 <th class="th_name">Property Name</th> 17880 <th class="th_type">Type</th> 17881 <th class="th_description">Description</th> 17882 <th class="th_units">Units</th> 17883 <th class="th_range">Range</th> 17884 <th class="th_tags">Tags</th> 17885 </tr> 17886 </thead> 17887 17888 <tbody> 17889 17890 17891 17892 17893 17894 17895 17896 17897 17898 17899 <tr class="entry" id="controls_android.sensor.exposureTime"> 17900 <td class="entry_name 17901 " rowspan="3"> 17902 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 17903 </td> 17904 <td class="entry_type"> 17905 <span class="entry_type_name">int64</span> 17906 17907 <span class="entry_type_visibility"> [public]</span> 17908 17909 17910 <span class="entry_type_hwlevel">[full] </span> 17911 17912 17913 17914 17915 </td> <!-- entry_type --> 17916 17917 <td class="entry_description"> 17918 <p>Duration each pixel is exposed to 17919light.<wbr/></p> 17920 </td> 17921 17922 <td class="entry_units"> 17923 Nanoseconds 17924 </td> 17925 17926 <td class="entry_range"> 17927 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 17928 </td> 17929 17930 <td class="entry_tags"> 17931 <ul class="entry_tags"> 17932 <li><a href="#tag_V1">V1</a></li> 17933 </ul> 17934 </td> 17935 17936 </tr> 17937 <tr class="entries_header"> 17938 <th class="th_details" colspan="5">Details</th> 17939 </tr> 17940 <tr class="entry_cont"> 17941 <td class="entry_details" colspan="5"> 17942 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 17943duration exposed to the nearest possible value (rather than expose longer).<wbr/> 17944The final exposure time used will be available in the output capture result.<wbr/></p> 17945<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 17946OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 17947 </td> 17948 </tr> 17949 17950 17951 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17952 <!-- end of entry --> 17953 17954 17955 <tr class="entry" id="controls_android.sensor.frameDuration"> 17956 <td class="entry_name 17957 " rowspan="5"> 17958 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 17959 </td> 17960 <td class="entry_type"> 17961 <span class="entry_type_name">int64</span> 17962 17963 <span class="entry_type_visibility"> [public]</span> 17964 17965 17966 <span class="entry_type_hwlevel">[full] </span> 17967 17968 17969 17970 17971 </td> <!-- entry_type --> 17972 17973 <td class="entry_description"> 17974 <p>Duration from start of frame exposure to 17975start of next frame exposure.<wbr/></p> 17976 </td> 17977 17978 <td class="entry_units"> 17979 Nanoseconds 17980 </td> 17981 17982 <td class="entry_range"> 17983 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 17984<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration 17985is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 17986 </td> 17987 17988 <td class="entry_tags"> 17989 <ul class="entry_tags"> 17990 <li><a href="#tag_V1">V1</a></li> 17991 </ul> 17992 </td> 17993 17994 </tr> 17995 <tr class="entries_header"> 17996 <th class="th_details" colspan="5">Details</th> 17997 </tr> 17998 <tr class="entry_cont"> 17999 <td class="entry_details" colspan="5"> 18000 <p>The maximum frame rate that can be supported by a camera subsystem is 18001a function of many factors:</p> 18002<ul> 18003<li>Requested resolutions of output image streams</li> 18004<li>Availability of binning /<wbr/> skipping modes on the imager</li> 18005<li>The bandwidth of the imager interface</li> 18006<li>The bandwidth of the various ISP processing blocks</li> 18007</ul> 18008<p>Since these factors can vary greatly between different ISPs and 18009sensors,<wbr/> the camera abstraction tries to represent the bandwidth 18010restrictions with as simple a model as possible.<wbr/></p> 18011<p>The model presented has the following characteristics:</p> 18012<ul> 18013<li>The image sensor is always configured to output the smallest 18014resolution possible given the application's requested output stream 18015sizes.<wbr/> The smallest resolution is defined as being at least as large 18016as the largest requested output stream size; the camera pipeline must 18017never digitally upsample sensor data when the crop region covers the 18018whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 18019resolutions are configured,<wbr/> the sensor can provide a higher frame 18020rate.<wbr/></li> 18021<li>Since any request may use any or all the currently configured 18022output streams,<wbr/> the sensor and ISP must be configured to support 18023scaling a single capture to all the streams at the same time.<wbr/> This 18024means the camera pipeline must be ready to produce the largest 18025requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 18026frame rate of a given configured stream set is governed only by the 18027largest requested stream resolution.<wbr/></li> 18028<li>Using more than one output stream in a request does not affect the 18029frame duration.<wbr/></li> 18030<li>Certain format-streams may need to do additional background processing 18031before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 18032can run concurrently to the rest of the camera pipeline,<wbr/> but 18033cannot process more than 1 capture at a time.<wbr/></li> 18034</ul> 18035<p>The necessary information for the application,<wbr/> given the model above,<wbr/> 18036is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using 18037<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 18038These are used to determine the maximum frame rate /<wbr/> minimum frame 18039duration that is possible for a given stream configuration.<wbr/></p> 18040<p>Specifically,<wbr/> the application can use the following rules to 18041determine the minimum frame duration it can request from the camera 18042device:</p> 18043<ol> 18044<li>Let the set of currently configured input/<wbr/>output streams 18045be called <code>S</code>.<wbr/></li> 18046<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking 18047it 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> 18048(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be 18049called <code>F</code>.<wbr/></li> 18050<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 18051for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 18052used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 18053</ol> 18054<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> 18055using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> 18056determines the steady state frame rate that the application will get 18057if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of 18058request be called <code>Rsimple</code>.<wbr/></p> 18059<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 18060by a single capture of a new request <code>Rstall</code> (which has at least 18061one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 18062same minimum frame duration this will not cause a frame rate loss 18063if all buffers from the previous <code>Rstall</code> have already been 18064delivered.<wbr/></p> 18065<p>For more details about stalling,<wbr/> see 18066<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p> 18067<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 18068OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 18069 </td> 18070 </tr> 18071 18072 <tr class="entries_header"> 18073 <th class="th_details" colspan="5">HAL Implementation Details</th> 18074 </tr> 18075 <tr class="entry_cont"> 18076 <td class="entry_details" colspan="5"> 18077 <p>For more details about stalling,<wbr/> see 18078<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 18079 </td> 18080 </tr> 18081 18082 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18083 <!-- end of entry --> 18084 18085 18086 <tr class="entry" id="controls_android.sensor.sensitivity"> 18087 <td class="entry_name 18088 " rowspan="5"> 18089 android.<wbr/>sensor.<wbr/>sensitivity 18090 </td> 18091 <td class="entry_type"> 18092 <span class="entry_type_name">int32</span> 18093 18094 <span class="entry_type_visibility"> [public]</span> 18095 18096 18097 <span class="entry_type_hwlevel">[full] </span> 18098 18099 18100 18101 18102 </td> <!-- entry_type --> 18103 18104 <td class="entry_description"> 18105 <p>The amount of gain applied to sensor data 18106before processing.<wbr/></p> 18107 </td> 18108 18109 <td class="entry_units"> 18110 ISO arithmetic units 18111 </td> 18112 18113 <td class="entry_range"> 18114 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 18115 </td> 18116 18117 <td class="entry_tags"> 18118 <ul class="entry_tags"> 18119 <li><a href="#tag_V1">V1</a></li> 18120 </ul> 18121 </td> 18122 18123 </tr> 18124 <tr class="entries_header"> 18125 <th class="th_details" colspan="5">Details</th> 18126 </tr> 18127 <tr class="entry_cont"> 18128 <td class="entry_details" colspan="5"> 18129 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 18130as defined in ISO 12232:2006.<wbr/></p> 18131<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 18132if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 18133is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 18134<p>If the camera device cannot apply the exact sensitivity 18135requested,<wbr/> it will reduce the gain to the nearest supported 18136value.<wbr/> The final sensitivity used will be available in the 18137output capture result.<wbr/></p> 18138 </td> 18139 </tr> 18140 18141 <tr class="entries_header"> 18142 <th class="th_details" colspan="5">HAL Implementation Details</th> 18143 </tr> 18144 <tr class="entry_cont"> 18145 <td class="entry_details" colspan="5"> 18146 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 18147 </td> 18148 </tr> 18149 18150 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18151 <!-- end of entry --> 18152 18153 18154 <tr class="entry" id="controls_android.sensor.testPatternData"> 18155 <td class="entry_name 18156 " rowspan="5"> 18157 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 18158 </td> 18159 <td class="entry_type"> 18160 <span class="entry_type_name">int32</span> 18161 <span class="entry_type_container">x</span> 18162 18163 <span class="entry_type_array"> 18164 4 18165 </span> 18166 <span class="entry_type_visibility"> [public]</span> 18167 18168 18169 18170 18171 18172 18173 </td> <!-- entry_type --> 18174 18175 <td class="entry_description"> 18176 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 18177when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 18178 </td> 18179 18180 <td class="entry_units"> 18181 </td> 18182 18183 <td class="entry_range"> 18184 </td> 18185 18186 <td class="entry_tags"> 18187 </td> 18188 18189 </tr> 18190 <tr class="entries_header"> 18191 <th class="th_details" colspan="5">Details</th> 18192 </tr> 18193 <tr class="entry_cont"> 18194 <td class="entry_details" colspan="5"> 18195 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 18196The camera device then uses the most significant X bits 18197that correspond to how many bits are in its Bayer raw sensor 18198output.<wbr/></p> 18199<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 1820010 most significant bits from each color channel.<wbr/></p> 18201 </td> 18202 </tr> 18203 18204 <tr class="entries_header"> 18205 <th class="th_details" colspan="5">HAL Implementation Details</th> 18206 </tr> 18207 <tr class="entry_cont"> 18208 <td class="entry_details" colspan="5"> 18209 18210 </td> 18211 </tr> 18212 18213 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18214 <!-- end of entry --> 18215 18216 18217 <tr class="entry" id="controls_android.sensor.testPatternMode"> 18218 <td class="entry_name 18219 " rowspan="5"> 18220 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 18221 </td> 18222 <td class="entry_type"> 18223 <span class="entry_type_name entry_type_name_enum">int32</span> 18224 18225 <span class="entry_type_visibility"> [public]</span> 18226 18227 18228 18229 18230 18231 <ul class="entry_type_enum"> 18232 <li> 18233 <span class="entry_type_enum_name">OFF</span> 18234 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 18235device returns captures from the image sensor.<wbr/></p> 18236<p>This is the default if the key is not set.<wbr/></p></span> 18237 </li> 18238 <li> 18239 <span class="entry_type_enum_name">SOLID_COLOR</span> 18240 <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 18241respective color channel provided in 18242<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 18243<p>For example:</p> 18244<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 18245</code></pre> 18246<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 18247<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 18248</code></pre> 18249<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 18250are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 18251 </li> 18252 <li> 18253 <span class="entry_type_enum_name">COLOR_BARS</span> 18254 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 18255<p>The vertical bars (left-to-right) are as follows:</p> 18256<ul> 18257<li>100% white</li> 18258<li>yellow</li> 18259<li>cyan</li> 18260<li>green</li> 18261<li>magenta</li> 18262<li>red</li> 18263<li>blue</li> 18264<li>black</li> 18265</ul> 18266<p>In general the image would look like the following:</p> 18267<pre><code>W Y C G M R B K 18268W Y C G M R B K 18269W Y C G M R B K 18270W Y C G M R B K 18271W Y C G M R B K 18272.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 18273.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 18274.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 18275 18276(B = Blue,<wbr/> K = Black) 18277</code></pre> 18278<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 18279When this is not possible,<wbr/> the bar size should be rounded 18280down to the nearest integer and the pattern can repeat 18281on the right side.<wbr/></p> 18282<p>Each bar's height must always take up the full sensor 18283pixel array height.<wbr/></p> 18284<p>Each pixel in this test pattern must be set to either 182850% intensity or 100% intensity.<wbr/></p></span> 18286 </li> 18287 <li> 18288 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 18289 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 18290each bar should start at its specified color at the top,<wbr/> 18291and fade to gray at the bottom.<wbr/></p> 18292<p>Furthermore each bar is further subdivided into a left and 18293right half.<wbr/> The left half should have a smooth gradient,<wbr/> 18294and the right half should have a quantized gradient.<wbr/></p> 18295<p>In particular,<wbr/> the right half's should consist of blocks of the 18296same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 18297<p>The least significant bits in the quantized gradient should 18298be copied from the most significant bits of the smooth gradient.<wbr/></p> 18299<p>The height of each bar should always be a multiple of 128.<wbr/> 18300When this is not the case,<wbr/> the pattern should repeat at the bottom 18301of the image.<wbr/></p></span> 18302 </li> 18303 <li> 18304 <span class="entry_type_enum_name">PN9</span> 18305 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 18306generated from a PN9 512-bit sequence (typically implemented 18307in hardware with a linear feedback shift register).<wbr/></p> 18308<p>The generator should be reset at the beginning of each frame,<wbr/> 18309and thus each subsequent raw frame with this test pattern should 18310be exactly the same as the last.<wbr/></p></span> 18311 </li> 18312 <li> 18313 <span class="entry_type_enum_name">CUSTOM1</span> 18314 <span class="entry_type_enum_value">256</span> 18315 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 18316available only on this camera device are at least this numeric 18317value.<wbr/></p> 18318<p>All of the custom test patterns will be static 18319(that is the raw image must not vary from frame to frame).<wbr/></p></span> 18320 </li> 18321 </ul> 18322 18323 </td> <!-- entry_type --> 18324 18325 <td class="entry_description"> 18326 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 18327doing a real exposure from the camera.<wbr/></p> 18328 </td> 18329 18330 <td class="entry_units"> 18331 </td> 18332 18333 <td class="entry_range"> 18334 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 18335 </td> 18336 18337 <td class="entry_tags"> 18338 </td> 18339 18340 </tr> 18341 <tr class="entries_header"> 18342 <th class="th_details" colspan="5">Details</th> 18343 </tr> 18344 <tr class="entry_cont"> 18345 <td class="entry_details" colspan="5"> 18346 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 18347by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 18348work as normal.<wbr/></p> 18349<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 18350occur (and that the test pattern remain unmodified,<wbr/> since the flash 18351would not actually affect it).<wbr/></p> 18352<p>Defaults to OFF.<wbr/></p> 18353 </td> 18354 </tr> 18355 18356 <tr class="entries_header"> 18357 <th class="th_details" colspan="5">HAL Implementation Details</th> 18358 </tr> 18359 <tr class="entry_cont"> 18360 <td class="entry_details" colspan="5"> 18361 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 18362<p>The HAL may choose to substitute test patterns from the sensor 18363with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 18364indistinguishable to the ISP whether the data came from the 18365sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 18366 </td> 18367 </tr> 18368 18369 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18370 <!-- end of entry --> 18371 18372 18373 18374 <!-- end of kind --> 18375 </tbody> 18376 <tr><td colspan="6" class="kind">static</td></tr> 18377 18378 <thead class="entries_header"> 18379 <tr> 18380 <th class="th_name">Property Name</th> 18381 <th class="th_type">Type</th> 18382 <th class="th_description">Description</th> 18383 <th class="th_units">Units</th> 18384 <th class="th_range">Range</th> 18385 <th class="th_tags">Tags</th> 18386 </tr> 18387 </thead> 18388 18389 <tbody> 18390 18391 18392 18393 18394 18395 18396 18397 18398 18399 18400 18401 18402 <tr class="entry" id="static_android.sensor.info.activeArraySize"> 18403 <td class="entry_name 18404 " rowspan="5"> 18405 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 18406 </td> 18407 <td class="entry_type"> 18408 <span class="entry_type_name">int32</span> 18409 <span class="entry_type_container">x</span> 18410 18411 <span class="entry_type_array"> 18412 4 18413 </span> 18414 <span class="entry_type_visibility"> [public as rectangle]</span> 18415 18416 18417 <span class="entry_type_hwlevel">[legacy] </span> 18418 18419 18420 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 18421 18422 18423 </td> <!-- entry_type --> 18424 18425 <td class="entry_description"> 18426 <p>The area of the image sensor which corresponds to active pixels after any geometric 18427distortion correction has been applied.<wbr/></p> 18428 </td> 18429 18430 <td class="entry_units"> 18431 Pixel coordinates on the image sensor 18432 </td> 18433 18434 <td class="entry_range"> 18435 </td> 18436 18437 <td class="entry_tags"> 18438 <ul class="entry_tags"> 18439 <li><a href="#tag_RAW">RAW</a></li> 18440 </ul> 18441 </td> 18442 18443 </tr> 18444 <tr class="entries_header"> 18445 <th class="th_details" colspan="5">Details</th> 18446 </tr> 18447 <tr class="entry_cont"> 18448 <td class="entry_details" colspan="5"> 18449 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 18450the region that actually receives light from the scene) after any geometric correction 18451has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the 18452image output formats aside from the raw formats.<wbr/></p> 18453<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 18454the full pixel array,<wbr/> and the size of the full pixel array is given by 18455<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 18456<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including 18457<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 18458this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p> 18459<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may 18460include black calibration pixels or other inactive regions,<wbr/> and geometric correction 18461resulting in scaling or cropping may have been applied.<wbr/></p> 18462 </td> 18463 </tr> 18464 18465 <tr class="entries_header"> 18466 <th class="th_details" colspan="5">HAL Implementation Details</th> 18467 </tr> 18468 <tr class="entry_cont"> 18469 <td class="entry_details" colspan="5"> 18470 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 18471>= <code>(0,<wbr/>0)</code>.<wbr/> 18472The <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> 18473 </td> 18474 </tr> 18475 18476 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18477 <!-- end of entry --> 18478 18479 18480 <tr class="entry" id="static_android.sensor.info.sensitivityRange"> 18481 <td class="entry_name 18482 " rowspan="3"> 18483 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range 18484 </td> 18485 <td class="entry_type"> 18486 <span class="entry_type_name">int32</span> 18487 <span class="entry_type_container">x</span> 18488 18489 <span class="entry_type_array"> 18490 2 18491 </span> 18492 <span class="entry_type_visibility"> [public as rangeInt]</span> 18493 18494 18495 <span class="entry_type_hwlevel">[full] </span> 18496 18497 18498 <div class="entry_type_notes">Range of supported sensitivities</div> 18499 18500 18501 </td> <!-- entry_type --> 18502 18503 <td class="entry_description"> 18504 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this 18505camera device.<wbr/></p> 18506 </td> 18507 18508 <td class="entry_units"> 18509 </td> 18510 18511 <td class="entry_range"> 18512 <p>Min <= 100,<wbr/> Max >= 800</p> 18513 </td> 18514 18515 <td class="entry_tags"> 18516 <ul class="entry_tags"> 18517 <li><a href="#tag_BC">BC</a></li> 18518 <li><a href="#tag_V1">V1</a></li> 18519 </ul> 18520 </td> 18521 18522 </tr> 18523 <tr class="entries_header"> 18524 <th class="th_details" colspan="5">Details</th> 18525 </tr> 18526 <tr class="entry_cont"> 18527 <td class="entry_details" colspan="5"> 18528 <p>The values are the standard ISO sensitivity values,<wbr/> 18529as defined in ISO 12232:2006.<wbr/></p> 18530 </td> 18531 </tr> 18532 18533 18534 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18535 <!-- end of entry --> 18536 18537 18538 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement"> 18539 <td class="entry_name 18540 " rowspan="1"> 18541 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement 18542 </td> 18543 <td class="entry_type"> 18544 <span class="entry_type_name entry_type_name_enum">byte</span> 18545 18546 <span class="entry_type_visibility"> [public]</span> 18547 18548 18549 <span class="entry_type_hwlevel">[full] </span> 18550 18551 18552 18553 <ul class="entry_type_enum"> 18554 <li> 18555 <span class="entry_type_enum_name">RGGB</span> 18556 </li> 18557 <li> 18558 <span class="entry_type_enum_name">GRBG</span> 18559 </li> 18560 <li> 18561 <span class="entry_type_enum_name">GBRG</span> 18562 </li> 18563 <li> 18564 <span class="entry_type_enum_name">BGGR</span> 18565 </li> 18566 <li> 18567 <span class="entry_type_enum_name">RGB</span> 18568 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit 18569values for each pixel,<wbr/> instead of just 1 16-bit value 18570per pixel.<wbr/></p></span> 18571 </li> 18572 </ul> 18573 18574 </td> <!-- entry_type --> 18575 18576 <td class="entry_description"> 18577 <p>The arrangement of color filters on sensor; 18578represents the colors in the top-left 2x2 section of 18579the sensor,<wbr/> in reading order.<wbr/></p> 18580 </td> 18581 18582 <td class="entry_units"> 18583 </td> 18584 18585 <td class="entry_range"> 18586 </td> 18587 18588 <td class="entry_tags"> 18589 <ul class="entry_tags"> 18590 <li><a href="#tag_RAW">RAW</a></li> 18591 </ul> 18592 </td> 18593 18594 </tr> 18595 18596 18597 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18598 <!-- end of entry --> 18599 18600 18601 <tr class="entry" id="static_android.sensor.info.exposureTimeRange"> 18602 <td class="entry_name 18603 " rowspan="3"> 18604 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range 18605 </td> 18606 <td class="entry_type"> 18607 <span class="entry_type_name">int64</span> 18608 <span class="entry_type_container">x</span> 18609 18610 <span class="entry_type_array"> 18611 2 18612 </span> 18613 <span class="entry_type_visibility"> [public as rangeLong]</span> 18614 18615 18616 <span class="entry_type_hwlevel">[full] </span> 18617 18618 18619 <div class="entry_type_notes">nanoseconds</div> 18620 18621 18622 </td> <!-- entry_type --> 18623 18624 <td class="entry_description"> 18625 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported 18626by this camera device.<wbr/></p> 18627 </td> 18628 18629 <td class="entry_units"> 18630 Nanoseconds 18631 </td> 18632 18633 <td class="entry_range"> 18634 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL 18635capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 18636the maximum exposure time will be greater than 100ms.<wbr/></p> 18637 </td> 18638 18639 <td class="entry_tags"> 18640 <ul class="entry_tags"> 18641 <li><a href="#tag_V1">V1</a></li> 18642 </ul> 18643 </td> 18644 18645 </tr> 18646 18647 <tr class="entries_header"> 18648 <th class="th_details" colspan="5">HAL Implementation Details</th> 18649 </tr> 18650 <tr class="entry_cont"> 18651 <td class="entry_details" colspan="5"> 18652 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 18653The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least 18654100ms.<wbr/></p> 18655 </td> 18656 </tr> 18657 18658 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18659 <!-- end of entry --> 18660 18661 18662 <tr class="entry" id="static_android.sensor.info.maxFrameDuration"> 18663 <td class="entry_name 18664 " rowspan="5"> 18665 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration 18666 </td> 18667 <td class="entry_type"> 18668 <span class="entry_type_name">int64</span> 18669 18670 <span class="entry_type_visibility"> [public]</span> 18671 18672 18673 <span class="entry_type_hwlevel">[full] </span> 18674 18675 18676 18677 18678 </td> <!-- entry_type --> 18679 18680 <td class="entry_description"> 18681 <p>The maximum possible frame duration (minimum frame rate) for 18682<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p> 18683 </td> 18684 18685 <td class="entry_units"> 18686 Nanoseconds 18687 </td> 18688 18689 <td class="entry_range"> 18690 <p>For FULL capability devices 18691(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p> 18692 </td> 18693 18694 <td class="entry_tags"> 18695 <ul class="entry_tags"> 18696 <li><a href="#tag_V1">V1</a></li> 18697 </ul> 18698 </td> 18699 18700 </tr> 18701 <tr class="entries_header"> 18702 <th class="th_details" colspan="5">Details</th> 18703 </tr> 18704 <tr class="entry_cont"> 18705 <td class="entry_details" colspan="5"> 18706 <p>Attempting to use frame durations beyond the maximum will result in the frame 18707duration being clipped to the maximum.<wbr/> See that control for a full definition of frame 18708durations.<wbr/></p> 18709<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> 18710for the minimum frame duration values.<wbr/></p> 18711 </td> 18712 </tr> 18713 18714 <tr class="entries_header"> 18715 <th class="th_details" colspan="5">HAL Implementation Details</th> 18716 </tr> 18717 <tr class="entry_cont"> 18718 <td class="entry_details" colspan="5"> 18719 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 18720The maximum of the range SHOULD be at least 187211 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p> 18722<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or 18723equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max 18724value (since exposure time overrides frame duration).<wbr/></p> 18725<p>Available minimum frame durations for JPEG must be no greater 18726than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED 18727minimum frame durations (for that respective size).<wbr/></p> 18728<p>Since JPEG processing is considered offline and can take longer than 18729a single uncompressed capture,<wbr/> refer to 18730<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> 18731for details about encoding this scenario.<wbr/></p> 18732 </td> 18733 </tr> 18734 18735 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18736 <!-- end of entry --> 18737 18738 18739 <tr class="entry" id="static_android.sensor.info.physicalSize"> 18740 <td class="entry_name 18741 " rowspan="5"> 18742 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size 18743 </td> 18744 <td class="entry_type"> 18745 <span class="entry_type_name">float</span> 18746 <span class="entry_type_container">x</span> 18747 18748 <span class="entry_type_array"> 18749 2 18750 </span> 18751 <span class="entry_type_visibility"> [public as sizeF]</span> 18752 18753 18754 <span class="entry_type_hwlevel">[legacy] </span> 18755 18756 18757 <div class="entry_type_notes">width x height</div> 18758 18759 18760 </td> <!-- entry_type --> 18761 18762 <td class="entry_description"> 18763 <p>The physical dimensions of the full pixel 18764array.<wbr/></p> 18765 </td> 18766 18767 <td class="entry_units"> 18768 Millimeters 18769 </td> 18770 18771 <td class="entry_range"> 18772 </td> 18773 18774 <td class="entry_tags"> 18775 <ul class="entry_tags"> 18776 <li><a href="#tag_V1">V1</a></li> 18777 <li><a href="#tag_BC">BC</a></li> 18778 </ul> 18779 </td> 18780 18781 </tr> 18782 <tr class="entries_header"> 18783 <th class="th_details" colspan="5">Details</th> 18784 </tr> 18785 <tr class="entry_cont"> 18786 <td class="entry_details" colspan="5"> 18787 <p>This is the physical size of the sensor pixel 18788array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 18789 </td> 18790 </tr> 18791 18792 <tr class="entries_header"> 18793 <th class="th_details" colspan="5">HAL Implementation Details</th> 18794 </tr> 18795 <tr class="entry_cont"> 18796 <td class="entry_details" colspan="5"> 18797 <p>Needed for FOV calculation for old API</p> 18798 </td> 18799 </tr> 18800 18801 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18802 <!-- end of entry --> 18803 18804 18805 <tr class="entry" id="static_android.sensor.info.pixelArraySize"> 18806 <td class="entry_name 18807 " rowspan="3"> 18808 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size 18809 </td> 18810 <td class="entry_type"> 18811 <span class="entry_type_name">int32</span> 18812 <span class="entry_type_container">x</span> 18813 18814 <span class="entry_type_array"> 18815 2 18816 </span> 18817 <span class="entry_type_visibility"> [public as size]</span> 18818 18819 18820 <span class="entry_type_hwlevel">[legacy] </span> 18821 18822 18823 18824 18825 </td> <!-- entry_type --> 18826 18827 <td class="entry_description"> 18828 <p>Dimensions of the full pixel array,<wbr/> possibly 18829including black calibration pixels.<wbr/></p> 18830 </td> 18831 18832 <td class="entry_units"> 18833 Pixels 18834 </td> 18835 18836 <td class="entry_range"> 18837 </td> 18838 18839 <td class="entry_tags"> 18840 <ul class="entry_tags"> 18841 <li><a href="#tag_RAW">RAW</a></li> 18842 <li><a href="#tag_BC">BC</a></li> 18843 </ul> 18844 </td> 18845 18846 </tr> 18847 <tr class="entries_header"> 18848 <th class="th_details" colspan="5">Details</th> 18849 </tr> 18850 <tr class="entry_cont"> 18851 <td class="entry_details" colspan="5"> 18852 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers 18853<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 18854the raw buffers produced by this sensor.<wbr/></p> 18855<p>If a camera device supports raw sensor formats,<wbr/> either this or 18856<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 18857output formats listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> (this depends on 18858whether or not the image sensor returns buffers containing pixels that are not 18859part of the active array region for blacklevel calibration or other purposes).<wbr/></p> 18860<p>Some parts of the full pixel array may not receive light from the scene,<wbr/> 18861or 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 18862defines the rectangle of active pixels that will be included in processed image 18863formats.<wbr/></p> 18864 </td> 18865 </tr> 18866 18867 18868 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18869 <!-- end of entry --> 18870 18871 18872 <tr class="entry" id="static_android.sensor.info.whiteLevel"> 18873 <td class="entry_name 18874 " rowspan="5"> 18875 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level 18876 </td> 18877 <td class="entry_type"> 18878 <span class="entry_type_name">int32</span> 18879 18880 <span class="entry_type_visibility"> [public]</span> 18881 18882 18883 18884 18885 18886 18887 </td> <!-- entry_type --> 18888 18889 <td class="entry_description"> 18890 <p>Maximum raw value output by sensor.<wbr/></p> 18891 </td> 18892 18893 <td class="entry_units"> 18894 </td> 18895 18896 <td class="entry_range"> 18897 <p>> 255 (8-bit output)</p> 18898 </td> 18899 18900 <td class="entry_tags"> 18901 <ul class="entry_tags"> 18902 <li><a href="#tag_RAW">RAW</a></li> 18903 </ul> 18904 </td> 18905 18906 </tr> 18907 <tr class="entries_header"> 18908 <th class="th_details" colspan="5">Details</th> 18909 </tr> 18910 <tr class="entry_cont"> 18911 <td class="entry_details" colspan="5"> 18912 <p>This specifies the fully-saturated encoding level for the raw 18913sample values from the sensor.<wbr/> This is typically caused by the 18914sensor becoming highly non-linear or clipping.<wbr/> The minimum for 18915each channel is specified by the offset in the 18916<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p> 18917<p>The white level is typically determined either by sensor bit depth 18918(8-14 bits is expected),<wbr/> or by the point where the sensor response 18919becomes too non-linear to be useful.<wbr/> The default value for this is 18920maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p> 18921 </td> 18922 </tr> 18923 18924 <tr class="entries_header"> 18925 <th class="th_details" colspan="5">HAL Implementation Details</th> 18926 </tr> 18927 <tr class="entry_cont"> 18928 <td class="entry_details" colspan="5"> 18929 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 18930so the value for linear sensors should not be significantly lower 18931than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 18932 </td> 18933 </tr> 18934 18935 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18936 <!-- end of entry --> 18937 18938 18939 <tr class="entry" id="static_android.sensor.info.timestampSource"> 18940 <td class="entry_name 18941 " rowspan="3"> 18942 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source 18943 </td> 18944 <td class="entry_type"> 18945 <span class="entry_type_name entry_type_name_enum">byte</span> 18946 18947 <span class="entry_type_visibility"> [public]</span> 18948 18949 18950 <span class="entry_type_hwlevel">[legacy] </span> 18951 18952 18953 18954 <ul class="entry_type_enum"> 18955 <li> 18956 <span class="entry_type_enum_name">UNKNOWN</span> 18957 <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/> 18958but can not be compared to timestamps from other subsystems 18959(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different 18960camera devices in the same system.<wbr/> Timestamps between streams and results for 18961a single camera instance are comparable,<wbr/> and the timestamps for all buffers 18962and the result metadata generated by a single capture are identical.<wbr/></p></span> 18963 </li> 18964 <li> 18965 <span class="entry_type_enum_name">REALTIME</span> 18966 <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 18967<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/> 18968and they can be compared to other timestamps using that base.<wbr/></p></span> 18969 </li> 18970 </ul> 18971 18972 </td> <!-- entry_type --> 18973 18974 <td class="entry_description"> 18975 <p>The time base source for sensor capture start timestamps.<wbr/></p> 18976 </td> 18977 18978 <td class="entry_units"> 18979 </td> 18980 18981 <td class="entry_range"> 18982 </td> 18983 18984 <td class="entry_tags"> 18985 <ul class="entry_tags"> 18986 <li><a href="#tag_V1">V1</a></li> 18987 </ul> 18988 </td> 18989 18990 </tr> 18991 <tr class="entries_header"> 18992 <th class="th_details" colspan="5">Details</th> 18993 </tr> 18994 <tr class="entry_cont"> 18995 <td class="entry_details" colspan="5"> 18996 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but 18997may not based on a time source that can be compared to other system time sources.<wbr/></p> 18998<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they 18999can be compared against other system time sources/<wbr/>timestamps.<wbr/></p> 19000 </td> 19001 </tr> 19002 19003 19004 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19005 <!-- end of entry --> 19006 19007 19008 <tr class="entry" id="static_android.sensor.info.lensShadingApplied"> 19009 <td class="entry_name 19010 " rowspan="3"> 19011 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied 19012 </td> 19013 <td class="entry_type"> 19014 <span class="entry_type_name entry_type_name_enum">byte</span> 19015 19016 <span class="entry_type_visibility"> [public as boolean]</span> 19017 19018 19019 19020 19021 19022 <ul class="entry_type_enum"> 19023 <li> 19024 <span class="entry_type_enum_name">FALSE</span> 19025 </li> 19026 <li> 19027 <span class="entry_type_enum_name">TRUE</span> 19028 </li> 19029 </ul> 19030 19031 </td> <!-- entry_type --> 19032 19033 <td class="entry_description"> 19034 <p>Whether the RAW images output from this camera device are subject to 19035lens shading correction.<wbr/></p> 19036 </td> 19037 19038 <td class="entry_units"> 19039 </td> 19040 19041 <td class="entry_range"> 19042 </td> 19043 19044 <td class="entry_tags"> 19045 </td> 19046 19047 </tr> 19048 <tr class="entries_header"> 19049 <th class="th_details" colspan="5">Details</th> 19050 </tr> 19051 <tr class="entry_cont"> 19052 <td class="entry_details" colspan="5"> 19053 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will 19054have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will 19055not be adjusted for lens shading correction.<wbr/> 19056See <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> 19057<p>This key will be <code>null</code> for all devices do not report this information.<wbr/> 19058Devices with RAW capability will always report this information in this key.<wbr/></p> 19059 </td> 19060 </tr> 19061 19062 19063 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19064 <!-- end of entry --> 19065 19066 19067 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize"> 19068 <td class="entry_name 19069 " rowspan="5"> 19070 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 19071 </td> 19072 <td class="entry_type"> 19073 <span class="entry_type_name">int32</span> 19074 <span class="entry_type_container">x</span> 19075 19076 <span class="entry_type_array"> 19077 4 19078 </span> 19079 <span class="entry_type_visibility"> [public as rectangle]</span> 19080 19081 19082 <span class="entry_type_hwlevel">[legacy] </span> 19083 19084 19085 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 19086 19087 19088 </td> <!-- entry_type --> 19089 19090 <td class="entry_description"> 19091 <p>The area of the image sensor which corresponds to active pixels prior to the 19092application of any geometric distortion correction.<wbr/></p> 19093 </td> 19094 19095 <td class="entry_units"> 19096 Pixel coordinates on the image sensor 19097 </td> 19098 19099 <td class="entry_range"> 19100 </td> 19101 19102 <td class="entry_tags"> 19103 <ul class="entry_tags"> 19104 <li><a href="#tag_RAW">RAW</a></li> 19105 </ul> 19106 </td> 19107 19108 </tr> 19109 <tr class="entries_header"> 19110 <th class="th_details" colspan="5">Details</th> 19111 </tr> 19112 <tr class="entry_cont"> 19113 <td class="entry_details" colspan="5"> 19114 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 19115the region that actually receives light from the scene) before any geometric correction 19116has been applied,<wbr/> and should be treated as the active region rectangle for any of the 19117raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading 19118correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as 19119the origin,<wbr/> (0,<wbr/>0).<wbr/></p> 19120<p>The size of this region determines the maximum field of view and the maximum number of 19121pixels that an image from this sensor can contain,<wbr/> prior to the application of 19122geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a 19123post-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> 19124field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image 19125can be calculated by applying the geometric distortion correction fields to this 19126rectangle,<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> 19127<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the 19128dimensions 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/> 19129(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in 19130<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p> 19131<ol> 19132<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in 19133<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 19134to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li> 19135<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/> 19136(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw 19137buffers is defined relative to the top,<wbr/> left of the 19138<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> 19139<li>If the resulting corrected pixel coordinate is within the region given in 19140<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 19141processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/> 19142when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li> 19143</ol> 19144<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> 19145is (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/> 19146<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 19147correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in 19148pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer 19149with 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) 19150relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in 19151<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19152<p>The currently supported fields that correct for geometric distortion are:</p> 19153<ol> 19154<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li> 19155</ol> 19156<p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same 19157as the post-distortion-corrected rectangle 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>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 19160the full pixel array,<wbr/> and the size of the full pixel array is given by 19161<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19162<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the 19163full array may include black calibration pixels or other inactive regions.<wbr/></p> 19164 </td> 19165 </tr> 19166 19167 <tr class="entries_header"> 19168 <th class="th_details" colspan="5">HAL Implementation Details</th> 19169 </tr> 19170 <tr class="entry_cont"> 19171 <td class="entry_details" colspan="5"> 19172 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 19173>= <code>(0,<wbr/>0)</code>.<wbr/> 19174The <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> 19175<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is 19176the same as the post-correction active array region given in 19177<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19178 </td> 19179 </tr> 19180 19181 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19182 <!-- end of entry --> 19183 19184 19185 19186 19187 19188 <tr class="entry" id="static_android.sensor.referenceIlluminant1"> 19189 <td class="entry_name 19190 " rowspan="5"> 19191 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1 19192 </td> 19193 <td class="entry_type"> 19194 <span class="entry_type_name entry_type_name_enum">byte</span> 19195 19196 <span class="entry_type_visibility"> [public]</span> 19197 19198 19199 19200 19201 19202 <ul class="entry_type_enum"> 19203 <li> 19204 <span class="entry_type_enum_name">DAYLIGHT</span> 19205 <span class="entry_type_enum_value">1</span> 19206 </li> 19207 <li> 19208 <span class="entry_type_enum_name">FLUORESCENT</span> 19209 <span class="entry_type_enum_value">2</span> 19210 </li> 19211 <li> 19212 <span class="entry_type_enum_name">TUNGSTEN</span> 19213 <span class="entry_type_enum_value">3</span> 19214 <span class="entry_type_enum_notes"><p>Incandescent light</p></span> 19215 </li> 19216 <li> 19217 <span class="entry_type_enum_name">FLASH</span> 19218 <span class="entry_type_enum_value">4</span> 19219 </li> 19220 <li> 19221 <span class="entry_type_enum_name">FINE_WEATHER</span> 19222 <span class="entry_type_enum_value">9</span> 19223 </li> 19224 <li> 19225 <span class="entry_type_enum_name">CLOUDY_WEATHER</span> 19226 <span class="entry_type_enum_value">10</span> 19227 </li> 19228 <li> 19229 <span class="entry_type_enum_name">SHADE</span> 19230 <span class="entry_type_enum_value">11</span> 19231 </li> 19232 <li> 19233 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span> 19234 <span class="entry_type_enum_value">12</span> 19235 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span> 19236 </li> 19237 <li> 19238 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span> 19239 <span class="entry_type_enum_value">13</span> 19240 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span> 19241 </li> 19242 <li> 19243 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span> 19244 <span class="entry_type_enum_value">14</span> 19245 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span> 19246 </li> 19247 <li> 19248 <span class="entry_type_enum_name">WHITE_FLUORESCENT</span> 19249 <span class="entry_type_enum_value">15</span> 19250 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span> 19251 </li> 19252 <li> 19253 <span class="entry_type_enum_name">STANDARD_A</span> 19254 <span class="entry_type_enum_value">17</span> 19255 </li> 19256 <li> 19257 <span class="entry_type_enum_name">STANDARD_B</span> 19258 <span class="entry_type_enum_value">18</span> 19259 </li> 19260 <li> 19261 <span class="entry_type_enum_name">STANDARD_C</span> 19262 <span class="entry_type_enum_value">19</span> 19263 </li> 19264 <li> 19265 <span class="entry_type_enum_name">D55</span> 19266 <span class="entry_type_enum_value">20</span> 19267 </li> 19268 <li> 19269 <span class="entry_type_enum_name">D65</span> 19270 <span class="entry_type_enum_value">21</span> 19271 </li> 19272 <li> 19273 <span class="entry_type_enum_name">D75</span> 19274 <span class="entry_type_enum_value">22</span> 19275 </li> 19276 <li> 19277 <span class="entry_type_enum_name">D50</span> 19278 <span class="entry_type_enum_value">23</span> 19279 </li> 19280 <li> 19281 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span> 19282 <span class="entry_type_enum_value">24</span> 19283 </li> 19284 </ul> 19285 19286 </td> <!-- entry_type --> 19287 19288 <td class="entry_description"> 19289 <p>The standard reference illuminant used as the scene light source when 19290calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 19291<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 19292<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p> 19293 </td> 19294 19295 <td class="entry_units"> 19296 </td> 19297 19298 <td class="entry_range"> 19299 </td> 19300 19301 <td class="entry_tags"> 19302 <ul class="entry_tags"> 19303 <li><a href="#tag_RAW">RAW</a></li> 19304 </ul> 19305 </td> 19306 19307 </tr> 19308 <tr class="entries_header"> 19309 <th class="th_details" colspan="5">Details</th> 19310 </tr> 19311 <tr class="entry_cont"> 19312 <td class="entry_details" colspan="5"> 19313 <p>The values in this key correspond to the values defined for the 19314EXIF LightSource tag.<wbr/> These illuminants are standard light sources 19315that are often used calibrating camera devices.<wbr/></p> 19316<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 19317<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 19318<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p> 19319<p>Some devices may choose to provide a second set of calibration 19320information for improved quality,<wbr/> including 19321<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p> 19322 </td> 19323 </tr> 19324 19325 <tr class="entries_header"> 19326 <th class="th_details" colspan="5">HAL Implementation Details</th> 19327 </tr> 19328 <tr class="entry_cont"> 19329 <td class="entry_details" colspan="5"> 19330 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 19331and corresponding matrices must be present to support the RAW capability 19332and DNG output.<wbr/></p> 19333<p>When producing raw images with a color profile that has only been 19334calibrated against a single light source,<wbr/> it is valid to omit 19335<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the 19336<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/> 19337and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 19338<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be 19339chosen so that it is representative of typical scene lighting.<wbr/> In 19340general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p> 19341<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and 19342<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be 19343chosen to represent the typical range of scene lighting conditions.<wbr/> 19344In general,<wbr/> low color temperature illuminant such as Standard-A will 19345be chosen for the first reference illuminant and a higher color 19346temperature illuminant such as D65 will be chosen for the second 19347reference illuminant.<wbr/></p> 19348 </td> 19349 </tr> 19350 19351 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19352 <!-- end of entry --> 19353 19354 19355 <tr class="entry" id="static_android.sensor.referenceIlluminant2"> 19356 <td class="entry_name 19357 " rowspan="3"> 19358 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2 19359 </td> 19360 <td class="entry_type"> 19361 <span class="entry_type_name">byte</span> 19362 19363 <span class="entry_type_visibility"> [public]</span> 19364 19365 19366 19367 19368 19369 19370 </td> <!-- entry_type --> 19371 19372 <td class="entry_description"> 19373 <p>The standard reference illuminant used as the scene light source when 19374calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 19375<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 19376<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 19377 </td> 19378 19379 <td class="entry_units"> 19380 </td> 19381 19382 <td class="entry_range"> 19383 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p> 19384 </td> 19385 19386 <td class="entry_tags"> 19387 <ul class="entry_tags"> 19388 <li><a href="#tag_RAW">RAW</a></li> 19389 </ul> 19390 </td> 19391 19392 </tr> 19393 <tr class="entries_header"> 19394 <th class="th_details" colspan="5">Details</th> 19395 </tr> 19396 <tr class="entry_cont"> 19397 <td class="entry_details" colspan="5"> 19398 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p> 19399<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 19400<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 19401<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p> 19402 </td> 19403 </tr> 19404 19405 19406 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19407 <!-- end of entry --> 19408 19409 19410 <tr class="entry" id="static_android.sensor.calibrationTransform1"> 19411 <td class="entry_name 19412 " rowspan="3"> 19413 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1 19414 </td> 19415 <td class="entry_type"> 19416 <span class="entry_type_name">rational</span> 19417 <span class="entry_type_container">x</span> 19418 19419 <span class="entry_type_array"> 19420 3 x 3 19421 </span> 19422 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19423 19424 19425 19426 19427 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19428 19429 19430 </td> <!-- entry_type --> 19431 19432 <td class="entry_description"> 19433 <p>A per-device calibration transform matrix that maps from the 19434reference sensor colorspace to the actual device sensor colorspace.<wbr/></p> 19435 </td> 19436 19437 <td class="entry_units"> 19438 </td> 19439 19440 <td class="entry_range"> 19441 </td> 19442 19443 <td class="entry_tags"> 19444 <ul class="entry_tags"> 19445 <li><a href="#tag_RAW">RAW</a></li> 19446 </ul> 19447 </td> 19448 19449 </tr> 19450 <tr class="entries_header"> 19451 <th class="th_details" colspan="5">Details</th> 19452 </tr> 19453 <tr class="entry_cont"> 19454 <td class="entry_details" colspan="5"> 19455 <p>This matrix is used to correct for per-device variations in the 19456sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 19457<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19458contains a per-device calibration transform that maps colors 19459from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 19460colorspace) into this camera device's native sensor color 19461space under the first reference illuminant 19462(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 19463 </td> 19464 </tr> 19465 19466 19467 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19468 <!-- end of entry --> 19469 19470 19471 <tr class="entry" id="static_android.sensor.calibrationTransform2"> 19472 <td class="entry_name 19473 " rowspan="3"> 19474 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2 19475 </td> 19476 <td class="entry_type"> 19477 <span class="entry_type_name">rational</span> 19478 <span class="entry_type_container">x</span> 19479 19480 <span class="entry_type_array"> 19481 3 x 3 19482 </span> 19483 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19484 19485 19486 19487 19488 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19489 19490 19491 </td> <!-- entry_type --> 19492 19493 <td class="entry_description"> 19494 <p>A per-device calibration transform matrix that maps from the 19495reference sensor colorspace to the actual device sensor colorspace 19496(this is the colorspace of the raw buffer data).<wbr/></p> 19497 </td> 19498 19499 <td class="entry_units"> 19500 </td> 19501 19502 <td class="entry_range"> 19503 </td> 19504 19505 <td class="entry_tags"> 19506 <ul class="entry_tags"> 19507 <li><a href="#tag_RAW">RAW</a></li> 19508 </ul> 19509 </td> 19510 19511 </tr> 19512 <tr class="entries_header"> 19513 <th class="th_details" colspan="5">Details</th> 19514 </tr> 19515 <tr class="entry_cont"> 19516 <td class="entry_details" colspan="5"> 19517 <p>This matrix is used to correct for per-device variations in the 19518sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 19519<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19520contains a per-device calibration transform that maps colors 19521from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 19522colorspace) into this camera device's native sensor color 19523space under the second reference illuminant 19524(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 19525<p>This matrix will only be present if the second reference 19526illuminant is present.<wbr/></p> 19527 </td> 19528 </tr> 19529 19530 19531 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19532 <!-- end of entry --> 19533 19534 19535 <tr class="entry" id="static_android.sensor.colorTransform1"> 19536 <td class="entry_name 19537 " rowspan="3"> 19538 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1 19539 </td> 19540 <td class="entry_type"> 19541 <span class="entry_type_name">rational</span> 19542 <span class="entry_type_container">x</span> 19543 19544 <span class="entry_type_array"> 19545 3 x 3 19546 </span> 19547 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19548 19549 19550 19551 19552 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19553 19554 19555 </td> <!-- entry_type --> 19556 19557 <td class="entry_description"> 19558 <p>A matrix that transforms color values from CIE XYZ color space to 19559reference sensor color space.<wbr/></p> 19560 </td> 19561 19562 <td class="entry_units"> 19563 </td> 19564 19565 <td class="entry_range"> 19566 </td> 19567 19568 <td class="entry_tags"> 19569 <ul class="entry_tags"> 19570 <li><a href="#tag_RAW">RAW</a></li> 19571 </ul> 19572 </td> 19573 19574 </tr> 19575 <tr class="entries_header"> 19576 <th class="th_details" colspan="5">Details</th> 19577 </tr> 19578 <tr class="entry_cont"> 19579 <td class="entry_details" colspan="5"> 19580 <p>This matrix is used to convert from the standard CIE XYZ color 19581space to the reference sensor colorspace,<wbr/> and is used when processing 19582raw buffer data.<wbr/></p> 19583<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19584contains a color transform matrix that maps colors from the CIE 19585XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 19586"golden module" colorspace) under the first reference illuminant 19587(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 19588<p>The white points chosen in both the reference sensor color space 19589and the CIE XYZ colorspace when calculating this transform will 19590match the standard white point for the first reference illuminant 19591(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 19592 </td> 19593 </tr> 19594 19595 19596 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19597 <!-- end of entry --> 19598 19599 19600 <tr class="entry" id="static_android.sensor.colorTransform2"> 19601 <td class="entry_name 19602 " rowspan="3"> 19603 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2 19604 </td> 19605 <td class="entry_type"> 19606 <span class="entry_type_name">rational</span> 19607 <span class="entry_type_container">x</span> 19608 19609 <span class="entry_type_array"> 19610 3 x 3 19611 </span> 19612 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19613 19614 19615 19616 19617 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19618 19619 19620 </td> <!-- entry_type --> 19621 19622 <td class="entry_description"> 19623 <p>A matrix that transforms color values from CIE XYZ color space to 19624reference sensor color space.<wbr/></p> 19625 </td> 19626 19627 <td class="entry_units"> 19628 </td> 19629 19630 <td class="entry_range"> 19631 </td> 19632 19633 <td class="entry_tags"> 19634 <ul class="entry_tags"> 19635 <li><a href="#tag_RAW">RAW</a></li> 19636 </ul> 19637 </td> 19638 19639 </tr> 19640 <tr class="entries_header"> 19641 <th class="th_details" colspan="5">Details</th> 19642 </tr> 19643 <tr class="entry_cont"> 19644 <td class="entry_details" colspan="5"> 19645 <p>This matrix is used to convert from the standard CIE XYZ color 19646space to the reference sensor colorspace,<wbr/> and is used when processing 19647raw buffer data.<wbr/></p> 19648<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19649contains a color transform matrix that maps colors from the CIE 19650XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 19651"golden module" colorspace) under the second reference illuminant 19652(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 19653<p>The white points chosen in both the reference sensor color space 19654and the CIE XYZ colorspace when calculating this transform will 19655match the standard white point for the second reference illuminant 19656(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 19657<p>This matrix will only be present if the second reference 19658illuminant is present.<wbr/></p> 19659 </td> 19660 </tr> 19661 19662 19663 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19664 <!-- end of entry --> 19665 19666 19667 <tr class="entry" id="static_android.sensor.forwardMatrix1"> 19668 <td class="entry_name 19669 " rowspan="3"> 19670 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1 19671 </td> 19672 <td class="entry_type"> 19673 <span class="entry_type_name">rational</span> 19674 <span class="entry_type_container">x</span> 19675 19676 <span class="entry_type_array"> 19677 3 x 3 19678 </span> 19679 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19680 19681 19682 19683 19684 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19685 19686 19687 </td> <!-- entry_type --> 19688 19689 <td class="entry_description"> 19690 <p>A matrix that transforms white balanced camera colors from the reference 19691sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 19692 </td> 19693 19694 <td class="entry_units"> 19695 </td> 19696 19697 <td class="entry_range"> 19698 </td> 19699 19700 <td class="entry_tags"> 19701 <ul class="entry_tags"> 19702 <li><a href="#tag_RAW">RAW</a></li> 19703 </ul> 19704 </td> 19705 19706 </tr> 19707 <tr class="entries_header"> 19708 <th class="th_details" colspan="5">Details</th> 19709 </tr> 19710 <tr class="entry_cont"> 19711 <td class="entry_details" colspan="5"> 19712 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 19713is used when processing raw buffer data.<wbr/></p> 19714<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 19715a color transform matrix that maps white balanced colors from the 19716reference sensor color space to the CIE XYZ color space with a D50 white 19717point.<wbr/></p> 19718<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 19719this matrix is chosen so that the standard white point for this reference 19720illuminant in the reference sensor colorspace is mapped to D50 in the 19721CIE XYZ colorspace.<wbr/></p> 19722 </td> 19723 </tr> 19724 19725 19726 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19727 <!-- end of entry --> 19728 19729 19730 <tr class="entry" id="static_android.sensor.forwardMatrix2"> 19731 <td class="entry_name 19732 " rowspan="3"> 19733 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2 19734 </td> 19735 <td class="entry_type"> 19736 <span class="entry_type_name">rational</span> 19737 <span class="entry_type_container">x</span> 19738 19739 <span class="entry_type_array"> 19740 3 x 3 19741 </span> 19742 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19743 19744 19745 19746 19747 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19748 19749 19750 </td> <!-- entry_type --> 19751 19752 <td class="entry_description"> 19753 <p>A matrix that transforms white balanced camera colors from the reference 19754sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 19755 </td> 19756 19757 <td class="entry_units"> 19758 </td> 19759 19760 <td class="entry_range"> 19761 </td> 19762 19763 <td class="entry_tags"> 19764 <ul class="entry_tags"> 19765 <li><a href="#tag_RAW">RAW</a></li> 19766 </ul> 19767 </td> 19768 19769 </tr> 19770 <tr class="entries_header"> 19771 <th class="th_details" colspan="5">Details</th> 19772 </tr> 19773 <tr class="entry_cont"> 19774 <td class="entry_details" colspan="5"> 19775 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 19776is used when processing raw buffer data.<wbr/></p> 19777<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 19778a color transform matrix that maps white balanced colors from the 19779reference sensor color space to the CIE XYZ color space with a D50 white 19780point.<wbr/></p> 19781<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>) 19782this matrix is chosen so that the standard white point for this reference 19783illuminant in the reference sensor colorspace is mapped to D50 in the 19784CIE XYZ colorspace.<wbr/></p> 19785<p>This matrix will only be present if the second reference 19786illuminant is present.<wbr/></p> 19787 </td> 19788 </tr> 19789 19790 19791 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19792 <!-- end of entry --> 19793 19794 19795 <tr class="entry" id="static_android.sensor.baseGainFactor"> 19796 <td class="entry_name 19797 " rowspan="1"> 19798 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor 19799 </td> 19800 <td class="entry_type"> 19801 <span class="entry_type_name">rational</span> 19802 19803 <span class="entry_type_visibility"> [system]</span> 19804 19805 19806 19807 19808 19809 19810 </td> <!-- entry_type --> 19811 19812 <td class="entry_description"> 19813 <p>Gain factor from electrons to raw units when 19814ISO=100</p> 19815 </td> 19816 19817 <td class="entry_units"> 19818 </td> 19819 19820 <td class="entry_range"> 19821 </td> 19822 19823 <td class="entry_tags"> 19824 <ul class="entry_tags"> 19825 <li><a href="#tag_FUTURE">FUTURE</a></li> 19826 </ul> 19827 </td> 19828 19829 </tr> 19830 19831 19832 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19833 <!-- end of entry --> 19834 19835 19836 <tr class="entry" id="static_android.sensor.blackLevelPattern"> 19837 <td class="entry_name 19838 " rowspan="5"> 19839 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern 19840 </td> 19841 <td class="entry_type"> 19842 <span class="entry_type_name">int32</span> 19843 <span class="entry_type_container">x</span> 19844 19845 <span class="entry_type_array"> 19846 4 19847 </span> 19848 <span class="entry_type_visibility"> [public as blackLevelPattern]</span> 19849 19850 19851 19852 19853 <div class="entry_type_notes">2x2 raw count block</div> 19854 19855 19856 </td> <!-- entry_type --> 19857 19858 <td class="entry_description"> 19859 <p>A fixed black level offset for each of the color filter arrangement 19860(CFA) mosaic channels.<wbr/></p> 19861 </td> 19862 19863 <td class="entry_units"> 19864 </td> 19865 19866 <td class="entry_range"> 19867 <p>>= 0 for each.<wbr/></p> 19868 </td> 19869 19870 <td class="entry_tags"> 19871 <ul class="entry_tags"> 19872 <li><a href="#tag_RAW">RAW</a></li> 19873 </ul> 19874 </td> 19875 19876 </tr> 19877 <tr class="entries_header"> 19878 <th class="th_details" colspan="5">Details</th> 19879 </tr> 19880 <tr class="entry_cont"> 19881 <td class="entry_details" colspan="5"> 19882 <p>This key specifies the zero light value for each of the CFA mosaic 19883channels in the camera sensor.<wbr/> The maximal value output by the 19884sensor 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> 19885<p>The values are given in the same order as channels listed for the CFA 19886layout 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 19887nth value given corresponds to the black level offset for the nth 19888color channel listed in the CFA.<wbr/></p> 19889 </td> 19890 </tr> 19891 19892 <tr class="entries_header"> 19893 <th class="th_details" colspan="5">HAL Implementation Details</th> 19894 </tr> 19895 <tr class="entry_cont"> 19896 <td class="entry_details" colspan="5"> 19897 <p>The values are given in row-column scan order,<wbr/> with the first value 19898corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 19899 </td> 19900 </tr> 19901 19902 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19903 <!-- end of entry --> 19904 19905 19906 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity"> 19907 <td class="entry_name 19908 " rowspan="3"> 19909 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity 19910 </td> 19911 <td class="entry_type"> 19912 <span class="entry_type_name">int32</span> 19913 19914 <span class="entry_type_visibility"> [public]</span> 19915 19916 19917 <span class="entry_type_hwlevel">[full] </span> 19918 19919 19920 19921 19922 </td> <!-- entry_type --> 19923 19924 <td class="entry_description"> 19925 <p>Maximum sensitivity that is implemented 19926purely through analog gain.<wbr/></p> 19927 </td> 19928 19929 <td class="entry_units"> 19930 </td> 19931 19932 <td class="entry_range"> 19933 </td> 19934 19935 <td class="entry_tags"> 19936 <ul class="entry_tags"> 19937 <li><a href="#tag_V1">V1</a></li> 19938 <li><a href="#tag_FULL">FULL</a></li> 19939 </ul> 19940 </td> 19941 19942 </tr> 19943 <tr class="entries_header"> 19944 <th class="th_details" colspan="5">Details</th> 19945 </tr> 19946 <tr class="entry_cont"> 19947 <td class="entry_details" colspan="5"> 19948 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or 19949equal to this,<wbr/> all applied gain must be analog.<wbr/> For 19950values above this,<wbr/> the gain applied can be a mix of analog and 19951digital.<wbr/></p> 19952 </td> 19953 </tr> 19954 19955 19956 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19957 <!-- end of entry --> 19958 19959 19960 <tr class="entry" id="static_android.sensor.orientation"> 19961 <td class="entry_name 19962 " rowspan="3"> 19963 android.<wbr/>sensor.<wbr/>orientation 19964 </td> 19965 <td class="entry_type"> 19966 <span class="entry_type_name">int32</span> 19967 19968 <span class="entry_type_visibility"> [public]</span> 19969 19970 19971 <span class="entry_type_hwlevel">[legacy] </span> 19972 19973 19974 19975 19976 </td> <!-- entry_type --> 19977 19978 <td class="entry_description"> 19979 <p>Clockwise angle through which the output image needs to be rotated to be 19980upright on the device screen in its native orientation.<wbr/></p> 19981 </td> 19982 19983 <td class="entry_units"> 19984 Degrees of clockwise rotation; always a multiple of 19985 90 19986 </td> 19987 19988 <td class="entry_range"> 19989 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 19990 </td> 19991 19992 <td class="entry_tags"> 19993 <ul class="entry_tags"> 19994 <li><a href="#tag_BC">BC</a></li> 19995 </ul> 19996 </td> 19997 19998 </tr> 19999 <tr class="entries_header"> 20000 <th class="th_details" colspan="5">Details</th> 20001 </tr> 20002 <tr class="entry_cont"> 20003 <td class="entry_details" colspan="5"> 20004 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in 20005the sensor's coordinate system.<wbr/></p> 20006 </td> 20007 </tr> 20008 20009 20010 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20011 <!-- end of entry --> 20012 20013 20014 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions"> 20015 <td class="entry_name 20016 " rowspan="3"> 20017 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions 20018 </td> 20019 <td class="entry_type"> 20020 <span class="entry_type_name">int32</span> 20021 <span class="entry_type_container">x</span> 20022 20023 <span class="entry_type_array"> 20024 3 20025 </span> 20026 <span class="entry_type_visibility"> [system]</span> 20027 20028 20029 20030 20031 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div> 20032 20033 20034 </td> <!-- entry_type --> 20035 20036 <td class="entry_description"> 20037 <p>The number of input samples for each dimension of 20038<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p> 20039 </td> 20040 20041 <td class="entry_units"> 20042 </td> 20043 20044 <td class="entry_range"> 20045 <p>Hue >= 1,<wbr/> 20046Saturation >= 2,<wbr/> 20047Value >= 1</p> 20048 </td> 20049 20050 <td class="entry_tags"> 20051 <ul class="entry_tags"> 20052 <li><a href="#tag_RAW">RAW</a></li> 20053 </ul> 20054 </td> 20055 20056 </tr> 20057 <tr class="entries_header"> 20058 <th class="th_details" colspan="5">Details</th> 20059 </tr> 20060 <tr class="entry_cont"> 20061 <td class="entry_details" colspan="5"> 20062 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value 20063dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the 20064dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th 20065element.<wbr/></p> 20066 </td> 20067 </tr> 20068 20069 20070 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20071 <!-- end of entry --> 20072 20073 20074 <tr class="entry" id="static_android.sensor.availableTestPatternModes"> 20075 <td class="entry_name 20076 " rowspan="5"> 20077 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes 20078 </td> 20079 <td class="entry_type"> 20080 <span class="entry_type_name">int32</span> 20081 <span class="entry_type_container">x</span> 20082 20083 <span class="entry_type_array"> 20084 n 20085 </span> 20086 <span class="entry_type_visibility"> [public]</span> 20087 20088 20089 20090 20091 <div class="entry_type_notes">list of enums</div> 20092 20093 20094 </td> <!-- entry_type --> 20095 20096 <td class="entry_description"> 20097 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> 20098supported by this camera device.<wbr/></p> 20099 </td> 20100 20101 <td class="entry_units"> 20102 </td> 20103 20104 <td class="entry_range"> 20105 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p> 20106 </td> 20107 20108 <td class="entry_tags"> 20109 </td> 20110 20111 </tr> 20112 <tr class="entries_header"> 20113 <th class="th_details" colspan="5">Details</th> 20114 </tr> 20115 <tr class="entry_cont"> 20116 <td class="entry_details" colspan="5"> 20117 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p> 20118 </td> 20119 </tr> 20120 20121 <tr class="entries_header"> 20122 <th class="th_details" colspan="5">HAL Implementation Details</th> 20123 </tr> 20124 <tr class="entry_cont"> 20125 <td class="entry_details" colspan="5"> 20126 <p>All custom modes must be >= CUSTOM1.<wbr/></p> 20127 </td> 20128 </tr> 20129 20130 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20131 <!-- end of entry --> 20132 20133 20134 20135 <!-- end of kind --> 20136 </tbody> 20137 <tr><td colspan="6" class="kind">dynamic</td></tr> 20138 20139 <thead class="entries_header"> 20140 <tr> 20141 <th class="th_name">Property Name</th> 20142 <th class="th_type">Type</th> 20143 <th class="th_description">Description</th> 20144 <th class="th_units">Units</th> 20145 <th class="th_range">Range</th> 20146 <th class="th_tags">Tags</th> 20147 </tr> 20148 </thead> 20149 20150 <tbody> 20151 20152 20153 20154 20155 20156 20157 20158 20159 20160 20161 <tr class="entry" id="dynamic_android.sensor.exposureTime"> 20162 <td class="entry_name 20163 " rowspan="3"> 20164 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 20165 </td> 20166 <td class="entry_type"> 20167 <span class="entry_type_name">int64</span> 20168 20169 <span class="entry_type_visibility"> [public]</span> 20170 20171 20172 <span class="entry_type_hwlevel">[full] </span> 20173 20174 20175 20176 20177 </td> <!-- entry_type --> 20178 20179 <td class="entry_description"> 20180 <p>Duration each pixel is exposed to 20181light.<wbr/></p> 20182 </td> 20183 20184 <td class="entry_units"> 20185 Nanoseconds 20186 </td> 20187 20188 <td class="entry_range"> 20189 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 20190 </td> 20191 20192 <td class="entry_tags"> 20193 <ul class="entry_tags"> 20194 <li><a href="#tag_V1">V1</a></li> 20195 </ul> 20196 </td> 20197 20198 </tr> 20199 <tr class="entries_header"> 20200 <th class="th_details" colspan="5">Details</th> 20201 </tr> 20202 <tr class="entry_cont"> 20203 <td class="entry_details" colspan="5"> 20204 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 20205duration exposed to the nearest possible value (rather than expose longer).<wbr/> 20206The final exposure time used will be available in the output capture result.<wbr/></p> 20207<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 20208OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 20209 </td> 20210 </tr> 20211 20212 20213 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20214 <!-- end of entry --> 20215 20216 20217 <tr class="entry" id="dynamic_android.sensor.frameDuration"> 20218 <td class="entry_name 20219 " rowspan="5"> 20220 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 20221 </td> 20222 <td class="entry_type"> 20223 <span class="entry_type_name">int64</span> 20224 20225 <span class="entry_type_visibility"> [public]</span> 20226 20227 20228 <span class="entry_type_hwlevel">[full] </span> 20229 20230 20231 20232 20233 </td> <!-- entry_type --> 20234 20235 <td class="entry_description"> 20236 <p>Duration from start of frame exposure to 20237start of next frame exposure.<wbr/></p> 20238 </td> 20239 20240 <td class="entry_units"> 20241 Nanoseconds 20242 </td> 20243 20244 <td class="entry_range"> 20245 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 20246<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration 20247is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 20248 </td> 20249 20250 <td class="entry_tags"> 20251 <ul class="entry_tags"> 20252 <li><a href="#tag_V1">V1</a></li> 20253 </ul> 20254 </td> 20255 20256 </tr> 20257 <tr class="entries_header"> 20258 <th class="th_details" colspan="5">Details</th> 20259 </tr> 20260 <tr class="entry_cont"> 20261 <td class="entry_details" colspan="5"> 20262 <p>The maximum frame rate that can be supported by a camera subsystem is 20263a function of many factors:</p> 20264<ul> 20265<li>Requested resolutions of output image streams</li> 20266<li>Availability of binning /<wbr/> skipping modes on the imager</li> 20267<li>The bandwidth of the imager interface</li> 20268<li>The bandwidth of the various ISP processing blocks</li> 20269</ul> 20270<p>Since these factors can vary greatly between different ISPs and 20271sensors,<wbr/> the camera abstraction tries to represent the bandwidth 20272restrictions with as simple a model as possible.<wbr/></p> 20273<p>The model presented has the following characteristics:</p> 20274<ul> 20275<li>The image sensor is always configured to output the smallest 20276resolution possible given the application's requested output stream 20277sizes.<wbr/> The smallest resolution is defined as being at least as large 20278as the largest requested output stream size; the camera pipeline must 20279never digitally upsample sensor data when the crop region covers the 20280whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 20281resolutions are configured,<wbr/> the sensor can provide a higher frame 20282rate.<wbr/></li> 20283<li>Since any request may use any or all the currently configured 20284output streams,<wbr/> the sensor and ISP must be configured to support 20285scaling a single capture to all the streams at the same time.<wbr/> This 20286means the camera pipeline must be ready to produce the largest 20287requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 20288frame rate of a given configured stream set is governed only by the 20289largest requested stream resolution.<wbr/></li> 20290<li>Using more than one output stream in a request does not affect the 20291frame duration.<wbr/></li> 20292<li>Certain format-streams may need to do additional background processing 20293before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 20294can run concurrently to the rest of the camera pipeline,<wbr/> but 20295cannot process more than 1 capture at a time.<wbr/></li> 20296</ul> 20297<p>The necessary information for the application,<wbr/> given the model above,<wbr/> 20298is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using 20299<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 20300These are used to determine the maximum frame rate /<wbr/> minimum frame 20301duration that is possible for a given stream configuration.<wbr/></p> 20302<p>Specifically,<wbr/> the application can use the following rules to 20303determine the minimum frame duration it can request from the camera 20304device:</p> 20305<ol> 20306<li>Let the set of currently configured input/<wbr/>output streams 20307be called <code>S</code>.<wbr/></li> 20308<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking 20309it 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> 20310(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be 20311called <code>F</code>.<wbr/></li> 20312<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 20313for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 20314used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 20315</ol> 20316<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> 20317using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> 20318determines the steady state frame rate that the application will get 20319if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of 20320request be called <code>Rsimple</code>.<wbr/></p> 20321<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 20322by a single capture of a new request <code>Rstall</code> (which has at least 20323one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 20324same minimum frame duration this will not cause a frame rate loss 20325if all buffers from the previous <code>Rstall</code> have already been 20326delivered.<wbr/></p> 20327<p>For more details about stalling,<wbr/> see 20328<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p> 20329<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 20330OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 20331 </td> 20332 </tr> 20333 20334 <tr class="entries_header"> 20335 <th class="th_details" colspan="5">HAL Implementation Details</th> 20336 </tr> 20337 <tr class="entry_cont"> 20338 <td class="entry_details" colspan="5"> 20339 <p>For more details about stalling,<wbr/> see 20340<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 20341 </td> 20342 </tr> 20343 20344 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20345 <!-- end of entry --> 20346 20347 20348 <tr class="entry" id="dynamic_android.sensor.sensitivity"> 20349 <td class="entry_name 20350 " rowspan="5"> 20351 android.<wbr/>sensor.<wbr/>sensitivity 20352 </td> 20353 <td class="entry_type"> 20354 <span class="entry_type_name">int32</span> 20355 20356 <span class="entry_type_visibility"> [public]</span> 20357 20358 20359 <span class="entry_type_hwlevel">[full] </span> 20360 20361 20362 20363 20364 </td> <!-- entry_type --> 20365 20366 <td class="entry_description"> 20367 <p>The amount of gain applied to sensor data 20368before processing.<wbr/></p> 20369 </td> 20370 20371 <td class="entry_units"> 20372 ISO arithmetic units 20373 </td> 20374 20375 <td class="entry_range"> 20376 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 20377 </td> 20378 20379 <td class="entry_tags"> 20380 <ul class="entry_tags"> 20381 <li><a href="#tag_V1">V1</a></li> 20382 </ul> 20383 </td> 20384 20385 </tr> 20386 <tr class="entries_header"> 20387 <th class="th_details" colspan="5">Details</th> 20388 </tr> 20389 <tr class="entry_cont"> 20390 <td class="entry_details" colspan="5"> 20391 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 20392as defined in ISO 12232:2006.<wbr/></p> 20393<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 20394if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 20395is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 20396<p>If the camera device cannot apply the exact sensitivity 20397requested,<wbr/> it will reduce the gain to the nearest supported 20398value.<wbr/> The final sensitivity used will be available in the 20399output capture result.<wbr/></p> 20400 </td> 20401 </tr> 20402 20403 <tr class="entries_header"> 20404 <th class="th_details" colspan="5">HAL Implementation Details</th> 20405 </tr> 20406 <tr class="entry_cont"> 20407 <td class="entry_details" colspan="5"> 20408 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 20409 </td> 20410 </tr> 20411 20412 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20413 <!-- end of entry --> 20414 20415 20416 <tr class="entry" id="dynamic_android.sensor.timestamp"> 20417 <td class="entry_name 20418 " rowspan="5"> 20419 android.<wbr/>sensor.<wbr/>timestamp 20420 </td> 20421 <td class="entry_type"> 20422 <span class="entry_type_name">int64</span> 20423 20424 <span class="entry_type_visibility"> [public]</span> 20425 20426 20427 <span class="entry_type_hwlevel">[legacy] </span> 20428 20429 20430 20431 20432 </td> <!-- entry_type --> 20433 20434 <td class="entry_description"> 20435 <p>Time at start of exposure of first 20436row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p> 20437 </td> 20438 20439 <td class="entry_units"> 20440 Nanoseconds 20441 </td> 20442 20443 <td class="entry_range"> 20444 <p>> 0</p> 20445 </td> 20446 20447 <td class="entry_tags"> 20448 <ul class="entry_tags"> 20449 <li><a href="#tag_BC">BC</a></li> 20450 </ul> 20451 </td> 20452 20453 </tr> 20454 <tr class="entries_header"> 20455 <th class="th_details" colspan="5">Details</th> 20456 </tr> 20457 <tr class="entry_cont"> 20458 <td class="entry_details" colspan="5"> 20459 <p>The timestamps are also included in all image 20460buffers produced for the same capture,<wbr/> and will be identical 20461on all the outputs.<wbr/></p> 20462<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/> 20463the timestamps measure time since an unspecified starting point,<wbr/> 20464and are monotonically increasing.<wbr/> They can be compared with the 20465timestamps for other captures from the same camera device,<wbr/> but are 20466not guaranteed to be comparable to any other time source.<wbr/></p> 20467<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the 20468timestamps 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 20469be compared to other timestamps from other subsystems that 20470are using that base.<wbr/></p> 20471<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of 20472the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the 20473timestamp</a> in the TotalCaptureResult that was used to create the 20474reprocess capture request.<wbr/></p> 20475 </td> 20476 </tr> 20477 20478 <tr class="entries_header"> 20479 <th class="th_details" colspan="5">HAL Implementation Details</th> 20480 </tr> 20481 <tr class="entry_cont"> 20482 <td class="entry_details" colspan="5"> 20483 <p>All timestamps must be in reference to the kernel's 20484CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for 20485time spent asleep.<wbr/> This allows for synchronization with 20486sensors that continue to operate while the system is 20487otherwise asleep.<wbr/></p> 20488<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> 20489The timestamp must be synchronized with the timestamps from other 20490sensor subsystems that are using the same timebase.<wbr/></p> 20491<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up 20492with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the 20493capture request.<wbr/></p> 20494 </td> 20495 </tr> 20496 20497 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20498 <!-- end of entry --> 20499 20500 20501 <tr class="entry" id="dynamic_android.sensor.temperature"> 20502 <td class="entry_name 20503 " rowspan="1"> 20504 android.<wbr/>sensor.<wbr/>temperature 20505 </td> 20506 <td class="entry_type"> 20507 <span class="entry_type_name">float</span> 20508 20509 <span class="entry_type_visibility"> [system]</span> 20510 20511 20512 20513 20514 20515 20516 </td> <!-- entry_type --> 20517 20518 <td class="entry_description"> 20519 <p>The temperature of the sensor,<wbr/> sampled at the time 20520exposure began for this frame.<wbr/></p> 20521<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or 20522somewhere close to it.<wbr/></p> 20523 </td> 20524 20525 <td class="entry_units"> 20526 Celsius 20527 </td> 20528 20529 <td class="entry_range"> 20530 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p> 20531 </td> 20532 20533 <td class="entry_tags"> 20534 <ul class="entry_tags"> 20535 <li><a href="#tag_FUTURE">FUTURE</a></li> 20536 </ul> 20537 </td> 20538 20539 </tr> 20540 20541 20542 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20543 <!-- end of entry --> 20544 20545 20546 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint"> 20547 <td class="entry_name 20548 " rowspan="3"> 20549 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point 20550 </td> 20551 <td class="entry_type"> 20552 <span class="entry_type_name">rational</span> 20553 <span class="entry_type_container">x</span> 20554 20555 <span class="entry_type_array"> 20556 3 20557 </span> 20558 <span class="entry_type_visibility"> [public]</span> 20559 20560 20561 20562 20563 20564 20565 </td> <!-- entry_type --> 20566 20567 <td class="entry_description"> 20568 <p>The estimated camera neutral color in the native sensor colorspace at 20569the time of capture.<wbr/></p> 20570 </td> 20571 20572 <td class="entry_units"> 20573 </td> 20574 20575 <td class="entry_range"> 20576 </td> 20577 20578 <td class="entry_tags"> 20579 <ul class="entry_tags"> 20580 <li><a href="#tag_RAW">RAW</a></li> 20581 </ul> 20582 </td> 20583 20584 </tr> 20585 <tr class="entries_header"> 20586 <th class="th_details" colspan="5">Details</th> 20587 </tr> 20588 <tr class="entry_cont"> 20589 <td class="entry_details" colspan="5"> 20590 <p>This value gives the neutral color point encoded as an RGB value in the 20591native sensor color space.<wbr/> The neutral color point indicates the 20592currently estimated white point of the scene illumination.<wbr/> It can be 20593used to interpolate between the provided color transforms when 20594processing raw sensor data.<wbr/></p> 20595<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p> 20596 </td> 20597 </tr> 20598 20599 20600 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20601 <!-- end of entry --> 20602 20603 20604 <tr class="entry" id="dynamic_android.sensor.noiseProfile"> 20605 <td class="entry_name 20606 " rowspan="5"> 20607 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile 20608 </td> 20609 <td class="entry_type"> 20610 <span class="entry_type_name">double</span> 20611 <span class="entry_type_container">x</span> 20612 20613 <span class="entry_type_array"> 20614 2 x CFA Channels 20615 </span> 20616 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span> 20617 20618 20619 20620 20621 <div class="entry_type_notes">Pairs of noise model coefficients</div> 20622 20623 20624 </td> <!-- entry_type --> 20625 20626 <td class="entry_description"> 20627 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p> 20628 </td> 20629 20630 <td class="entry_units"> 20631 </td> 20632 20633 <td class="entry_range"> 20634 </td> 20635 20636 <td class="entry_tags"> 20637 <ul class="entry_tags"> 20638 <li><a href="#tag_RAW">RAW</a></li> 20639 </ul> 20640 </td> 20641 20642 </tr> 20643 <tr class="entries_header"> 20644 <th class="th_details" colspan="5">Details</th> 20645 </tr> 20646 <tr class="entry_cont"> 20647 <td class="entry_details" colspan="5"> 20648 <p>This key contains two noise model coefficients for each CFA channel 20649corresponding to the sensor amplification (S) and sensor readout 20650noise (O).<wbr/> These are given as pairs of coefficients for each channel 20651in the same order as channels listed for the CFA layout key 20652(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is 20653represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where 20654the first member of the Pair at index n is the S coefficient and the 20655second member is the O coefficient for the nth color channel in the CFA.<wbr/></p> 20656<p>These coefficients are used in a two parameter noise model to describe 20657the amount of noise present in the image for each CFA channel.<wbr/> The 20658noise model used here is:</p> 20659<p>N(x) = sqrt(Sx + O)</p> 20660<p>Where x represents the recorded signal of a CFA channel normalized to 20661the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for 20662that channel.<wbr/></p> 20663<p>A more detailed description of the noise model can be found in the 20664Adobe DNG specification for the NoiseProfile tag.<wbr/></p> 20665 </td> 20666 </tr> 20667 20668 <tr class="entries_header"> 20669 <th class="th_details" colspan="5">HAL Implementation Details</th> 20670 </tr> 20671 <tr class="entry_cont"> 20672 <td class="entry_details" colspan="5"> 20673 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as 20674an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients 20675for the red channel,<wbr/> S1 and O1 are the coefficients for the first green 20676channel,<wbr/> etc.<wbr/></p> 20677 </td> 20678 </tr> 20679 20680 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20681 <!-- end of entry --> 20682 20683 20684 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap"> 20685 <td class="entry_name 20686 " rowspan="3"> 20687 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map 20688 </td> 20689 <td class="entry_type"> 20690 <span class="entry_type_name">float</span> 20691 <span class="entry_type_container">x</span> 20692 20693 <span class="entry_type_array"> 20694 hue_samples x saturation_samples x value_samples x 3 20695 </span> 20696 <span class="entry_type_visibility"> [system]</span> 20697 20698 20699 20700 20701 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div> 20702 20703 20704 </td> <!-- entry_type --> 20705 20706 <td class="entry_description"> 20707 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale 20708for each pixel.<wbr/></p> 20709 </td> 20710 20711 <td class="entry_units"> 20712 20713 The hue shift is given in degrees; saturation and value scale factors are 20714 unitless and are between 0 and 1 inclusive 20715 20716 </td> 20717 20718 <td class="entry_range"> 20719 </td> 20720 20721 <td class="entry_tags"> 20722 <ul class="entry_tags"> 20723 <li><a href="#tag_RAW">RAW</a></li> 20724 </ul> 20725 </td> 20726 20727 </tr> 20728 <tr class="entries_header"> 20729 <th class="th_details" colspan="5">Details</th> 20730 </tr> 20731 <tr class="entry_cont"> 20732 <td class="entry_details" colspan="5"> 20733 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in 20734<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p> 20735<p>Each entry of this map contains three floats corresponding to the 20736hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the 20737hue shift has the lowest index.<wbr/> The map entries are stored in the key 20738in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the 20739hue divisions in the middle loop,<wbr/> and the saturation divisions in the 20740inner loop.<wbr/> All zero input saturation entries are required to have a 20741value scale factor of 1.<wbr/>0.<wbr/></p> 20742 </td> 20743 </tr> 20744 20745 20746 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20747 <!-- end of entry --> 20748 20749 20750 <tr class="entry" id="dynamic_android.sensor.profileToneCurve"> 20751 <td class="entry_name 20752 " rowspan="3"> 20753 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve 20754 </td> 20755 <td class="entry_type"> 20756 <span class="entry_type_name">float</span> 20757 <span class="entry_type_container">x</span> 20758 20759 <span class="entry_type_array"> 20760 samples x 2 20761 </span> 20762 <span class="entry_type_visibility"> [system]</span> 20763 20764 20765 20766 20767 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div> 20768 20769 20770 </td> <!-- entry_type --> 20771 20772 <td class="entry_description"> 20773 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p> 20774 </td> 20775 20776 <td class="entry_units"> 20777 </td> 20778 20779 <td class="entry_range"> 20780 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of 20781<code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last 20782sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p> 20783 </td> 20784 20785 <td class="entry_tags"> 20786 <ul class="entry_tags"> 20787 <li><a href="#tag_RAW">RAW</a></li> 20788 </ul> 20789 </td> 20790 20791 </tr> 20792 <tr class="entries_header"> 20793 <th class="th_details" colspan="5">Details</th> 20794 </tr> 20795 <tr class="entry_cont"> 20796 <td class="entry_details" colspan="5"> 20797 <p>This key contains a default tone curve that can be applied while 20798processing the image as a starting point for user adjustments.<wbr/> 20799The curve is specified as a list of value pairs in linear gamma.<wbr/> 20800The curve is interpolated using a cubic spline.<wbr/></p> 20801 </td> 20802 </tr> 20803 20804 20805 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20806 <!-- end of entry --> 20807 20808 20809 <tr class="entry" id="dynamic_android.sensor.greenSplit"> 20810 <td class="entry_name 20811 " rowspan="5"> 20812 android.<wbr/>sensor.<wbr/>green<wbr/>Split 20813 </td> 20814 <td class="entry_type"> 20815 <span class="entry_type_name">float</span> 20816 20817 <span class="entry_type_visibility"> [public]</span> 20818 20819 20820 20821 20822 20823 20824 </td> <!-- entry_type --> 20825 20826 <td class="entry_description"> 20827 <p>The worst-case divergence between Bayer green channels.<wbr/></p> 20828 </td> 20829 20830 <td class="entry_units"> 20831 </td> 20832 20833 <td class="entry_range"> 20834 <p>>= 0</p> 20835 </td> 20836 20837 <td class="entry_tags"> 20838 <ul class="entry_tags"> 20839 <li><a href="#tag_RAW">RAW</a></li> 20840 </ul> 20841 </td> 20842 20843 </tr> 20844 <tr class="entries_header"> 20845 <th class="th_details" colspan="5">Details</th> 20846 </tr> 20847 <tr class="entry_cont"> 20848 <td class="entry_details" colspan="5"> 20849 <p>This value is an estimate of the worst case split between the 20850Bayer green channels in the red and blue rows in the sensor color 20851filter array.<wbr/></p> 20852<p>The green split is calculated as follows:</p> 20853<ol> 20854<li>A 5x5 pixel (or larger) window W within the active sensor array is 20855chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer 20856mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window 20857chosen is implementation defined,<wbr/> and should be chosen to provide a 20858green split estimate that is both representative of the entire image 20859for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li> 20860<li>The arithmetic mean of the green channels from the red 20861rows (mean_<wbr/>Gr) within W is computed.<wbr/></li> 20862<li>The arithmetic mean of the green channels from the blue 20863rows (mean_<wbr/>Gb) within W is computed.<wbr/></li> 20864<li>The maximum ratio R of the two means is computed as follows: 20865<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li> 20866</ol> 20867<p>The ratio R is the green split divergence reported for this property,<wbr/> 20868which represents how much the green channels differ in the mosaic 20869pattern.<wbr/> This value is typically used to determine the treatment of 20870the green mosaic channels when demosaicing.<wbr/></p> 20871<p>The green split value can be roughly interpreted as follows:</p> 20872<ul> 20873<li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li> 20874<li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software 20875correction to avoid demosaic errors (3-20% divergence).<wbr/></li> 20876<li>R > 1.<wbr/>20 will require strong software correction to produce 20877a usuable image (>20% divergence).<wbr/></li> 20878</ul> 20879 </td> 20880 </tr> 20881 20882 <tr class="entries_header"> 20883 <th class="th_details" colspan="5">HAL Implementation Details</th> 20884 </tr> 20885 <tr class="entry_cont"> 20886 <td class="entry_details" colspan="5"> 20887 <p>The green split given may be a static value based on prior 20888characterization of the camera sensor using the green split 20889calculation method given here over a large,<wbr/> representative,<wbr/> sample 20890set of images.<wbr/> Other methods of calculation that produce equivalent 20891results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p> 20892 </td> 20893 </tr> 20894 20895 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20896 <!-- end of entry --> 20897 20898 20899 <tr class="entry" id="dynamic_android.sensor.testPatternData"> 20900 <td class="entry_name 20901 " rowspan="5"> 20902 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 20903 </td> 20904 <td class="entry_type"> 20905 <span class="entry_type_name">int32</span> 20906 <span class="entry_type_container">x</span> 20907 20908 <span class="entry_type_array"> 20909 4 20910 </span> 20911 <span class="entry_type_visibility"> [public]</span> 20912 20913 20914 20915 20916 20917 20918 </td> <!-- entry_type --> 20919 20920 <td class="entry_description"> 20921 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 20922when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 20923 </td> 20924 20925 <td class="entry_units"> 20926 </td> 20927 20928 <td class="entry_range"> 20929 </td> 20930 20931 <td class="entry_tags"> 20932 </td> 20933 20934 </tr> 20935 <tr class="entries_header"> 20936 <th class="th_details" colspan="5">Details</th> 20937 </tr> 20938 <tr class="entry_cont"> 20939 <td class="entry_details" colspan="5"> 20940 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 20941The camera device then uses the most significant X bits 20942that correspond to how many bits are in its Bayer raw sensor 20943output.<wbr/></p> 20944<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 2094510 most significant bits from each color channel.<wbr/></p> 20946 </td> 20947 </tr> 20948 20949 <tr class="entries_header"> 20950 <th class="th_details" colspan="5">HAL Implementation Details</th> 20951 </tr> 20952 <tr class="entry_cont"> 20953 <td class="entry_details" colspan="5"> 20954 20955 </td> 20956 </tr> 20957 20958 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20959 <!-- end of entry --> 20960 20961 20962 <tr class="entry" id="dynamic_android.sensor.testPatternMode"> 20963 <td class="entry_name 20964 " rowspan="5"> 20965 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 20966 </td> 20967 <td class="entry_type"> 20968 <span class="entry_type_name entry_type_name_enum">int32</span> 20969 20970 <span class="entry_type_visibility"> [public]</span> 20971 20972 20973 20974 20975 20976 <ul class="entry_type_enum"> 20977 <li> 20978 <span class="entry_type_enum_name">OFF</span> 20979 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 20980device returns captures from the image sensor.<wbr/></p> 20981<p>This is the default if the key is not set.<wbr/></p></span> 20982 </li> 20983 <li> 20984 <span class="entry_type_enum_name">SOLID_COLOR</span> 20985 <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 20986respective color channel provided in 20987<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 20988<p>For example:</p> 20989<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 20990</code></pre> 20991<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 20992<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 20993</code></pre> 20994<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 20995are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 20996 </li> 20997 <li> 20998 <span class="entry_type_enum_name">COLOR_BARS</span> 20999 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 21000<p>The vertical bars (left-to-right) are as follows:</p> 21001<ul> 21002<li>100% white</li> 21003<li>yellow</li> 21004<li>cyan</li> 21005<li>green</li> 21006<li>magenta</li> 21007<li>red</li> 21008<li>blue</li> 21009<li>black</li> 21010</ul> 21011<p>In general the image would look like the following:</p> 21012<pre><code>W Y C G M R B K 21013W Y C G M R B K 21014W Y C G M R B K 21015W Y C G M R B K 21016W Y C G M R B K 21017.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21018.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21019.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21020 21021(B = Blue,<wbr/> K = Black) 21022</code></pre> 21023<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 21024When this is not possible,<wbr/> the bar size should be rounded 21025down to the nearest integer and the pattern can repeat 21026on the right side.<wbr/></p> 21027<p>Each bar's height must always take up the full sensor 21028pixel array height.<wbr/></p> 21029<p>Each pixel in this test pattern must be set to either 210300% intensity or 100% intensity.<wbr/></p></span> 21031 </li> 21032 <li> 21033 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 21034 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 21035each bar should start at its specified color at the top,<wbr/> 21036and fade to gray at the bottom.<wbr/></p> 21037<p>Furthermore each bar is further subdivided into a left and 21038right half.<wbr/> The left half should have a smooth gradient,<wbr/> 21039and the right half should have a quantized gradient.<wbr/></p> 21040<p>In particular,<wbr/> the right half's should consist of blocks of the 21041same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 21042<p>The least significant bits in the quantized gradient should 21043be copied from the most significant bits of the smooth gradient.<wbr/></p> 21044<p>The height of each bar should always be a multiple of 128.<wbr/> 21045When this is not the case,<wbr/> the pattern should repeat at the bottom 21046of the image.<wbr/></p></span> 21047 </li> 21048 <li> 21049 <span class="entry_type_enum_name">PN9</span> 21050 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 21051generated from a PN9 512-bit sequence (typically implemented 21052in hardware with a linear feedback shift register).<wbr/></p> 21053<p>The generator should be reset at the beginning of each frame,<wbr/> 21054and thus each subsequent raw frame with this test pattern should 21055be exactly the same as the last.<wbr/></p></span> 21056 </li> 21057 <li> 21058 <span class="entry_type_enum_name">CUSTOM1</span> 21059 <span class="entry_type_enum_value">256</span> 21060 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 21061available only on this camera device are at least this numeric 21062value.<wbr/></p> 21063<p>All of the custom test patterns will be static 21064(that is the raw image must not vary from frame to frame).<wbr/></p></span> 21065 </li> 21066 </ul> 21067 21068 </td> <!-- entry_type --> 21069 21070 <td class="entry_description"> 21071 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 21072doing a real exposure from the camera.<wbr/></p> 21073 </td> 21074 21075 <td class="entry_units"> 21076 </td> 21077 21078 <td class="entry_range"> 21079 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 21080 </td> 21081 21082 <td class="entry_tags"> 21083 </td> 21084 21085 </tr> 21086 <tr class="entries_header"> 21087 <th class="th_details" colspan="5">Details</th> 21088 </tr> 21089 <tr class="entry_cont"> 21090 <td class="entry_details" colspan="5"> 21091 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 21092by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 21093work as normal.<wbr/></p> 21094<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 21095occur (and that the test pattern remain unmodified,<wbr/> since the flash 21096would not actually affect it).<wbr/></p> 21097<p>Defaults to OFF.<wbr/></p> 21098 </td> 21099 </tr> 21100 21101 <tr class="entries_header"> 21102 <th class="th_details" colspan="5">HAL Implementation Details</th> 21103 </tr> 21104 <tr class="entry_cont"> 21105 <td class="entry_details" colspan="5"> 21106 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 21107<p>The HAL may choose to substitute test patterns from the sensor 21108with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 21109indistinguishable to the ISP whether the data came from the 21110sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 21111 </td> 21112 </tr> 21113 21114 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21115 <!-- end of entry --> 21116 21117 21118 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew"> 21119 <td class="entry_name 21120 " rowspan="5"> 21121 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew 21122 </td> 21123 <td class="entry_type"> 21124 <span class="entry_type_name">int64</span> 21125 21126 <span class="entry_type_visibility"> [public]</span> 21127 21128 21129 <span class="entry_type_hwlevel">[limited] </span> 21130 21131 21132 21133 21134 </td> <!-- entry_type --> 21135 21136 <td class="entry_description"> 21137 <p>Duration between the start of first row exposure 21138and the start of last row exposure.<wbr/></p> 21139 </td> 21140 21141 <td class="entry_units"> 21142 Nanoseconds 21143 </td> 21144 21145 <td class="entry_range"> 21146 <p>>= 0 and < 21147<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p> 21148 </td> 21149 21150 <td class="entry_tags"> 21151 <ul class="entry_tags"> 21152 <li><a href="#tag_V1">V1</a></li> 21153 </ul> 21154 </td> 21155 21156 </tr> 21157 <tr class="entries_header"> 21158 <th class="th_details" colspan="5">Details</th> 21159 </tr> 21160 <tr class="entry_cont"> 21161 <td class="entry_details" colspan="5"> 21162 <p>This is the exposure time skew between the first and last 21163row exposure start times.<wbr/> The first row and the last row are 21164the first and last rows inside of the 21165<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 21166<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent 21167to the frame readout time.<wbr/></p> 21168 </td> 21169 </tr> 21170 21171 <tr class="entries_header"> 21172 <th class="th_details" colspan="5">HAL Implementation Details</th> 21173 </tr> 21174 <tr class="entry_cont"> 21175 <td class="entry_details" colspan="5"> 21176 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin 21177exposure at the same time.<wbr/></p> 21178 </td> 21179 </tr> 21180 21181 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21182 <!-- end of entry --> 21183 21184 21185 21186 <!-- end of kind --> 21187 </tbody> 21188 21189 <!-- end of section --> 21190 <tr><td colspan="6" id="section_shading" class="section">shading</td></tr> 21191 21192 21193 <tr><td colspan="6" class="kind">controls</td></tr> 21194 21195 <thead class="entries_header"> 21196 <tr> 21197 <th class="th_name">Property Name</th> 21198 <th class="th_type">Type</th> 21199 <th class="th_description">Description</th> 21200 <th class="th_units">Units</th> 21201 <th class="th_range">Range</th> 21202 <th class="th_tags">Tags</th> 21203 </tr> 21204 </thead> 21205 21206 <tbody> 21207 21208 21209 21210 21211 21212 21213 21214 21215 21216 21217 <tr class="entry" id="controls_android.shading.mode"> 21218 <td class="entry_name 21219 " rowspan="3"> 21220 android.<wbr/>shading.<wbr/>mode 21221 </td> 21222 <td class="entry_type"> 21223 <span class="entry_type_name entry_type_name_enum">byte</span> 21224 21225 <span class="entry_type_visibility"> [public]</span> 21226 21227 21228 <span class="entry_type_hwlevel">[full] </span> 21229 21230 21231 21232 <ul class="entry_type_enum"> 21233 <li> 21234 <span class="entry_type_enum_name">OFF</span> 21235 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 21236 </li> 21237 <li> 21238 <span class="entry_type_enum_name">FAST</span> 21239 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 21240frame rate relative to sensor raw output</p></span> 21241 </li> 21242 <li> 21243 <span class="entry_type_enum_name">HIGH_QUALITY</span> 21244 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 21245cost of possibly reduced frame rate.<wbr/></p></span> 21246 </li> 21247 </ul> 21248 21249 </td> <!-- entry_type --> 21250 21251 <td class="entry_description"> 21252 <p>Quality of lens shading correction applied 21253to the image data.<wbr/></p> 21254 </td> 21255 21256 <td class="entry_units"> 21257 </td> 21258 21259 <td class="entry_range"> 21260 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 21261 </td> 21262 21263 <td class="entry_tags"> 21264 </td> 21265 21266 </tr> 21267 <tr class="entries_header"> 21268 <th class="th_details" colspan="5">Details</th> 21269 </tr> 21270 <tr class="entry_cont"> 21271 <td class="entry_details" colspan="5"> 21272 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 21273camera device,<wbr/> and an identity lens shading map data will be provided 21274if <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 21275shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 21276the 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 21277map shown below:</p> 21278<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/> 21279 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/> 21280 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/> 21281 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/> 21282 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/> 21283 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 ] 21284</code></pre> 21285<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 21286device.<wbr/> Applications can request lens shading map data by setting 21287<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 21288shading 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 21289data will be the one applied by the camera device for this capture request.<wbr/></p> 21290<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 21291the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 21292AWB 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> 21293OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 21294to be converged before using the returned shading map data.<wbr/></p> 21295 </td> 21296 </tr> 21297 21298 21299 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21300 <!-- end of entry --> 21301 21302 21303 <tr class="entry" id="controls_android.shading.strength"> 21304 <td class="entry_name 21305 " rowspan="1"> 21306 android.<wbr/>shading.<wbr/>strength 21307 </td> 21308 <td class="entry_type"> 21309 <span class="entry_type_name">byte</span> 21310 21311 <span class="entry_type_visibility"> [system]</span> 21312 21313 21314 21315 21316 21317 21318 </td> <!-- entry_type --> 21319 21320 <td class="entry_description"> 21321 <p>Control the amount of shading correction 21322applied to the images</p> 21323 </td> 21324 21325 <td class="entry_units"> 21326 unitless: 1-10; 10 is full shading 21327 compensation 21328 </td> 21329 21330 <td class="entry_range"> 21331 </td> 21332 21333 <td class="entry_tags"> 21334 <ul class="entry_tags"> 21335 <li><a href="#tag_FUTURE">FUTURE</a></li> 21336 </ul> 21337 </td> 21338 21339 </tr> 21340 21341 21342 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21343 <!-- end of entry --> 21344 21345 21346 21347 <!-- end of kind --> 21348 </tbody> 21349 <tr><td colspan="6" class="kind">dynamic</td></tr> 21350 21351 <thead class="entries_header"> 21352 <tr> 21353 <th class="th_name">Property Name</th> 21354 <th class="th_type">Type</th> 21355 <th class="th_description">Description</th> 21356 <th class="th_units">Units</th> 21357 <th class="th_range">Range</th> 21358 <th class="th_tags">Tags</th> 21359 </tr> 21360 </thead> 21361 21362 <tbody> 21363 21364 21365 21366 21367 21368 21369 21370 21371 21372 21373 <tr class="entry" id="dynamic_android.shading.mode"> 21374 <td class="entry_name 21375 " rowspan="3"> 21376 android.<wbr/>shading.<wbr/>mode 21377 </td> 21378 <td class="entry_type"> 21379 <span class="entry_type_name entry_type_name_enum">byte</span> 21380 21381 <span class="entry_type_visibility"> [public]</span> 21382 21383 21384 <span class="entry_type_hwlevel">[full] </span> 21385 21386 21387 21388 <ul class="entry_type_enum"> 21389 <li> 21390 <span class="entry_type_enum_name">OFF</span> 21391 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 21392 </li> 21393 <li> 21394 <span class="entry_type_enum_name">FAST</span> 21395 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 21396frame rate relative to sensor raw output</p></span> 21397 </li> 21398 <li> 21399 <span class="entry_type_enum_name">HIGH_QUALITY</span> 21400 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 21401cost of possibly reduced frame rate.<wbr/></p></span> 21402 </li> 21403 </ul> 21404 21405 </td> <!-- entry_type --> 21406 21407 <td class="entry_description"> 21408 <p>Quality of lens shading correction applied 21409to the image data.<wbr/></p> 21410 </td> 21411 21412 <td class="entry_units"> 21413 </td> 21414 21415 <td class="entry_range"> 21416 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 21417 </td> 21418 21419 <td class="entry_tags"> 21420 </td> 21421 21422 </tr> 21423 <tr class="entries_header"> 21424 <th class="th_details" colspan="5">Details</th> 21425 </tr> 21426 <tr class="entry_cont"> 21427 <td class="entry_details" colspan="5"> 21428 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 21429camera device,<wbr/> and an identity lens shading map data will be provided 21430if <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 21431shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 21432the 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 21433map shown below:</p> 21434<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/> 21435 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/> 21436 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/> 21437 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/> 21438 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/> 21439 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 ] 21440</code></pre> 21441<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 21442device.<wbr/> Applications can request lens shading map data by setting 21443<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 21444shading 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 21445data will be the one applied by the camera device for this capture request.<wbr/></p> 21446<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 21447the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 21448AWB 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> 21449OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 21450to be converged before using the returned shading map data.<wbr/></p> 21451 </td> 21452 </tr> 21453 21454 21455 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21456 <!-- end of entry --> 21457 21458 21459 21460 <!-- end of kind --> 21461 </tbody> 21462 <tr><td colspan="6" class="kind">static</td></tr> 21463 21464 <thead class="entries_header"> 21465 <tr> 21466 <th class="th_name">Property Name</th> 21467 <th class="th_type">Type</th> 21468 <th class="th_description">Description</th> 21469 <th class="th_units">Units</th> 21470 <th class="th_range">Range</th> 21471 <th class="th_tags">Tags</th> 21472 </tr> 21473 </thead> 21474 21475 <tbody> 21476 21477 21478 21479 21480 21481 21482 21483 21484 21485 21486 <tr class="entry" id="static_android.shading.availableModes"> 21487 <td class="entry_name 21488 " rowspan="5"> 21489 android.<wbr/>shading.<wbr/>available<wbr/>Modes 21490 </td> 21491 <td class="entry_type"> 21492 <span class="entry_type_name">byte</span> 21493 <span class="entry_type_container">x</span> 21494 21495 <span class="entry_type_array"> 21496 n 21497 </span> 21498 <span class="entry_type_visibility"> [public as enumList]</span> 21499 21500 21501 <span class="entry_type_hwlevel">[legacy] </span> 21502 21503 21504 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div> 21505 21506 21507 </td> <!-- entry_type --> 21508 21509 <td class="entry_description"> 21510 <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> 21511 </td> 21512 21513 <td class="entry_units"> 21514 </td> 21515 21516 <td class="entry_range"> 21517 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p> 21518 </td> 21519 21520 <td class="entry_tags"> 21521 </td> 21522 21523 </tr> 21524 <tr class="entries_header"> 21525 <th class="th_details" colspan="5">Details</th> 21526 </tr> 21527 <tr class="entry_cont"> 21528 <td class="entry_details" colspan="5"> 21529 <p>This list contains lens shading modes that can be set for the camera device.<wbr/> 21530Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always 21531list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/> 21532LEGACY devices will always only support FAST mode.<wbr/></p> 21533 </td> 21534 </tr> 21535 21536 <tr class="entries_header"> 21537 <th class="th_details" colspan="5">HAL Implementation Details</th> 21538 </tr> 21539 <tr class="entry_cont"> 21540 <td class="entry_details" colspan="5"> 21541 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is 21542available on the camera device,<wbr/> but the underlying implementation can be the same for 21543both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not 21544slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 21545 </td> 21546 </tr> 21547 21548 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21549 <!-- end of entry --> 21550 21551 21552 21553 <!-- end of kind --> 21554 </tbody> 21555 21556 <!-- end of section --> 21557 <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr> 21558 21559 21560 <tr><td colspan="6" class="kind">controls</td></tr> 21561 21562 <thead class="entries_header"> 21563 <tr> 21564 <th class="th_name">Property Name</th> 21565 <th class="th_type">Type</th> 21566 <th class="th_description">Description</th> 21567 <th class="th_units">Units</th> 21568 <th class="th_range">Range</th> 21569 <th class="th_tags">Tags</th> 21570 </tr> 21571 </thead> 21572 21573 <tbody> 21574 21575 21576 21577 21578 21579 21580 21581 21582 21583 21584 <tr class="entry" id="controls_android.statistics.faceDetectMode"> 21585 <td class="entry_name 21586 " rowspan="5"> 21587 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 21588 </td> 21589 <td class="entry_type"> 21590 <span class="entry_type_name entry_type_name_enum">byte</span> 21591 21592 <span class="entry_type_visibility"> [public]</span> 21593 21594 21595 <span class="entry_type_hwlevel">[legacy] </span> 21596 21597 21598 21599 <ul class="entry_type_enum"> 21600 <li> 21601 <span class="entry_type_enum_name">OFF</span> 21602 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 21603results.<wbr/></p></span> 21604 </li> 21605 <li> 21606 <span class="entry_type_enum_name">SIMPLE</span> 21607 <span class="entry_type_enum_optional">[optional]</span> 21608 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 21609 </li> 21610 <li> 21611 <span class="entry_type_enum_name">FULL</span> 21612 <span class="entry_type_enum_optional">[optional]</span> 21613 <span class="entry_type_enum_notes"><p>Return all face 21614metadata.<wbr/></p> 21615<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 21616 </li> 21617 </ul> 21618 21619 </td> <!-- entry_type --> 21620 21621 <td class="entry_description"> 21622 <p>Operating mode for the face detector 21623unit.<wbr/></p> 21624 </td> 21625 21626 <td class="entry_units"> 21627 </td> 21628 21629 <td class="entry_range"> 21630 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 21631 </td> 21632 21633 <td class="entry_tags"> 21634 <ul class="entry_tags"> 21635 <li><a href="#tag_BC">BC</a></li> 21636 </ul> 21637 </td> 21638 21639 </tr> 21640 <tr class="entries_header"> 21641 <th class="th_details" colspan="5">Details</th> 21642 </tr> 21643 <tr class="entry_cont"> 21644 <td class="entry_details" colspan="5"> 21645 <p>Whether face detection is enabled,<wbr/> and whether it 21646should output just the basic fields or the full set of 21647fields.<wbr/></p> 21648 </td> 21649 </tr> 21650 21651 <tr class="entries_header"> 21652 <th class="th_details" colspan="5">HAL Implementation Details</th> 21653 </tr> 21654 <tr class="entry_cont"> 21655 <td class="entry_details" colspan="5"> 21656 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 21657<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 21658FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 21659<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 21660 </td> 21661 </tr> 21662 21663 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21664 <!-- end of entry --> 21665 21666 21667 <tr class="entry" id="controls_android.statistics.histogramMode"> 21668 <td class="entry_name 21669 " rowspan="1"> 21670 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 21671 </td> 21672 <td class="entry_type"> 21673 <span class="entry_type_name entry_type_name_enum">byte</span> 21674 21675 <span class="entry_type_visibility"> [system as boolean]</span> 21676 21677 21678 21679 21680 21681 <ul class="entry_type_enum"> 21682 <li> 21683 <span class="entry_type_enum_name">OFF</span> 21684 </li> 21685 <li> 21686 <span class="entry_type_enum_name">ON</span> 21687 </li> 21688 </ul> 21689 21690 </td> <!-- entry_type --> 21691 21692 <td class="entry_description"> 21693 <p>Operating mode for histogram 21694generation</p> 21695 </td> 21696 21697 <td class="entry_units"> 21698 </td> 21699 21700 <td class="entry_range"> 21701 </td> 21702 21703 <td class="entry_tags"> 21704 <ul class="entry_tags"> 21705 <li><a href="#tag_FUTURE">FUTURE</a></li> 21706 </ul> 21707 </td> 21708 21709 </tr> 21710 21711 21712 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21713 <!-- end of entry --> 21714 21715 21716 <tr class="entry" id="controls_android.statistics.sharpnessMapMode"> 21717 <td class="entry_name 21718 " rowspan="1"> 21719 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 21720 </td> 21721 <td class="entry_type"> 21722 <span class="entry_type_name entry_type_name_enum">byte</span> 21723 21724 <span class="entry_type_visibility"> [system as boolean]</span> 21725 21726 21727 21728 21729 21730 <ul class="entry_type_enum"> 21731 <li> 21732 <span class="entry_type_enum_name">OFF</span> 21733 </li> 21734 <li> 21735 <span class="entry_type_enum_name">ON</span> 21736 </li> 21737 </ul> 21738 21739 </td> <!-- entry_type --> 21740 21741 <td class="entry_description"> 21742 <p>Operating mode for sharpness map 21743generation</p> 21744 </td> 21745 21746 <td class="entry_units"> 21747 </td> 21748 21749 <td class="entry_range"> 21750 </td> 21751 21752 <td class="entry_tags"> 21753 <ul class="entry_tags"> 21754 <li><a href="#tag_FUTURE">FUTURE</a></li> 21755 </ul> 21756 </td> 21757 21758 </tr> 21759 21760 21761 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21762 <!-- end of entry --> 21763 21764 21765 <tr class="entry" id="controls_android.statistics.hotPixelMapMode"> 21766 <td class="entry_name 21767 " rowspan="3"> 21768 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 21769 </td> 21770 <td class="entry_type"> 21771 <span class="entry_type_name entry_type_name_enum">byte</span> 21772 21773 <span class="entry_type_visibility"> [public as boolean]</span> 21774 21775 21776 21777 21778 21779 <ul class="entry_type_enum"> 21780 <li> 21781 <span class="entry_type_enum_name">OFF</span> 21782 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 21783 </li> 21784 <li> 21785 <span class="entry_type_enum_name">ON</span> 21786 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 21787 </li> 21788 </ul> 21789 21790 </td> <!-- entry_type --> 21791 21792 <td class="entry_description"> 21793 <p>Operating mode for hot pixel map generation.<wbr/></p> 21794 </td> 21795 21796 <td class="entry_units"> 21797 </td> 21798 21799 <td class="entry_range"> 21800 <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> 21801 </td> 21802 21803 <td class="entry_tags"> 21804 <ul class="entry_tags"> 21805 <li><a href="#tag_V1">V1</a></li> 21806 <li><a href="#tag_RAW">RAW</a></li> 21807 </ul> 21808 </td> 21809 21810 </tr> 21811 <tr class="entries_header"> 21812 <th class="th_details" colspan="5">Details</th> 21813 </tr> 21814 <tr class="entry_cont"> 21815 <td class="entry_details" colspan="5"> 21816 <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/> 21817If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 21818 </td> 21819 </tr> 21820 21821 21822 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21823 <!-- end of entry --> 21824 21825 21826 <tr class="entry" id="controls_android.statistics.lensShadingMapMode"> 21827 <td class="entry_name 21828 " rowspan="3"> 21829 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 21830 </td> 21831 <td class="entry_type"> 21832 <span class="entry_type_name entry_type_name_enum">byte</span> 21833 21834 <span class="entry_type_visibility"> [public]</span> 21835 21836 21837 <span class="entry_type_hwlevel">[full] </span> 21838 21839 21840 21841 <ul class="entry_type_enum"> 21842 <li> 21843 <span class="entry_type_enum_name">OFF</span> 21844 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 21845 </li> 21846 <li> 21847 <span class="entry_type_enum_name">ON</span> 21848 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 21849 </li> 21850 </ul> 21851 21852 </td> <!-- entry_type --> 21853 21854 <td class="entry_description"> 21855 <p>Whether the camera device will output the lens 21856shading map in output result metadata.<wbr/></p> 21857 </td> 21858 21859 <td class="entry_units"> 21860 </td> 21861 21862 <td class="entry_range"> 21863 <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> 21864 </td> 21865 21866 <td class="entry_tags"> 21867 <ul class="entry_tags"> 21868 <li><a href="#tag_RAW">RAW</a></li> 21869 </ul> 21870 </td> 21871 21872 </tr> 21873 <tr class="entries_header"> 21874 <th class="th_details" colspan="5">Details</th> 21875 </tr> 21876 <tr class="entry_cont"> 21877 <td class="entry_details" colspan="5"> 21878 <p>When set to ON,<wbr/> 21879<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 21880the output result metadata.<wbr/></p> 21881<p>ON is always supported on devices with the RAW capability.<wbr/></p> 21882 </td> 21883 </tr> 21884 21885 21886 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21887 <!-- end of entry --> 21888 21889 21890 21891 <!-- end of kind --> 21892 </tbody> 21893 <tr><td colspan="6" class="kind">static</td></tr> 21894 21895 <thead class="entries_header"> 21896 <tr> 21897 <th class="th_name">Property Name</th> 21898 <th class="th_type">Type</th> 21899 <th class="th_description">Description</th> 21900 <th class="th_units">Units</th> 21901 <th class="th_range">Range</th> 21902 <th class="th_tags">Tags</th> 21903 </tr> 21904 </thead> 21905 21906 <tbody> 21907 21908 21909 21910 21911 21912 21913 21914 21915 21916 21917 21918 21919 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes"> 21920 <td class="entry_name 21921 " rowspan="3"> 21922 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes 21923 </td> 21924 <td class="entry_type"> 21925 <span class="entry_type_name">byte</span> 21926 <span class="entry_type_container">x</span> 21927 21928 <span class="entry_type_array"> 21929 n 21930 </span> 21931 <span class="entry_type_visibility"> [public as enumList]</span> 21932 21933 21934 <span class="entry_type_hwlevel">[legacy] </span> 21935 21936 21937 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div> 21938 21939 21940 </td> <!-- entry_type --> 21941 21942 <td class="entry_description"> 21943 <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 21944supported by this camera device.<wbr/></p> 21945 </td> 21946 21947 <td class="entry_units"> 21948 </td> 21949 21950 <td class="entry_range"> 21951 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p> 21952 </td> 21953 21954 <td class="entry_tags"> 21955 </td> 21956 21957 </tr> 21958 <tr class="entries_header"> 21959 <th class="th_details" colspan="5">Details</th> 21960 </tr> 21961 <tr class="entry_cont"> 21962 <td class="entry_details" colspan="5"> 21963 <p>OFF is always supported.<wbr/></p> 21964 </td> 21965 </tr> 21966 21967 21968 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21969 <!-- end of entry --> 21970 21971 21972 <tr class="entry" id="static_android.statistics.info.histogramBucketCount"> 21973 <td class="entry_name 21974 " rowspan="1"> 21975 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count 21976 </td> 21977 <td class="entry_type"> 21978 <span class="entry_type_name">int32</span> 21979 21980 <span class="entry_type_visibility"> [system]</span> 21981 21982 21983 21984 21985 21986 21987 </td> <!-- entry_type --> 21988 21989 <td class="entry_description"> 21990 <p>Number of histogram buckets 21991supported</p> 21992 </td> 21993 21994 <td class="entry_units"> 21995 </td> 21996 21997 <td class="entry_range"> 21998 <p>>= 64</p> 21999 </td> 22000 22001 <td class="entry_tags"> 22002 <ul class="entry_tags"> 22003 <li><a href="#tag_FUTURE">FUTURE</a></li> 22004 </ul> 22005 </td> 22006 22007 </tr> 22008 22009 22010 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22011 <!-- end of entry --> 22012 22013 22014 <tr class="entry" id="static_android.statistics.info.maxFaceCount"> 22015 <td class="entry_name 22016 " rowspan="1"> 22017 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count 22018 </td> 22019 <td class="entry_type"> 22020 <span class="entry_type_name">int32</span> 22021 22022 <span class="entry_type_visibility"> [public]</span> 22023 22024 22025 <span class="entry_type_hwlevel">[legacy] </span> 22026 22027 22028 22029 22030 </td> <!-- entry_type --> 22031 22032 <td class="entry_description"> 22033 <p>The maximum number of simultaneously detectable 22034faces.<wbr/></p> 22035 </td> 22036 22037 <td class="entry_units"> 22038 </td> 22039 22040 <td class="entry_range"> 22041 <p>0 for cameras without available face detection; otherwise: 22042<code>>=4</code> for LIMITED or FULL hwlevel devices or 22043<code>>0</code> for LEGACY devices.<wbr/></p> 22044 </td> 22045 22046 <td class="entry_tags"> 22047 <ul class="entry_tags"> 22048 <li><a href="#tag_BC">BC</a></li> 22049 </ul> 22050 </td> 22051 22052 </tr> 22053 22054 22055 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22056 <!-- end of entry --> 22057 22058 22059 <tr class="entry" id="static_android.statistics.info.maxHistogramCount"> 22060 <td class="entry_name 22061 " rowspan="1"> 22062 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count 22063 </td> 22064 <td class="entry_type"> 22065 <span class="entry_type_name">int32</span> 22066 22067 <span class="entry_type_visibility"> [system]</span> 22068 22069 22070 22071 22072 22073 22074 </td> <!-- entry_type --> 22075 22076 <td class="entry_description"> 22077 <p>Maximum value possible for a histogram 22078bucket</p> 22079 </td> 22080 22081 <td class="entry_units"> 22082 </td> 22083 22084 <td class="entry_range"> 22085 </td> 22086 22087 <td class="entry_tags"> 22088 <ul class="entry_tags"> 22089 <li><a href="#tag_FUTURE">FUTURE</a></li> 22090 </ul> 22091 </td> 22092 22093 </tr> 22094 22095 22096 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22097 <!-- end of entry --> 22098 22099 22100 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue"> 22101 <td class="entry_name 22102 " rowspan="1"> 22103 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value 22104 </td> 22105 <td class="entry_type"> 22106 <span class="entry_type_name">int32</span> 22107 22108 <span class="entry_type_visibility"> [system]</span> 22109 22110 22111 22112 22113 22114 22115 </td> <!-- entry_type --> 22116 22117 <td class="entry_description"> 22118 <p>Maximum value possible for a sharpness map 22119region.<wbr/></p> 22120 </td> 22121 22122 <td class="entry_units"> 22123 </td> 22124 22125 <td class="entry_range"> 22126 </td> 22127 22128 <td class="entry_tags"> 22129 <ul class="entry_tags"> 22130 <li><a href="#tag_FUTURE">FUTURE</a></li> 22131 </ul> 22132 </td> 22133 22134 </tr> 22135 22136 22137 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22138 <!-- end of entry --> 22139 22140 22141 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize"> 22142 <td class="entry_name 22143 " rowspan="1"> 22144 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size 22145 </td> 22146 <td class="entry_type"> 22147 <span class="entry_type_name">int32</span> 22148 <span class="entry_type_container">x</span> 22149 22150 <span class="entry_type_array"> 22151 2 22152 </span> 22153 <span class="entry_type_visibility"> [system as size]</span> 22154 22155 22156 22157 22158 <div class="entry_type_notes">width x height</div> 22159 22160 22161 </td> <!-- entry_type --> 22162 22163 <td class="entry_description"> 22164 <p>Dimensions of the sharpness 22165map</p> 22166 </td> 22167 22168 <td class="entry_units"> 22169 </td> 22170 22171 <td class="entry_range"> 22172 <p>Must be at least 32 x 32</p> 22173 </td> 22174 22175 <td class="entry_tags"> 22176 <ul class="entry_tags"> 22177 <li><a href="#tag_FUTURE">FUTURE</a></li> 22178 </ul> 22179 </td> 22180 22181 </tr> 22182 22183 22184 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22185 <!-- end of entry --> 22186 22187 22188 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes"> 22189 <td class="entry_name 22190 " rowspan="3"> 22191 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes 22192 </td> 22193 <td class="entry_type"> 22194 <span class="entry_type_name">byte</span> 22195 <span class="entry_type_container">x</span> 22196 22197 <span class="entry_type_array"> 22198 n 22199 </span> 22200 <span class="entry_type_visibility"> [public as boolean]</span> 22201 22202 22203 22204 22205 <div class="entry_type_notes">list of enums</div> 22206 22207 22208 </td> <!-- entry_type --> 22209 22210 <td class="entry_description"> 22211 <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 22212supported by this camera device.<wbr/></p> 22213 </td> 22214 22215 <td class="entry_units"> 22216 </td> 22217 22218 <td class="entry_range"> 22219 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p> 22220 </td> 22221 22222 <td class="entry_tags"> 22223 <ul class="entry_tags"> 22224 <li><a href="#tag_V1">V1</a></li> 22225 <li><a href="#tag_RAW">RAW</a></li> 22226 </ul> 22227 </td> 22228 22229 </tr> 22230 <tr class="entries_header"> 22231 <th class="th_details" colspan="5">Details</th> 22232 </tr> 22233 <tr class="entry_cont"> 22234 <td class="entry_details" colspan="5"> 22235 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only 22236<code>false</code>.<wbr/></p> 22237<p>ON is always supported on devices with the RAW capability.<wbr/></p> 22238 </td> 22239 </tr> 22240 22241 22242 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22243 <!-- end of entry --> 22244 22245 22246 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes"> 22247 <td class="entry_name 22248 " rowspan="3"> 22249 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes 22250 </td> 22251 <td class="entry_type"> 22252 <span class="entry_type_name">byte</span> 22253 <span class="entry_type_container">x</span> 22254 22255 <span class="entry_type_array"> 22256 n 22257 </span> 22258 <span class="entry_type_visibility"> [public as enumList]</span> 22259 22260 22261 22262 22263 <div class="entry_type_notes">list of enums</div> 22264 22265 22266 </td> <!-- entry_type --> 22267 22268 <td class="entry_description"> 22269 <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 22270are supported by this camera device.<wbr/></p> 22271 </td> 22272 22273 <td class="entry_units"> 22274 </td> 22275 22276 <td class="entry_range"> 22277 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p> 22278 </td> 22279 22280 <td class="entry_tags"> 22281 </td> 22282 22283 </tr> 22284 <tr class="entries_header"> 22285 <th class="th_details" colspan="5">Details</th> 22286 </tr> 22287 <tr class="entry_cont"> 22288 <td class="entry_details" colspan="5"> 22289 <p>If no lens shading map output is available for this camera device,<wbr/> this key will 22290contain only OFF.<wbr/></p> 22291<p>ON is always supported on devices with the RAW capability.<wbr/> 22292LEGACY mode devices will always only support OFF.<wbr/></p> 22293 </td> 22294 </tr> 22295 22296 22297 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22298 <!-- end of entry --> 22299 22300 22301 22302 22303 22304 22305 <!-- end of kind --> 22306 </tbody> 22307 <tr><td colspan="6" class="kind">dynamic</td></tr> 22308 22309 <thead class="entries_header"> 22310 <tr> 22311 <th class="th_name">Property Name</th> 22312 <th class="th_type">Type</th> 22313 <th class="th_description">Description</th> 22314 <th class="th_units">Units</th> 22315 <th class="th_range">Range</th> 22316 <th class="th_tags">Tags</th> 22317 </tr> 22318 </thead> 22319 22320 <tbody> 22321 22322 22323 22324 22325 22326 22327 22328 22329 22330 22331 <tr class="entry" id="dynamic_android.statistics.faceDetectMode"> 22332 <td class="entry_name 22333 " rowspan="5"> 22334 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 22335 </td> 22336 <td class="entry_type"> 22337 <span class="entry_type_name entry_type_name_enum">byte</span> 22338 22339 <span class="entry_type_visibility"> [public]</span> 22340 22341 22342 <span class="entry_type_hwlevel">[legacy] </span> 22343 22344 22345 22346 <ul class="entry_type_enum"> 22347 <li> 22348 <span class="entry_type_enum_name">OFF</span> 22349 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 22350results.<wbr/></p></span> 22351 </li> 22352 <li> 22353 <span class="entry_type_enum_name">SIMPLE</span> 22354 <span class="entry_type_enum_optional">[optional]</span> 22355 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 22356 </li> 22357 <li> 22358 <span class="entry_type_enum_name">FULL</span> 22359 <span class="entry_type_enum_optional">[optional]</span> 22360 <span class="entry_type_enum_notes"><p>Return all face 22361metadata.<wbr/></p> 22362<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 22363 </li> 22364 </ul> 22365 22366 </td> <!-- entry_type --> 22367 22368 <td class="entry_description"> 22369 <p>Operating mode for the face detector 22370unit.<wbr/></p> 22371 </td> 22372 22373 <td class="entry_units"> 22374 </td> 22375 22376 <td class="entry_range"> 22377 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 22378 </td> 22379 22380 <td class="entry_tags"> 22381 <ul class="entry_tags"> 22382 <li><a href="#tag_BC">BC</a></li> 22383 </ul> 22384 </td> 22385 22386 </tr> 22387 <tr class="entries_header"> 22388 <th class="th_details" colspan="5">Details</th> 22389 </tr> 22390 <tr class="entry_cont"> 22391 <td class="entry_details" colspan="5"> 22392 <p>Whether face detection is enabled,<wbr/> and whether it 22393should output just the basic fields or the full set of 22394fields.<wbr/></p> 22395 </td> 22396 </tr> 22397 22398 <tr class="entries_header"> 22399 <th class="th_details" colspan="5">HAL Implementation Details</th> 22400 </tr> 22401 <tr class="entry_cont"> 22402 <td class="entry_details" colspan="5"> 22403 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 22404<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 22405FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 22406<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 22407 </td> 22408 </tr> 22409 22410 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22411 <!-- end of entry --> 22412 22413 22414 <tr class="entry" id="dynamic_android.statistics.faceIds"> 22415 <td class="entry_name 22416 " rowspan="3"> 22417 android.<wbr/>statistics.<wbr/>face<wbr/>Ids 22418 </td> 22419 <td class="entry_type"> 22420 <span class="entry_type_name">int32</span> 22421 <span class="entry_type_container">x</span> 22422 22423 <span class="entry_type_array"> 22424 n 22425 </span> 22426 <span class="entry_type_visibility"> [hidden]</span> 22427 22428 22429 <span class="entry_type_hwlevel">[legacy] </span> 22430 22431 22432 22433 22434 </td> <!-- entry_type --> 22435 22436 <td class="entry_description"> 22437 <p>List of unique IDs for detected faces.<wbr/></p> 22438 </td> 22439 22440 <td class="entry_units"> 22441 </td> 22442 22443 <td class="entry_range"> 22444 </td> 22445 22446 <td class="entry_tags"> 22447 <ul class="entry_tags"> 22448 <li><a href="#tag_BC">BC</a></li> 22449 </ul> 22450 </td> 22451 22452 </tr> 22453 <tr class="entries_header"> 22454 <th class="th_details" colspan="5">Details</th> 22455 </tr> 22456 <tr class="entry_cont"> 22457 <td class="entry_details" colspan="5"> 22458 <p>Each detected face is given a unique ID that is valid for as long as the face is visible 22459to the camera device.<wbr/> A face that leaves the field of view and later returns may be 22460assigned a new ID.<wbr/></p> 22461<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 22462 </td> 22463 </tr> 22464 22465 22466 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22467 <!-- end of entry --> 22468 22469 22470 <tr class="entry" id="dynamic_android.statistics.faceLandmarks"> 22471 <td class="entry_name 22472 " rowspan="3"> 22473 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks 22474 </td> 22475 <td class="entry_type"> 22476 <span class="entry_type_name">int32</span> 22477 <span class="entry_type_container">x</span> 22478 22479 <span class="entry_type_array"> 22480 n x 6 22481 </span> 22482 <span class="entry_type_visibility"> [hidden]</span> 22483 22484 22485 <span class="entry_type_hwlevel">[legacy] </span> 22486 22487 22488 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div> 22489 22490 22491 </td> <!-- entry_type --> 22492 22493 <td class="entry_description"> 22494 <p>List of landmarks for detected 22495faces.<wbr/></p> 22496 </td> 22497 22498 <td class="entry_units"> 22499 </td> 22500 22501 <td class="entry_range"> 22502 </td> 22503 22504 <td class="entry_tags"> 22505 <ul class="entry_tags"> 22506 <li><a href="#tag_BC">BC</a></li> 22507 </ul> 22508 </td> 22509 22510 </tr> 22511 <tr class="entries_header"> 22512 <th class="th_details" colspan="5">Details</th> 22513 </tr> 22514 <tr class="entry_cont"> 22515 <td class="entry_details" colspan="5"> 22516 <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 22517<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 22518<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 22519 </td> 22520 </tr> 22521 22522 22523 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22524 <!-- end of entry --> 22525 22526 22527 <tr class="entry" id="dynamic_android.statistics.faceRectangles"> 22528 <td class="entry_name 22529 " rowspan="3"> 22530 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles 22531 </td> 22532 <td class="entry_type"> 22533 <span class="entry_type_name">int32</span> 22534 <span class="entry_type_container">x</span> 22535 22536 <span class="entry_type_array"> 22537 n x 4 22538 </span> 22539 <span class="entry_type_visibility"> [hidden as rectangle]</span> 22540 22541 22542 <span class="entry_type_hwlevel">[legacy] </span> 22543 22544 22545 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div> 22546 22547 22548 </td> <!-- entry_type --> 22549 22550 <td class="entry_description"> 22551 <p>List of the bounding rectangles for detected 22552faces.<wbr/></p> 22553 </td> 22554 22555 <td class="entry_units"> 22556 </td> 22557 22558 <td class="entry_range"> 22559 </td> 22560 22561 <td class="entry_tags"> 22562 <ul class="entry_tags"> 22563 <li><a href="#tag_BC">BC</a></li> 22564 </ul> 22565 </td> 22566 22567 </tr> 22568 <tr class="entries_header"> 22569 <th class="th_details" colspan="5">Details</th> 22570 </tr> 22571 <tr class="entry_cont"> 22572 <td class="entry_details" colspan="5"> 22573 <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 22574<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 22575<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p> 22576 </td> 22577 </tr> 22578 22579 22580 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22581 <!-- end of entry --> 22582 22583 22584 <tr class="entry" id="dynamic_android.statistics.faceScores"> 22585 <td class="entry_name 22586 " rowspan="5"> 22587 android.<wbr/>statistics.<wbr/>face<wbr/>Scores 22588 </td> 22589 <td class="entry_type"> 22590 <span class="entry_type_name">byte</span> 22591 <span class="entry_type_container">x</span> 22592 22593 <span class="entry_type_array"> 22594 n 22595 </span> 22596 <span class="entry_type_visibility"> [hidden]</span> 22597 22598 22599 <span class="entry_type_hwlevel">[legacy] </span> 22600 22601 22602 22603 22604 </td> <!-- entry_type --> 22605 22606 <td class="entry_description"> 22607 <p>List of the face confidence scores for 22608detected faces</p> 22609 </td> 22610 22611 <td class="entry_units"> 22612 </td> 22613 22614 <td class="entry_range"> 22615 <p>1-100</p> 22616 </td> 22617 22618 <td class="entry_tags"> 22619 <ul class="entry_tags"> 22620 <li><a href="#tag_BC">BC</a></li> 22621 </ul> 22622 </td> 22623 22624 </tr> 22625 <tr class="entries_header"> 22626 <th class="th_details" colspan="5">Details</th> 22627 </tr> 22628 <tr class="entry_cont"> 22629 <td class="entry_details" colspan="5"> 22630 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p> 22631 </td> 22632 </tr> 22633 22634 <tr class="entries_header"> 22635 <th class="th_details" colspan="5">HAL Implementation Details</th> 22636 </tr> 22637 <tr class="entry_cont"> 22638 <td class="entry_details" colspan="5"> 22639 <p>The value should be meaningful (for example,<wbr/> setting 100 at 22640all times is illegal).<wbr/></p> 22641 </td> 22642 </tr> 22643 22644 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22645 <!-- end of entry --> 22646 22647 22648 <tr class="entry" id="dynamic_android.statistics.faces"> 22649 <td class="entry_name 22650 " rowspan="3"> 22651 android.<wbr/>statistics.<wbr/>faces 22652 </td> 22653 <td class="entry_type"> 22654 <span class="entry_type_name">int32</span> 22655 <span class="entry_type_container">x</span> 22656 22657 <span class="entry_type_array"> 22658 n 22659 </span> 22660 <span class="entry_type_visibility"> [public as face]</span> 22661 22662 <span class="entry_type_synthetic">[synthetic] </span> 22663 22664 <span class="entry_type_hwlevel">[legacy] </span> 22665 22666 22667 22668 22669 </td> <!-- entry_type --> 22670 22671 <td class="entry_description"> 22672 <p>List of the faces detected through camera face detection 22673in this capture.<wbr/></p> 22674 </td> 22675 22676 <td class="entry_units"> 22677 </td> 22678 22679 <td class="entry_range"> 22680 </td> 22681 22682 <td class="entry_tags"> 22683 </td> 22684 22685 </tr> 22686 <tr class="entries_header"> 22687 <th class="th_details" colspan="5">Details</th> 22688 </tr> 22689 <tr class="entry_cont"> 22690 <td class="entry_details" colspan="5"> 22691 <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> 22692 </td> 22693 </tr> 22694 22695 22696 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22697 <!-- end of entry --> 22698 22699 22700 <tr class="entry" id="dynamic_android.statistics.histogram"> 22701 <td class="entry_name 22702 " rowspan="3"> 22703 android.<wbr/>statistics.<wbr/>histogram 22704 </td> 22705 <td class="entry_type"> 22706 <span class="entry_type_name">int32</span> 22707 <span class="entry_type_container">x</span> 22708 22709 <span class="entry_type_array"> 22710 n x 3 22711 </span> 22712 <span class="entry_type_visibility"> [system]</span> 22713 22714 22715 22716 22717 <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> 22718 22719 22720 </td> <!-- entry_type --> 22721 22722 <td class="entry_description"> 22723 <p>A 3-channel histogram based on the raw 22724sensor data</p> 22725 </td> 22726 22727 <td class="entry_units"> 22728 </td> 22729 22730 <td class="entry_range"> 22731 </td> 22732 22733 <td class="entry_tags"> 22734 <ul class="entry_tags"> 22735 <li><a href="#tag_FUTURE">FUTURE</a></li> 22736 </ul> 22737 </td> 22738 22739 </tr> 22740 <tr class="entries_header"> 22741 <th class="th_details" colspan="5">Details</th> 22742 </tr> 22743 <tr class="entry_cont"> 22744 <td class="entry_details" colspan="5"> 22745 <p>The k'th bucket (0-based) covers the input range 22746(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/> 22747(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is 22748supported,<wbr/> all channels should have the same data</p> 22749 </td> 22750 </tr> 22751 22752 22753 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22754 <!-- end of entry --> 22755 22756 22757 <tr class="entry" id="dynamic_android.statistics.histogramMode"> 22758 <td class="entry_name 22759 " rowspan="1"> 22760 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 22761 </td> 22762 <td class="entry_type"> 22763 <span class="entry_type_name entry_type_name_enum">byte</span> 22764 22765 <span class="entry_type_visibility"> [system as boolean]</span> 22766 22767 22768 22769 22770 22771 <ul class="entry_type_enum"> 22772 <li> 22773 <span class="entry_type_enum_name">OFF</span> 22774 </li> 22775 <li> 22776 <span class="entry_type_enum_name">ON</span> 22777 </li> 22778 </ul> 22779 22780 </td> <!-- entry_type --> 22781 22782 <td class="entry_description"> 22783 <p>Operating mode for histogram 22784generation</p> 22785 </td> 22786 22787 <td class="entry_units"> 22788 </td> 22789 22790 <td class="entry_range"> 22791 </td> 22792 22793 <td class="entry_tags"> 22794 <ul class="entry_tags"> 22795 <li><a href="#tag_FUTURE">FUTURE</a></li> 22796 </ul> 22797 </td> 22798 22799 </tr> 22800 22801 22802 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22803 <!-- end of entry --> 22804 22805 22806 <tr class="entry" id="dynamic_android.statistics.sharpnessMap"> 22807 <td class="entry_name 22808 " rowspan="3"> 22809 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map 22810 </td> 22811 <td class="entry_type"> 22812 <span class="entry_type_name">int32</span> 22813 <span class="entry_type_container">x</span> 22814 22815 <span class="entry_type_array"> 22816 n x m x 3 22817 </span> 22818 <span class="entry_type_visibility"> [system]</span> 22819 22820 22821 22822 22823 <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> 22824 22825 22826 </td> <!-- entry_type --> 22827 22828 <td class="entry_description"> 22829 <p>A 3-channel sharpness map,<wbr/> based on the raw 22830sensor data</p> 22831 </td> 22832 22833 <td class="entry_units"> 22834 </td> 22835 22836 <td class="entry_range"> 22837 </td> 22838 22839 <td class="entry_tags"> 22840 <ul class="entry_tags"> 22841 <li><a href="#tag_FUTURE">FUTURE</a></li> 22842 </ul> 22843 </td> 22844 22845 </tr> 22846 <tr class="entries_header"> 22847 <th class="th_details" colspan="5">Details</th> 22848 </tr> 22849 <tr class="entry_cont"> 22850 <td class="entry_details" colspan="5"> 22851 <p>If only a monochrome sharpness map is supported,<wbr/> 22852all channels should have the same data</p> 22853 </td> 22854 </tr> 22855 22856 22857 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22858 <!-- end of entry --> 22859 22860 22861 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode"> 22862 <td class="entry_name 22863 " rowspan="1"> 22864 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 22865 </td> 22866 <td class="entry_type"> 22867 <span class="entry_type_name entry_type_name_enum">byte</span> 22868 22869 <span class="entry_type_visibility"> [system as boolean]</span> 22870 22871 22872 22873 22874 22875 <ul class="entry_type_enum"> 22876 <li> 22877 <span class="entry_type_enum_name">OFF</span> 22878 </li> 22879 <li> 22880 <span class="entry_type_enum_name">ON</span> 22881 </li> 22882 </ul> 22883 22884 </td> <!-- entry_type --> 22885 22886 <td class="entry_description"> 22887 <p>Operating mode for sharpness map 22888generation</p> 22889 </td> 22890 22891 <td class="entry_units"> 22892 </td> 22893 22894 <td class="entry_range"> 22895 </td> 22896 22897 <td class="entry_tags"> 22898 <ul class="entry_tags"> 22899 <li><a href="#tag_FUTURE">FUTURE</a></li> 22900 </ul> 22901 </td> 22902 22903 </tr> 22904 22905 22906 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22907 <!-- end of entry --> 22908 22909 22910 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap"> 22911 <td class="entry_name 22912 " rowspan="3"> 22913 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map 22914 </td> 22915 <td class="entry_type"> 22916 <span class="entry_type_name">byte</span> 22917 22918 <span class="entry_type_visibility"> [public as lensShadingMap]</span> 22919 22920 22921 <span class="entry_type_hwlevel">[full] </span> 22922 22923 22924 22925 22926 </td> <!-- entry_type --> 22927 22928 <td class="entry_description"> 22929 <p>The shading map is a low-resolution floating-point map 22930that lists the coefficients used to correct for vignetting,<wbr/> for each 22931Bayer color channel.<wbr/></p> 22932 </td> 22933 22934 <td class="entry_units"> 22935 </td> 22936 22937 <td class="entry_range"> 22938 <p>Each gain factor is >= 1</p> 22939 </td> 22940 22941 <td class="entry_tags"> 22942 </td> 22943 22944 </tr> 22945 <tr class="entries_header"> 22946 <th class="th_details" colspan="5">Details</th> 22947 </tr> 22948 <tr class="entry_cont"> 22949 <td class="entry_details" colspan="5"> 22950 <p>The least shaded section of the image should have a gain factor 22951of 1; all other sections should have gains above 1.<wbr/></p> 22952<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 22953must take into account the colorCorrection settings.<wbr/></p> 22954<p>The shading map is for the entire active pixel array,<wbr/> and is not 22955affected by the crop region specified in the request.<wbr/> Each shading map 22956entry is the value of the shading compensation map over a specific 22957pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 22958map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 22959(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 22960pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 22961The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 22962<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 22963channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 22964The shading map is stored in a fully interleaved format.<wbr/></p> 22965<p>The shading map should have on the order of 30-40 rows and columns,<wbr/> 22966and must be smaller than 64x64.<wbr/></p> 22967<p>As an example,<wbr/> given a very small map defined as:</p> 22968<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ] 22969values = 22970[ 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/> 22971 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/> 22972 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/> 22973 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/> 22974 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/> 22975 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 ] 22976</code></pre> 22977<p>The low-resolution scaling map images for each channel are 22978(displayed using nearest-neighbor interpolation):</p> 22979<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 22980<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 22981<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 22982<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 22983<p>As a visualization only,<wbr/> inverting the full-color map to recover an 22984image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 22985<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 22986 </td> 22987 </tr> 22988 22989 22990 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22991 <!-- end of entry --> 22992 22993 22994 <tr class="entry" id="dynamic_android.statistics.lensShadingMap"> 22995 <td class="entry_name 22996 " rowspan="5"> 22997 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map 22998 </td> 22999 <td class="entry_type"> 23000 <span class="entry_type_name">float</span> 23001 <span class="entry_type_container">x</span> 23002 23003 <span class="entry_type_array"> 23004 4 x n x m 23005 </span> 23006 <span class="entry_type_visibility"> [hidden]</span> 23007 23008 23009 <span class="entry_type_hwlevel">[full] </span> 23010 23011 23012 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div> 23013 23014 23015 </td> <!-- entry_type --> 23016 23017 <td class="entry_description"> 23018 <p>The shading map is a low-resolution floating-point map 23019that lists the coefficients used to correct for vignetting,<wbr/> for each 23020Bayer color channel of RAW image data.<wbr/></p> 23021 </td> 23022 23023 <td class="entry_units"> 23024 </td> 23025 23026 <td class="entry_range"> 23027 <p>Each gain factor is >= 1</p> 23028 </td> 23029 23030 <td class="entry_tags"> 23031 </td> 23032 23033 </tr> 23034 <tr class="entries_header"> 23035 <th class="th_details" colspan="5">Details</th> 23036 </tr> 23037 <tr class="entry_cont"> 23038 <td class="entry_details" colspan="5"> 23039 <p>The least shaded section of the image should have a gain factor 23040of 1; all other sections should have gains above 1.<wbr/></p> 23041<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 23042must take into account the colorCorrection settings.<wbr/></p> 23043<p>The shading map is for the entire active pixel array,<wbr/> and is not 23044affected by the crop region specified in the request.<wbr/> Each shading map 23045entry is the value of the shading compensation map over a specific 23046pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 23047map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 23048(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 23049pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 23050The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 23051<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 23052channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 23053The shading map is stored in a fully interleaved format,<wbr/> and its size 23054is 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> 23055<p>The shading map should have on the order of 30-40 rows and columns,<wbr/> 23056and must be smaller than 64x64.<wbr/></p> 23057<p>As an example,<wbr/> given a very small map defined as:</p> 23058<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 23059<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 23060[ 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/> 23061 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/> 23062 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/> 23063 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/> 23064 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/> 23065 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 ] 23066</code></pre> 23067<p>The low-resolution scaling map images for each channel are 23068(displayed using nearest-neighbor interpolation):</p> 23069<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 23070<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 23071<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 23072<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 23073<p>As a visualization only,<wbr/> inverting the full-color map to recover an 23074image of a gray wall (using bicubic interpolation for visual quality) 23075as captured by the sensor gives:</p> 23076<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 23077<p>Note that the RAW image data might be subject to lens shading 23078correction not reported on this map.<wbr/> Query 23079<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 23080to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> 23081is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading 23082correction.<wbr/> In the case full lens shading correction is applied to RAW 23083images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/> 23084In other words,<wbr/> the map reported in this key is the remaining lens shading 23085that needs to be applied on the RAW image to get images without lens shading 23086artifacts.<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 23087formats.<wbr/></p> 23088 </td> 23089 </tr> 23090 23091 <tr class="entries_header"> 23092 <th class="th_details" colspan="5">HAL Implementation Details</th> 23093 </tr> 23094 <tr class="entry_cont"> 23095 <td class="entry_details" colspan="5"> 23096 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/> 23097When AE and AWB are in AUTO modes 23098(<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 23099may have all the information it need to generate most accurate lens shading map.<wbr/> When 23100AE or AWB are in manual mode 23101(<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 23102may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid 23103generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with 23104the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p> 23105 </td> 23106 </tr> 23107 23108 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23109 <!-- end of entry --> 23110 23111 23112 <tr class="entry" id="dynamic_android.statistics.predictedColorGains"> 23113 <td class="entry_name 23114 entry_name_deprecated 23115 " rowspan="3"> 23116 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains 23117 </td> 23118 <td class="entry_type"> 23119 <span class="entry_type_name">float</span> 23120 <span class="entry_type_container">x</span> 23121 23122 <span class="entry_type_array"> 23123 4 23124 </span> 23125 <span class="entry_type_visibility"> [hidden]</span> 23126 23127 23128 23129 <span class="entry_type_deprecated">[deprecated] </span> 23130 23131 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 23132 23133 23134 </td> <!-- entry_type --> 23135 23136 <td class="entry_description"> 23137 <p>The best-fit color channel gains calculated 23138by the camera device's statistics units for the current output frame.<wbr/></p> 23139 </td> 23140 23141 <td class="entry_units"> 23142 </td> 23143 23144 <td class="entry_range"> 23145 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 23146 </td> 23147 23148 <td class="entry_tags"> 23149 </td> 23150 23151 </tr> 23152 <tr class="entries_header"> 23153 <th class="th_details" colspan="5">Details</th> 23154 </tr> 23155 <tr class="entry_cont"> 23156 <td class="entry_details" colspan="5"> 23157 <p>This may be different than the gains used for this frame,<wbr/> 23158since statistics processing on data from a new frame 23159typically completes after the transform has already been 23160applied to that frame.<wbr/></p> 23161<p>The 4 channel gains are defined in Bayer domain,<wbr/> 23162see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p> 23163<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 23164regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 23165 </td> 23166 </tr> 23167 23168 23169 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23170 <!-- end of entry --> 23171 23172 23173 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform"> 23174 <td class="entry_name 23175 entry_name_deprecated 23176 " rowspan="3"> 23177 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform 23178 </td> 23179 <td class="entry_type"> 23180 <span class="entry_type_name">rational</span> 23181 <span class="entry_type_container">x</span> 23182 23183 <span class="entry_type_array"> 23184 3 x 3 23185 </span> 23186 <span class="entry_type_visibility"> [hidden]</span> 23187 23188 23189 23190 <span class="entry_type_deprecated">[deprecated] </span> 23191 23192 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 23193 23194 23195 </td> <!-- entry_type --> 23196 23197 <td class="entry_description"> 23198 <p>The best-fit color transform matrix estimate 23199calculated by the camera device's statistics units for the current 23200output frame.<wbr/></p> 23201 </td> 23202 23203 <td class="entry_units"> 23204 </td> 23205 23206 <td class="entry_range"> 23207 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 23208 </td> 23209 23210 <td class="entry_tags"> 23211 </td> 23212 23213 </tr> 23214 <tr class="entries_header"> 23215 <th class="th_details" colspan="5">Details</th> 23216 </tr> 23217 <tr class="entry_cont"> 23218 <td class="entry_details" colspan="5"> 23219 <p>The camera device will provide the estimate from its 23220statistics unit on the white balance transforms to use 23221for the next frame.<wbr/> These are the values the camera device believes 23222are the best fit for the current output frame.<wbr/> This may 23223be different than the transform used for this frame,<wbr/> since 23224statistics processing on data from a new frame typically 23225completes after the transform has already been applied to 23226that frame.<wbr/></p> 23227<p>These estimates must be provided for all frames,<wbr/> even if 23228capture settings and color transforms are set by the application.<wbr/></p> 23229<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 23230regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 23231 </td> 23232 </tr> 23233 23234 23235 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23236 <!-- end of entry --> 23237 23238 23239 <tr class="entry" id="dynamic_android.statistics.sceneFlicker"> 23240 <td class="entry_name 23241 " rowspan="3"> 23242 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker 23243 </td> 23244 <td class="entry_type"> 23245 <span class="entry_type_name entry_type_name_enum">byte</span> 23246 23247 <span class="entry_type_visibility"> [public]</span> 23248 23249 23250 <span class="entry_type_hwlevel">[full] </span> 23251 23252 23253 23254 <ul class="entry_type_enum"> 23255 <li> 23256 <span class="entry_type_enum_name">NONE</span> 23257 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination 23258in the current scene.<wbr/></p></span> 23259 </li> 23260 <li> 23261 <span class="entry_type_enum_name">50HZ</span> 23262 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz 23263in the current scene.<wbr/></p></span> 23264 </li> 23265 <li> 23266 <span class="entry_type_enum_name">60HZ</span> 23267 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz 23268in the current scene.<wbr/></p></span> 23269 </li> 23270 </ul> 23271 23272 </td> <!-- entry_type --> 23273 23274 <td class="entry_description"> 23275 <p>The camera device estimated scene illumination lighting 23276frequency.<wbr/></p> 23277 </td> 23278 23279 <td class="entry_units"> 23280 </td> 23281 23282 <td class="entry_range"> 23283 </td> 23284 23285 <td class="entry_tags"> 23286 </td> 23287 23288 </tr> 23289 <tr class="entries_header"> 23290 <th class="th_details" colspan="5">Details</th> 23291 </tr> 23292 <tr class="entry_cont"> 23293 <td class="entry_details" colspan="5"> 23294 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate 23295that depends on the local utility power standards.<wbr/> This flicker must be 23296accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> 23297The camera device uses this entry to tell the application what the scene 23298illuminant frequency is.<wbr/></p> 23299<p>When manual exposure control is enabled 23300(<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> == 23301OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform 23302antibanding,<wbr/> and the application can ensure it selects 23303exposure times that do not cause banding issues by looking 23304into this metadata field.<wbr/> See 23305<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p> 23306<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p> 23307 </td> 23308 </tr> 23309 23310 23311 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23312 <!-- end of entry --> 23313 23314 23315 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode"> 23316 <td class="entry_name 23317 " rowspan="3"> 23318 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 23319 </td> 23320 <td class="entry_type"> 23321 <span class="entry_type_name entry_type_name_enum">byte</span> 23322 23323 <span class="entry_type_visibility"> [public as boolean]</span> 23324 23325 23326 23327 23328 23329 <ul class="entry_type_enum"> 23330 <li> 23331 <span class="entry_type_enum_name">OFF</span> 23332 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 23333 </li> 23334 <li> 23335 <span class="entry_type_enum_name">ON</span> 23336 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 23337 </li> 23338 </ul> 23339 23340 </td> <!-- entry_type --> 23341 23342 <td class="entry_description"> 23343 <p>Operating mode for hot pixel map generation.<wbr/></p> 23344 </td> 23345 23346 <td class="entry_units"> 23347 </td> 23348 23349 <td class="entry_range"> 23350 <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> 23351 </td> 23352 23353 <td class="entry_tags"> 23354 <ul class="entry_tags"> 23355 <li><a href="#tag_V1">V1</a></li> 23356 <li><a href="#tag_RAW">RAW</a></li> 23357 </ul> 23358 </td> 23359 23360 </tr> 23361 <tr class="entries_header"> 23362 <th class="th_details" colspan="5">Details</th> 23363 </tr> 23364 <tr class="entry_cont"> 23365 <td class="entry_details" colspan="5"> 23366 <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/> 23367If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 23368 </td> 23369 </tr> 23370 23371 23372 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23373 <!-- end of entry --> 23374 23375 23376 <tr class="entry" id="dynamic_android.statistics.hotPixelMap"> 23377 <td class="entry_name 23378 " rowspan="5"> 23379 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map 23380 </td> 23381 <td class="entry_type"> 23382 <span class="entry_type_name">int32</span> 23383 <span class="entry_type_container">x</span> 23384 23385 <span class="entry_type_array"> 23386 2 x n 23387 </span> 23388 <span class="entry_type_visibility"> [public as point]</span> 23389 23390 23391 23392 23393 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div> 23394 23395 23396 </td> <!-- entry_type --> 23397 23398 <td class="entry_description"> 23399 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p> 23400 </td> 23401 23402 <td class="entry_units"> 23403 </td> 23404 23405 <td class="entry_range"> 23406 <p>n <= number of pixels on the sensor.<wbr/> 23407The <code>(x,<wbr/> y)</code> coordinates must be bounded by 23408<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 23409 </td> 23410 23411 <td class="entry_tags"> 23412 <ul class="entry_tags"> 23413 <li><a href="#tag_V1">V1</a></li> 23414 <li><a href="#tag_RAW">RAW</a></li> 23415 </ul> 23416 </td> 23417 23418 </tr> 23419 <tr class="entries_header"> 23420 <th class="th_details" colspan="5">Details</th> 23421 </tr> 23422 <tr class="entry_cont"> 23423 <td class="entry_details" colspan="5"> 23424 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and 23425<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and 23426bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and 23427height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> 23428This may include hot pixels that lie outside of the active array 23429bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 23430 </td> 23431 </tr> 23432 23433 <tr class="entries_header"> 23434 <th class="th_details" colspan="5">HAL Implementation Details</th> 23435 </tr> 23436 <tr class="entry_cont"> 23437 <td class="entry_details" colspan="5"> 23438 <p>A hotpixel map contains the coordinates of pixels on the camera 23439sensor that do report valid values (usually due to defects in 23440the camera sensor).<wbr/> This includes pixels that are stuck at certain 23441values,<wbr/> or have a response that does not accuractly encode the 23442incoming light from the scene.<wbr/></p> 23443<p>To avoid performance issues,<wbr/> there should be significantly fewer hot 23444pixels than actual pixels on the camera sensor.<wbr/></p> 23445 </td> 23446 </tr> 23447 23448 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23449 <!-- end of entry --> 23450 23451 23452 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode"> 23453 <td class="entry_name 23454 " rowspan="3"> 23455 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 23456 </td> 23457 <td class="entry_type"> 23458 <span class="entry_type_name entry_type_name_enum">byte</span> 23459 23460 <span class="entry_type_visibility"> [public]</span> 23461 23462 23463 <span class="entry_type_hwlevel">[full] </span> 23464 23465 23466 23467 <ul class="entry_type_enum"> 23468 <li> 23469 <span class="entry_type_enum_name">OFF</span> 23470 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 23471 </li> 23472 <li> 23473 <span class="entry_type_enum_name">ON</span> 23474 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 23475 </li> 23476 </ul> 23477 23478 </td> <!-- entry_type --> 23479 23480 <td class="entry_description"> 23481 <p>Whether the camera device will output the lens 23482shading map in output result metadata.<wbr/></p> 23483 </td> 23484 23485 <td class="entry_units"> 23486 </td> 23487 23488 <td class="entry_range"> 23489 <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> 23490 </td> 23491 23492 <td class="entry_tags"> 23493 <ul class="entry_tags"> 23494 <li><a href="#tag_RAW">RAW</a></li> 23495 </ul> 23496 </td> 23497 23498 </tr> 23499 <tr class="entries_header"> 23500 <th class="th_details" colspan="5">Details</th> 23501 </tr> 23502 <tr class="entry_cont"> 23503 <td class="entry_details" colspan="5"> 23504 <p>When set to ON,<wbr/> 23505<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 23506the output result metadata.<wbr/></p> 23507<p>ON is always supported on devices with the RAW capability.<wbr/></p> 23508 </td> 23509 </tr> 23510 23511 23512 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23513 <!-- end of entry --> 23514 23515 23516 23517 <!-- end of kind --> 23518 </tbody> 23519 23520 <!-- end of section --> 23521 <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr> 23522 23523 23524 <tr><td colspan="6" class="kind">controls</td></tr> 23525 23526 <thead class="entries_header"> 23527 <tr> 23528 <th class="th_name">Property Name</th> 23529 <th class="th_type">Type</th> 23530 <th class="th_description">Description</th> 23531 <th class="th_units">Units</th> 23532 <th class="th_range">Range</th> 23533 <th class="th_tags">Tags</th> 23534 </tr> 23535 </thead> 23536 23537 <tbody> 23538 23539 23540 23541 23542 23543 23544 23545 23546 23547 23548 <tr class="entry" id="controls_android.tonemap.curveBlue"> 23549 <td class="entry_name 23550 " rowspan="3"> 23551 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 23552 </td> 23553 <td class="entry_type"> 23554 <span class="entry_type_name">float</span> 23555 <span class="entry_type_container">x</span> 23556 23557 <span class="entry_type_array"> 23558 n x 2 23559 </span> 23560 <span class="entry_type_visibility"> [hidden]</span> 23561 23562 23563 <span class="entry_type_hwlevel">[full] </span> 23564 23565 23566 <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> 23567 23568 23569 </td> <!-- entry_type --> 23570 23571 <td class="entry_description"> 23572 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 23573channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23574CONTRAST_<wbr/>CURVE.<wbr/></p> 23575 </td> 23576 23577 <td class="entry_units"> 23578 </td> 23579 23580 <td class="entry_range"> 23581 </td> 23582 23583 <td class="entry_tags"> 23584 </td> 23585 23586 </tr> 23587 <tr class="entries_header"> 23588 <th class="th_details" colspan="5">Details</th> 23589 </tr> 23590 <tr class="entry_cont"> 23591 <td class="entry_details" colspan="5"> 23592 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 23593 </td> 23594 </tr> 23595 23596 23597 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23598 <!-- end of entry --> 23599 23600 23601 <tr class="entry" id="controls_android.tonemap.curveGreen"> 23602 <td class="entry_name 23603 " rowspan="3"> 23604 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 23605 </td> 23606 <td class="entry_type"> 23607 <span class="entry_type_name">float</span> 23608 <span class="entry_type_container">x</span> 23609 23610 <span class="entry_type_array"> 23611 n x 2 23612 </span> 23613 <span class="entry_type_visibility"> [hidden]</span> 23614 23615 23616 <span class="entry_type_hwlevel">[full] </span> 23617 23618 23619 <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> 23620 23621 23622 </td> <!-- entry_type --> 23623 23624 <td class="entry_description"> 23625 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 23626channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23627CONTRAST_<wbr/>CURVE.<wbr/></p> 23628 </td> 23629 23630 <td class="entry_units"> 23631 </td> 23632 23633 <td class="entry_range"> 23634 </td> 23635 23636 <td class="entry_tags"> 23637 </td> 23638 23639 </tr> 23640 <tr class="entries_header"> 23641 <th class="th_details" colspan="5">Details</th> 23642 </tr> 23643 <tr class="entry_cont"> 23644 <td class="entry_details" colspan="5"> 23645 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 23646 </td> 23647 </tr> 23648 23649 23650 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23651 <!-- end of entry --> 23652 23653 23654 <tr class="entry" id="controls_android.tonemap.curveRed"> 23655 <td class="entry_name 23656 " rowspan="5"> 23657 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 23658 </td> 23659 <td class="entry_type"> 23660 <span class="entry_type_name">float</span> 23661 <span class="entry_type_container">x</span> 23662 23663 <span class="entry_type_array"> 23664 n x 2 23665 </span> 23666 <span class="entry_type_visibility"> [hidden]</span> 23667 23668 23669 <span class="entry_type_hwlevel">[full] </span> 23670 23671 23672 <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> 23673 23674 23675 </td> <!-- entry_type --> 23676 23677 <td class="entry_description"> 23678 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 23679channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23680CONTRAST_<wbr/>CURVE.<wbr/></p> 23681 </td> 23682 23683 <td class="entry_units"> 23684 </td> 23685 23686 <td class="entry_range"> 23687 <p>0-1 on both input and output coordinates,<wbr/> normalized 23688as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 23689 </td> 23690 23691 <td class="entry_tags"> 23692 </td> 23693 23694 </tr> 23695 <tr class="entries_header"> 23696 <th class="th_details" colspan="5">Details</th> 23697 </tr> 23698 <tr class="entry_cont"> 23699 <td class="entry_details" colspan="5"> 23700 <p>Each channel's curve is defined by an array of control points:</p> 23701<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 23702 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 237032 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 23704<p>These are sorted in order of increasing <code>Pin</code>; it is 23705required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 23706define a complete mapping.<wbr/> For input values between control points,<wbr/> 23707the camera device must linearly interpolate between the control 23708points.<wbr/></p> 23709<p>Each curve can have an independent number of points,<wbr/> and the number 23710of points can be less than max (that is,<wbr/> the request doesn't have to 23711always provide a curve with number of points equivalent to 23712<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 23713<p>A few examples,<wbr/> and their corresponding graphical mappings; these 23714only specify the red channel and the precision is limited to 4 23715digits,<wbr/> for conciseness.<wbr/></p> 23716<p>Linear mapping:</p> 23717<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 ] 23718</code></pre> 23719<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 23720<p>Invert mapping:</p> 23721<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 ] 23722</code></pre> 23723<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 23724<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 23725<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 23726 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/> 23727 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/> 23728 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/> 23729 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 ] 23730</code></pre> 23731<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 23732<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 23733<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 23734 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/> 23735 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/> 23736 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/> 23737 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 ] 23738</code></pre> 23739<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 23740 </td> 23741 </tr> 23742 23743 <tr class="entries_header"> 23744 <th class="th_details" colspan="5">HAL Implementation Details</th> 23745 </tr> 23746 <tr class="entry_cont"> 23747 <td class="entry_details" colspan="5"> 23748 <p>For good quality of mapping,<wbr/> at least 128 control points are 23749preferred.<wbr/></p> 23750<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 23751control points used as are available.<wbr/></p> 23752 </td> 23753 </tr> 23754 23755 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23756 <!-- end of entry --> 23757 23758 23759 <tr class="entry" id="controls_android.tonemap.curve"> 23760 <td class="entry_name 23761 " rowspan="5"> 23762 android.<wbr/>tonemap.<wbr/>curve 23763 </td> 23764 <td class="entry_type"> 23765 <span class="entry_type_name">float</span> 23766 23767 <span class="entry_type_visibility"> [public as tonemapCurve]</span> 23768 23769 <span class="entry_type_synthetic">[synthetic] </span> 23770 23771 <span class="entry_type_hwlevel">[full] </span> 23772 23773 23774 23775 23776 </td> <!-- entry_type --> 23777 23778 <td class="entry_description"> 23779 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 23780is CONTRAST_<wbr/>CURVE.<wbr/></p> 23781 </td> 23782 23783 <td class="entry_units"> 23784 </td> 23785 23786 <td class="entry_range"> 23787 </td> 23788 23789 <td class="entry_tags"> 23790 </td> 23791 23792 </tr> 23793 <tr class="entries_header"> 23794 <th class="th_details" colspan="5">Details</th> 23795 </tr> 23796 <tr class="entry_cont"> 23797 <td class="entry_details" colspan="5"> 23798 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 23799channels respectively.<wbr/> The following example uses the red channel as an 23800example.<wbr/> The same logic applies to green and blue channel.<wbr/> 23801Each channel's curve is defined by an array of control points:</p> 23802<pre><code>curveRed = 23803 [ 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) ] 238042 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 23805<p>These are sorted in order of increasing <code>Pin</code>; it is always 23806guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 23807define a complete mapping.<wbr/> For input values between control points,<wbr/> 23808the camera device must linearly interpolate between the control 23809points.<wbr/></p> 23810<p>Each curve can have an independent number of points,<wbr/> and the number 23811of points can be less than max (that is,<wbr/> the request doesn't have to 23812always provide a curve with number of points equivalent to 23813<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 23814<p>A few examples,<wbr/> and their corresponding graphical mappings; these 23815only specify the red channel and the precision is limited to 4 23816digits,<wbr/> for conciseness.<wbr/></p> 23817<p>Linear mapping:</p> 23818<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 23819</code></pre> 23820<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 23821<p>Invert mapping:</p> 23822<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 23823</code></pre> 23824<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 23825<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 23826<pre><code>curveRed = [ 23827 (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/> 23828 (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/> 23829 (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/> 23830 (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) ] 23831</code></pre> 23832<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 23833<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 23834<pre><code>curveRed = [ 23835 (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/> 23836 (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/> 23837 (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/> 23838 (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) ] 23839</code></pre> 23840<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 23841 </td> 23842 </tr> 23843 23844 <tr class="entries_header"> 23845 <th class="th_details" colspan="5">HAL Implementation Details</th> 23846 </tr> 23847 <tr class="entry_cont"> 23848 <td class="entry_details" colspan="5"> 23849 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 23850curveBlue entries.<wbr/></p> 23851 </td> 23852 </tr> 23853 23854 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23855 <!-- end of entry --> 23856 23857 23858 <tr class="entry" id="controls_android.tonemap.mode"> 23859 <td class="entry_name 23860 " rowspan="3"> 23861 android.<wbr/>tonemap.<wbr/>mode 23862 </td> 23863 <td class="entry_type"> 23864 <span class="entry_type_name entry_type_name_enum">byte</span> 23865 23866 <span class="entry_type_visibility"> [public]</span> 23867 23868 23869 <span class="entry_type_hwlevel">[full] </span> 23870 23871 23872 23873 <ul class="entry_type_enum"> 23874 <li> 23875 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 23876 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 23877the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 23878<p>All color enhancement and tonemapping must be disabled,<wbr/> except 23879for applying the tonemapping curve specified by 23880<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 23881<p>Must not slow down frame rate relative to raw 23882sensor output.<wbr/></p></span> 23883 </li> 23884 <li> 23885 <span class="entry_type_enum_name">FAST</span> 23886 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 23887reducing frame rate compared to raw sensor output.<wbr/></p></span> 23888 </li> 23889 <li> 23890 <span class="entry_type_enum_name">HIGH_QUALITY</span> 23891 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 23892the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 23893 </li> 23894 <li> 23895 <span class="entry_type_enum_name">GAMMA_VALUE</span> 23896 <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 23897tonemapping.<wbr/></p> 23898<p>All color enhancement and tonemapping must be disabled,<wbr/> except 23899for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 23900<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 23901 </li> 23902 <li> 23903 <span class="entry_type_enum_name">PRESET_CURVE</span> 23904 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 23905<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 23906<p>All color enhancement and tonemapping must be disabled,<wbr/> except 23907for applying the tonemapping curve specified by 23908<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 23909<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 23910 </li> 23911 </ul> 23912 23913 </td> <!-- entry_type --> 23914 23915 <td class="entry_description"> 23916 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 23917 </td> 23918 23919 <td class="entry_units"> 23920 </td> 23921 23922 <td class="entry_range"> 23923 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 23924 </td> 23925 23926 <td class="entry_tags"> 23927 </td> 23928 23929 </tr> 23930 <tr class="entries_header"> 23931 <th class="th_details" colspan="5">Details</th> 23932 </tr> 23933 <tr class="entry_cont"> 23934 <td class="entry_details" colspan="5"> 23935 <p>When switching to an application-defined contrast curve by setting 23936<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 23937per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 23938mapping from input high-bit-depth pixel value to the output 23939low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 23940and output may change depending on the camera pipeline,<wbr/> the values 23941are specified by normalized floating-point numbers.<wbr/></p> 23942<p>More-complex color mapping operations such as 3D color look-up 23943tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 23944transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23945CONTRAST_<wbr/>CURVE.<wbr/></p> 23946<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 23947emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 23948These values are always available,<wbr/> and as close as possible to the 23949actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 23950<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 23951provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 23952roughly the same.<wbr/></p> 23953 </td> 23954 </tr> 23955 23956 23957 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23958 <!-- end of entry --> 23959 23960 23961 <tr class="entry" id="controls_android.tonemap.gamma"> 23962 <td class="entry_name 23963 " rowspan="3"> 23964 android.<wbr/>tonemap.<wbr/>gamma 23965 </td> 23966 <td class="entry_type"> 23967 <span class="entry_type_name">float</span> 23968 23969 <span class="entry_type_visibility"> [public]</span> 23970 23971 23972 23973 23974 23975 23976 </td> <!-- entry_type --> 23977 23978 <td class="entry_description"> 23979 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23980GAMMA_<wbr/>VALUE</p> 23981 </td> 23982 23983 <td class="entry_units"> 23984 </td> 23985 23986 <td class="entry_range"> 23987 </td> 23988 23989 <td class="entry_tags"> 23990 </td> 23991 23992 </tr> 23993 <tr class="entries_header"> 23994 <th class="th_details" colspan="5">Details</th> 23995 </tr> 23996 <tr class="entry_cont"> 23997 <td class="entry_details" colspan="5"> 23998 <p>The tonemap curve will be defined the following formula: 23999* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 24000where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 24001pow is the power function and gamma is the gamma value specified by this 24002key.<wbr/></p> 24003<p>The same curve will be applied to all color channels.<wbr/> The camera device 24004may clip the input gamma value to its supported range.<wbr/> The actual applied 24005value will be returned in capture result.<wbr/></p> 24006<p>The valid range of gamma value varies on different devices,<wbr/> but values 24007within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 24008 </td> 24009 </tr> 24010 24011 24012 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24013 <!-- end of entry --> 24014 24015 24016 <tr class="entry" id="controls_android.tonemap.presetCurve"> 24017 <td class="entry_name 24018 " rowspan="3"> 24019 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 24020 </td> 24021 <td class="entry_type"> 24022 <span class="entry_type_name entry_type_name_enum">byte</span> 24023 24024 <span class="entry_type_visibility"> [public]</span> 24025 24026 24027 24028 24029 24030 <ul class="entry_type_enum"> 24031 <li> 24032 <span class="entry_type_enum_name">SRGB</span> 24033 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 24034 </li> 24035 <li> 24036 <span class="entry_type_enum_name">REC709</span> 24037 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 24038 </li> 24039 </ul> 24040 24041 </td> <!-- entry_type --> 24042 24043 <td class="entry_description"> 24044 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24045PRESET_<wbr/>CURVE</p> 24046 </td> 24047 24048 <td class="entry_units"> 24049 </td> 24050 24051 <td class="entry_range"> 24052 </td> 24053 24054 <td class="entry_tags"> 24055 </td> 24056 24057 </tr> 24058 <tr class="entries_header"> 24059 <th class="th_details" colspan="5">Details</th> 24060 </tr> 24061 <tr class="entry_cont"> 24062 <td class="entry_details" colspan="5"> 24063 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 24064<p>sRGB (approximated by 16 control points):</p> 24065<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24066<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 24067<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 24068<p>Note that above figures show a 16 control points approximation of preset 24069curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 24070 </td> 24071 </tr> 24072 24073 24074 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24075 <!-- end of entry --> 24076 24077 24078 24079 <!-- end of kind --> 24080 </tbody> 24081 <tr><td colspan="6" class="kind">static</td></tr> 24082 24083 <thead class="entries_header"> 24084 <tr> 24085 <th class="th_name">Property Name</th> 24086 <th class="th_type">Type</th> 24087 <th class="th_description">Description</th> 24088 <th class="th_units">Units</th> 24089 <th class="th_range">Range</th> 24090 <th class="th_tags">Tags</th> 24091 </tr> 24092 </thead> 24093 24094 <tbody> 24095 24096 24097 24098 24099 24100 24101 24102 24103 24104 24105 <tr class="entry" id="static_android.tonemap.maxCurvePoints"> 24106 <td class="entry_name 24107 " rowspan="5"> 24108 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points 24109 </td> 24110 <td class="entry_type"> 24111 <span class="entry_type_name">int32</span> 24112 24113 <span class="entry_type_visibility"> [public]</span> 24114 24115 24116 <span class="entry_type_hwlevel">[full] </span> 24117 24118 24119 24120 24121 </td> <!-- entry_type --> 24122 24123 <td class="entry_description"> 24124 <p>Maximum number of supported points in the 24125tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 24126 </td> 24127 24128 <td class="entry_units"> 24129 </td> 24130 24131 <td class="entry_range"> 24132 </td> 24133 24134 <td class="entry_tags"> 24135 </td> 24136 24137 </tr> 24138 <tr class="entries_header"> 24139 <th class="th_details" colspan="5">Details</th> 24140 </tr> 24141 <tr class="entry_cont"> 24142 <td class="entry_details" colspan="5"> 24143 <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 24144less than this maximum,<wbr/> the camera device will resample the curve to its internal 24145representation,<wbr/> using linear interpolation.<wbr/></p> 24146<p>The output curves in the result metadata may have a different number 24147of points than the input curves,<wbr/> and will represent the actual 24148hardware curves used as closely as possible when linearly interpolated.<wbr/></p> 24149 </td> 24150 </tr> 24151 24152 <tr class="entries_header"> 24153 <th class="th_details" colspan="5">HAL Implementation Details</th> 24154 </tr> 24155 <tr class="entry_cont"> 24156 <td class="entry_details" colspan="5"> 24157 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p> 24158 </td> 24159 </tr> 24160 24161 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24162 <!-- end of entry --> 24163 24164 24165 <tr class="entry" id="static_android.tonemap.availableToneMapModes"> 24166 <td class="entry_name 24167 " rowspan="5"> 24168 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes 24169 </td> 24170 <td class="entry_type"> 24171 <span class="entry_type_name">byte</span> 24172 <span class="entry_type_container">x</span> 24173 24174 <span class="entry_type_array"> 24175 n 24176 </span> 24177 <span class="entry_type_visibility"> [public as enumList]</span> 24178 24179 24180 <span class="entry_type_hwlevel">[full] </span> 24181 24182 24183 <div class="entry_type_notes">list of enums</div> 24184 24185 24186 </td> <!-- entry_type --> 24187 24188 <td class="entry_description"> 24189 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera 24190device.<wbr/></p> 24191 </td> 24192 24193 <td class="entry_units"> 24194 </td> 24195 24196 <td class="entry_range"> 24197 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p> 24198 </td> 24199 24200 <td class="entry_tags"> 24201 </td> 24202 24203 </tr> 24204 <tr class="entries_header"> 24205 <th class="th_details" colspan="5">Details</th> 24206 </tr> 24207 <tr class="entry_cont"> 24208 <td class="entry_details" colspan="5"> 24209 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain 24210at least one of below mode combinations:</p> 24211<ul> 24212<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 24213<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 24214</ul> 24215<p>This includes all FULL level devices.<wbr/></p> 24216 </td> 24217 </tr> 24218 24219 <tr class="entries_header"> 24220 <th class="th_details" colspan="5">HAL Implementation Details</th> 24221 </tr> 24222 <tr class="entry_cont"> 24223 <td class="entry_details" colspan="5"> 24224 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available 24225on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 24226That is,<wbr/> if the highest quality implementation on the camera device does not slow down 24227capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 24228 </td> 24229 </tr> 24230 24231 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24232 <!-- end of entry --> 24233 24234 24235 24236 <!-- end of kind --> 24237 </tbody> 24238 <tr><td colspan="6" class="kind">dynamic</td></tr> 24239 24240 <thead class="entries_header"> 24241 <tr> 24242 <th class="th_name">Property Name</th> 24243 <th class="th_type">Type</th> 24244 <th class="th_description">Description</th> 24245 <th class="th_units">Units</th> 24246 <th class="th_range">Range</th> 24247 <th class="th_tags">Tags</th> 24248 </tr> 24249 </thead> 24250 24251 <tbody> 24252 24253 24254 24255 24256 24257 24258 24259 24260 24261 24262 <tr class="entry" id="dynamic_android.tonemap.curveBlue"> 24263 <td class="entry_name 24264 " rowspan="3"> 24265 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 24266 </td> 24267 <td class="entry_type"> 24268 <span class="entry_type_name">float</span> 24269 <span class="entry_type_container">x</span> 24270 24271 <span class="entry_type_array"> 24272 n x 2 24273 </span> 24274 <span class="entry_type_visibility"> [hidden]</span> 24275 24276 24277 <span class="entry_type_hwlevel">[full] </span> 24278 24279 24280 <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> 24281 24282 24283 </td> <!-- entry_type --> 24284 24285 <td class="entry_description"> 24286 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 24287channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24288CONTRAST_<wbr/>CURVE.<wbr/></p> 24289 </td> 24290 24291 <td class="entry_units"> 24292 </td> 24293 24294 <td class="entry_range"> 24295 </td> 24296 24297 <td class="entry_tags"> 24298 </td> 24299 24300 </tr> 24301 <tr class="entries_header"> 24302 <th class="th_details" colspan="5">Details</th> 24303 </tr> 24304 <tr class="entry_cont"> 24305 <td class="entry_details" colspan="5"> 24306 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 24307 </td> 24308 </tr> 24309 24310 24311 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24312 <!-- end of entry --> 24313 24314 24315 <tr class="entry" id="dynamic_android.tonemap.curveGreen"> 24316 <td class="entry_name 24317 " rowspan="3"> 24318 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 24319 </td> 24320 <td class="entry_type"> 24321 <span class="entry_type_name">float</span> 24322 <span class="entry_type_container">x</span> 24323 24324 <span class="entry_type_array"> 24325 n x 2 24326 </span> 24327 <span class="entry_type_visibility"> [hidden]</span> 24328 24329 24330 <span class="entry_type_hwlevel">[full] </span> 24331 24332 24333 <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> 24334 24335 24336 </td> <!-- entry_type --> 24337 24338 <td class="entry_description"> 24339 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 24340channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24341CONTRAST_<wbr/>CURVE.<wbr/></p> 24342 </td> 24343 24344 <td class="entry_units"> 24345 </td> 24346 24347 <td class="entry_range"> 24348 </td> 24349 24350 <td class="entry_tags"> 24351 </td> 24352 24353 </tr> 24354 <tr class="entries_header"> 24355 <th class="th_details" colspan="5">Details</th> 24356 </tr> 24357 <tr class="entry_cont"> 24358 <td class="entry_details" colspan="5"> 24359 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 24360 </td> 24361 </tr> 24362 24363 24364 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24365 <!-- end of entry --> 24366 24367 24368 <tr class="entry" id="dynamic_android.tonemap.curveRed"> 24369 <td class="entry_name 24370 " rowspan="5"> 24371 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 24372 </td> 24373 <td class="entry_type"> 24374 <span class="entry_type_name">float</span> 24375 <span class="entry_type_container">x</span> 24376 24377 <span class="entry_type_array"> 24378 n x 2 24379 </span> 24380 <span class="entry_type_visibility"> [hidden]</span> 24381 24382 24383 <span class="entry_type_hwlevel">[full] </span> 24384 24385 24386 <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> 24387 24388 24389 </td> <!-- entry_type --> 24390 24391 <td class="entry_description"> 24392 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 24393channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24394CONTRAST_<wbr/>CURVE.<wbr/></p> 24395 </td> 24396 24397 <td class="entry_units"> 24398 </td> 24399 24400 <td class="entry_range"> 24401 <p>0-1 on both input and output coordinates,<wbr/> normalized 24402as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 24403 </td> 24404 24405 <td class="entry_tags"> 24406 </td> 24407 24408 </tr> 24409 <tr class="entries_header"> 24410 <th class="th_details" colspan="5">Details</th> 24411 </tr> 24412 <tr class="entry_cont"> 24413 <td class="entry_details" colspan="5"> 24414 <p>Each channel's curve is defined by an array of control points:</p> 24415<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 24416 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 244172 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 24418<p>These are sorted in order of increasing <code>Pin</code>; it is 24419required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 24420define a complete mapping.<wbr/> For input values between control points,<wbr/> 24421the camera device must linearly interpolate between the control 24422points.<wbr/></p> 24423<p>Each curve can have an independent number of points,<wbr/> and the number 24424of points can be less than max (that is,<wbr/> the request doesn't have to 24425always provide a curve with number of points equivalent to 24426<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 24427<p>A few examples,<wbr/> and their corresponding graphical mappings; these 24428only specify the red channel and the precision is limited to 4 24429digits,<wbr/> for conciseness.<wbr/></p> 24430<p>Linear mapping:</p> 24431<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 ] 24432</code></pre> 24433<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 24434<p>Invert mapping:</p> 24435<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 ] 24436</code></pre> 24437<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 24438<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 24439<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 24440 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/> 24441 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/> 24442 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/> 24443 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 ] 24444</code></pre> 24445<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 24446<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 24447<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 24448 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/> 24449 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/> 24450 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/> 24451 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 ] 24452</code></pre> 24453<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24454 </td> 24455 </tr> 24456 24457 <tr class="entries_header"> 24458 <th class="th_details" colspan="5">HAL Implementation Details</th> 24459 </tr> 24460 <tr class="entry_cont"> 24461 <td class="entry_details" colspan="5"> 24462 <p>For good quality of mapping,<wbr/> at least 128 control points are 24463preferred.<wbr/></p> 24464<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 24465control points used as are available.<wbr/></p> 24466 </td> 24467 </tr> 24468 24469 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24470 <!-- end of entry --> 24471 24472 24473 <tr class="entry" id="dynamic_android.tonemap.curve"> 24474 <td class="entry_name 24475 " rowspan="5"> 24476 android.<wbr/>tonemap.<wbr/>curve 24477 </td> 24478 <td class="entry_type"> 24479 <span class="entry_type_name">float</span> 24480 24481 <span class="entry_type_visibility"> [public as tonemapCurve]</span> 24482 24483 <span class="entry_type_synthetic">[synthetic] </span> 24484 24485 <span class="entry_type_hwlevel">[full] </span> 24486 24487 24488 24489 24490 </td> <!-- entry_type --> 24491 24492 <td class="entry_description"> 24493 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 24494is CONTRAST_<wbr/>CURVE.<wbr/></p> 24495 </td> 24496 24497 <td class="entry_units"> 24498 </td> 24499 24500 <td class="entry_range"> 24501 </td> 24502 24503 <td class="entry_tags"> 24504 </td> 24505 24506 </tr> 24507 <tr class="entries_header"> 24508 <th class="th_details" colspan="5">Details</th> 24509 </tr> 24510 <tr class="entry_cont"> 24511 <td class="entry_details" colspan="5"> 24512 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 24513channels respectively.<wbr/> The following example uses the red channel as an 24514example.<wbr/> The same logic applies to green and blue channel.<wbr/> 24515Each channel's curve is defined by an array of control points:</p> 24516<pre><code>curveRed = 24517 [ 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) ] 245182 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 24519<p>These are sorted in order of increasing <code>Pin</code>; it is always 24520guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 24521define a complete mapping.<wbr/> For input values between control points,<wbr/> 24522the camera device must linearly interpolate between the control 24523points.<wbr/></p> 24524<p>Each curve can have an independent number of points,<wbr/> and the number 24525of points can be less than max (that is,<wbr/> the request doesn't have to 24526always provide a curve with number of points equivalent to 24527<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 24528<p>A few examples,<wbr/> and their corresponding graphical mappings; these 24529only specify the red channel and the precision is limited to 4 24530digits,<wbr/> for conciseness.<wbr/></p> 24531<p>Linear mapping:</p> 24532<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 24533</code></pre> 24534<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 24535<p>Invert mapping:</p> 24536<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 24537</code></pre> 24538<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 24539<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 24540<pre><code>curveRed = [ 24541 (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/> 24542 (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/> 24543 (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/> 24544 (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) ] 24545</code></pre> 24546<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 24547<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 24548<pre><code>curveRed = [ 24549 (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/> 24550 (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/> 24551 (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/> 24552 (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) ] 24553</code></pre> 24554<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24555 </td> 24556 </tr> 24557 24558 <tr class="entries_header"> 24559 <th class="th_details" colspan="5">HAL Implementation Details</th> 24560 </tr> 24561 <tr class="entry_cont"> 24562 <td class="entry_details" colspan="5"> 24563 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 24564curveBlue entries.<wbr/></p> 24565 </td> 24566 </tr> 24567 24568 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24569 <!-- end of entry --> 24570 24571 24572 <tr class="entry" id="dynamic_android.tonemap.mode"> 24573 <td class="entry_name 24574 " rowspan="3"> 24575 android.<wbr/>tonemap.<wbr/>mode 24576 </td> 24577 <td class="entry_type"> 24578 <span class="entry_type_name entry_type_name_enum">byte</span> 24579 24580 <span class="entry_type_visibility"> [public]</span> 24581 24582 24583 <span class="entry_type_hwlevel">[full] </span> 24584 24585 24586 24587 <ul class="entry_type_enum"> 24588 <li> 24589 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 24590 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 24591the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 24592<p>All color enhancement and tonemapping must be disabled,<wbr/> except 24593for applying the tonemapping curve specified by 24594<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 24595<p>Must not slow down frame rate relative to raw 24596sensor output.<wbr/></p></span> 24597 </li> 24598 <li> 24599 <span class="entry_type_enum_name">FAST</span> 24600 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 24601reducing frame rate compared to raw sensor output.<wbr/></p></span> 24602 </li> 24603 <li> 24604 <span class="entry_type_enum_name">HIGH_QUALITY</span> 24605 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 24606the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 24607 </li> 24608 <li> 24609 <span class="entry_type_enum_name">GAMMA_VALUE</span> 24610 <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 24611tonemapping.<wbr/></p> 24612<p>All color enhancement and tonemapping must be disabled,<wbr/> except 24613for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 24614<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 24615 </li> 24616 <li> 24617 <span class="entry_type_enum_name">PRESET_CURVE</span> 24618 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 24619<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 24620<p>All color enhancement and tonemapping must be disabled,<wbr/> except 24621for applying the tonemapping curve specified by 24622<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 24623<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 24624 </li> 24625 </ul> 24626 24627 </td> <!-- entry_type --> 24628 24629 <td class="entry_description"> 24630 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 24631 </td> 24632 24633 <td class="entry_units"> 24634 </td> 24635 24636 <td class="entry_range"> 24637 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 24638 </td> 24639 24640 <td class="entry_tags"> 24641 </td> 24642 24643 </tr> 24644 <tr class="entries_header"> 24645 <th class="th_details" colspan="5">Details</th> 24646 </tr> 24647 <tr class="entry_cont"> 24648 <td class="entry_details" colspan="5"> 24649 <p>When switching to an application-defined contrast curve by setting 24650<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 24651per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 24652mapping from input high-bit-depth pixel value to the output 24653low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 24654and output may change depending on the camera pipeline,<wbr/> the values 24655are specified by normalized floating-point numbers.<wbr/></p> 24656<p>More-complex color mapping operations such as 3D color look-up 24657tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 24658transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24659CONTRAST_<wbr/>CURVE.<wbr/></p> 24660<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 24661emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 24662These values are always available,<wbr/> and as close as possible to the 24663actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 24664<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 24665provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 24666roughly the same.<wbr/></p> 24667 </td> 24668 </tr> 24669 24670 24671 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24672 <!-- end of entry --> 24673 24674 24675 <tr class="entry" id="dynamic_android.tonemap.gamma"> 24676 <td class="entry_name 24677 " rowspan="3"> 24678 android.<wbr/>tonemap.<wbr/>gamma 24679 </td> 24680 <td class="entry_type"> 24681 <span class="entry_type_name">float</span> 24682 24683 <span class="entry_type_visibility"> [public]</span> 24684 24685 24686 24687 24688 24689 24690 </td> <!-- entry_type --> 24691 24692 <td class="entry_description"> 24693 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24694GAMMA_<wbr/>VALUE</p> 24695 </td> 24696 24697 <td class="entry_units"> 24698 </td> 24699 24700 <td class="entry_range"> 24701 </td> 24702 24703 <td class="entry_tags"> 24704 </td> 24705 24706 </tr> 24707 <tr class="entries_header"> 24708 <th class="th_details" colspan="5">Details</th> 24709 </tr> 24710 <tr class="entry_cont"> 24711 <td class="entry_details" colspan="5"> 24712 <p>The tonemap curve will be defined the following formula: 24713* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 24714where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 24715pow is the power function and gamma is the gamma value specified by this 24716key.<wbr/></p> 24717<p>The same curve will be applied to all color channels.<wbr/> The camera device 24718may clip the input gamma value to its supported range.<wbr/> The actual applied 24719value will be returned in capture result.<wbr/></p> 24720<p>The valid range of gamma value varies on different devices,<wbr/> but values 24721within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 24722 </td> 24723 </tr> 24724 24725 24726 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24727 <!-- end of entry --> 24728 24729 24730 <tr class="entry" id="dynamic_android.tonemap.presetCurve"> 24731 <td class="entry_name 24732 " rowspan="3"> 24733 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 24734 </td> 24735 <td class="entry_type"> 24736 <span class="entry_type_name entry_type_name_enum">byte</span> 24737 24738 <span class="entry_type_visibility"> [public]</span> 24739 24740 24741 24742 24743 24744 <ul class="entry_type_enum"> 24745 <li> 24746 <span class="entry_type_enum_name">SRGB</span> 24747 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 24748 </li> 24749 <li> 24750 <span class="entry_type_enum_name">REC709</span> 24751 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 24752 </li> 24753 </ul> 24754 24755 </td> <!-- entry_type --> 24756 24757 <td class="entry_description"> 24758 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24759PRESET_<wbr/>CURVE</p> 24760 </td> 24761 24762 <td class="entry_units"> 24763 </td> 24764 24765 <td class="entry_range"> 24766 </td> 24767 24768 <td class="entry_tags"> 24769 </td> 24770 24771 </tr> 24772 <tr class="entries_header"> 24773 <th class="th_details" colspan="5">Details</th> 24774 </tr> 24775 <tr class="entry_cont"> 24776 <td class="entry_details" colspan="5"> 24777 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 24778<p>sRGB (approximated by 16 control points):</p> 24779<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24780<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 24781<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 24782<p>Note that above figures show a 16 control points approximation of preset 24783curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 24784 </td> 24785 </tr> 24786 24787 24788 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24789 <!-- end of entry --> 24790 24791 24792 24793 <!-- end of kind --> 24794 </tbody> 24795 24796 <!-- end of section --> 24797 <tr><td colspan="6" id="section_led" class="section">led</td></tr> 24798 24799 24800 <tr><td colspan="6" class="kind">controls</td></tr> 24801 24802 <thead class="entries_header"> 24803 <tr> 24804 <th class="th_name">Property Name</th> 24805 <th class="th_type">Type</th> 24806 <th class="th_description">Description</th> 24807 <th class="th_units">Units</th> 24808 <th class="th_range">Range</th> 24809 <th class="th_tags">Tags</th> 24810 </tr> 24811 </thead> 24812 24813 <tbody> 24814 24815 24816 24817 24818 24819 24820 24821 24822 24823 24824 <tr class="entry" id="controls_android.led.transmit"> 24825 <td class="entry_name 24826 " rowspan="1"> 24827 android.<wbr/>led.<wbr/>transmit 24828 </td> 24829 <td class="entry_type"> 24830 <span class="entry_type_name entry_type_name_enum">byte</span> 24831 24832 <span class="entry_type_visibility"> [hidden as boolean]</span> 24833 24834 24835 24836 24837 24838 <ul class="entry_type_enum"> 24839 <li> 24840 <span class="entry_type_enum_name">OFF</span> 24841 </li> 24842 <li> 24843 <span class="entry_type_enum_name">ON</span> 24844 </li> 24845 </ul> 24846 24847 </td> <!-- entry_type --> 24848 24849 <td class="entry_description"> 24850 <p>This LED is nominally used to indicate to the user 24851that the camera is powered on and may be streaming images back to the 24852Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 24853disable this when video is processed locally and not transmitted to 24854any untrusted applications.<wbr/></p> 24855<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 24856transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 24857data is stored locally on the device.<wbr/></p> 24858<p>The LED <em>may</em> be off if a trusted application is using the data that 24859doesn't violate the above rules.<wbr/></p> 24860 </td> 24861 24862 <td class="entry_units"> 24863 </td> 24864 24865 <td class="entry_range"> 24866 </td> 24867 24868 <td class="entry_tags"> 24869 </td> 24870 24871 </tr> 24872 24873 24874 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24875 <!-- end of entry --> 24876 24877 24878 24879 <!-- end of kind --> 24880 </tbody> 24881 <tr><td colspan="6" class="kind">dynamic</td></tr> 24882 24883 <thead class="entries_header"> 24884 <tr> 24885 <th class="th_name">Property Name</th> 24886 <th class="th_type">Type</th> 24887 <th class="th_description">Description</th> 24888 <th class="th_units">Units</th> 24889 <th class="th_range">Range</th> 24890 <th class="th_tags">Tags</th> 24891 </tr> 24892 </thead> 24893 24894 <tbody> 24895 24896 24897 24898 24899 24900 24901 24902 24903 24904 24905 <tr class="entry" id="dynamic_android.led.transmit"> 24906 <td class="entry_name 24907 " rowspan="1"> 24908 android.<wbr/>led.<wbr/>transmit 24909 </td> 24910 <td class="entry_type"> 24911 <span class="entry_type_name entry_type_name_enum">byte</span> 24912 24913 <span class="entry_type_visibility"> [hidden as boolean]</span> 24914 24915 24916 24917 24918 24919 <ul class="entry_type_enum"> 24920 <li> 24921 <span class="entry_type_enum_name">OFF</span> 24922 </li> 24923 <li> 24924 <span class="entry_type_enum_name">ON</span> 24925 </li> 24926 </ul> 24927 24928 </td> <!-- entry_type --> 24929 24930 <td class="entry_description"> 24931 <p>This LED is nominally used to indicate to the user 24932that the camera is powered on and may be streaming images back to the 24933Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 24934disable this when video is processed locally and not transmitted to 24935any untrusted applications.<wbr/></p> 24936<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 24937transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 24938data is stored locally on the device.<wbr/></p> 24939<p>The LED <em>may</em> be off if a trusted application is using the data that 24940doesn't violate the above rules.<wbr/></p> 24941 </td> 24942 24943 <td class="entry_units"> 24944 </td> 24945 24946 <td class="entry_range"> 24947 </td> 24948 24949 <td class="entry_tags"> 24950 </td> 24951 24952 </tr> 24953 24954 24955 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24956 <!-- end of entry --> 24957 24958 24959 24960 <!-- end of kind --> 24961 </tbody> 24962 <tr><td colspan="6" class="kind">static</td></tr> 24963 24964 <thead class="entries_header"> 24965 <tr> 24966 <th class="th_name">Property Name</th> 24967 <th class="th_type">Type</th> 24968 <th class="th_description">Description</th> 24969 <th class="th_units">Units</th> 24970 <th class="th_range">Range</th> 24971 <th class="th_tags">Tags</th> 24972 </tr> 24973 </thead> 24974 24975 <tbody> 24976 24977 24978 24979 24980 24981 24982 24983 24984 24985 24986 <tr class="entry" id="static_android.led.availableLeds"> 24987 <td class="entry_name 24988 " rowspan="1"> 24989 android.<wbr/>led.<wbr/>available<wbr/>Leds 24990 </td> 24991 <td class="entry_type"> 24992 <span class="entry_type_name entry_type_name_enum">byte</span> 24993 <span class="entry_type_container">x</span> 24994 24995 <span class="entry_type_array"> 24996 n 24997 </span> 24998 <span class="entry_type_visibility"> [hidden]</span> 24999 25000 25001 25002 25003 25004 <ul class="entry_type_enum"> 25005 <li> 25006 <span class="entry_type_enum_name">TRANSMIT</span> 25007 <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> 25008 </li> 25009 </ul> 25010 25011 </td> <!-- entry_type --> 25012 25013 <td class="entry_description"> 25014 <p>A list of camera LEDs that are available on this system.<wbr/></p> 25015 </td> 25016 25017 <td class="entry_units"> 25018 </td> 25019 25020 <td class="entry_range"> 25021 </td> 25022 25023 <td class="entry_tags"> 25024 </td> 25025 25026 </tr> 25027 25028 25029 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25030 <!-- end of entry --> 25031 25032 25033 25034 <!-- end of kind --> 25035 </tbody> 25036 25037 <!-- end of section --> 25038 <tr><td colspan="6" id="section_info" class="section">info</td></tr> 25039 25040 25041 <tr><td colspan="6" class="kind">static</td></tr> 25042 25043 <thead class="entries_header"> 25044 <tr> 25045 <th class="th_name">Property Name</th> 25046 <th class="th_type">Type</th> 25047 <th class="th_description">Description</th> 25048 <th class="th_units">Units</th> 25049 <th class="th_range">Range</th> 25050 <th class="th_tags">Tags</th> 25051 </tr> 25052 </thead> 25053 25054 <tbody> 25055 25056 25057 25058 25059 25060 25061 25062 25063 25064 25065 <tr class="entry" id="static_android.info.supportedHardwareLevel"> 25066 <td class="entry_name 25067 " rowspan="5"> 25068 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level 25069 </td> 25070 <td class="entry_type"> 25071 <span class="entry_type_name entry_type_name_enum">byte</span> 25072 25073 <span class="entry_type_visibility"> [public]</span> 25074 25075 25076 <span class="entry_type_hwlevel">[legacy] </span> 25077 25078 25079 25080 <ul class="entry_type_enum"> 25081 <li> 25082 <span class="entry_type_enum_name">LIMITED</span> 25083 <span class="entry_type_enum_notes"><p>This camera device has only limited capabilities.<wbr/></p></span> 25084 </li> 25085 <li> 25086 <span class="entry_type_enum_name">FULL</span> 25087 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p></span> 25088 </li> 25089 <li> 25090 <span class="entry_type_enum_name">LEGACY</span> 25091 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p></span> 25092 </li> 25093 </ul> 25094 25095 </td> <!-- entry_type --> 25096 25097 <td class="entry_description"> 25098 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p> 25099 </td> 25100 25101 <td class="entry_units"> 25102 </td> 25103 25104 <td class="entry_range"> 25105 </td> 25106 25107 <td class="entry_tags"> 25108 </td> 25109 25110 </tr> 25111 <tr class="entries_header"> 25112 <th class="th_details" colspan="5">Details</th> 25113 </tr> 25114 <tr class="entry_cont"> 25115 <td class="entry_details" colspan="5"> 25116 <p>Camera devices will come in three flavors: LEGACY,<wbr/> LIMITED and FULL.<wbr/></p> 25117<p>A FULL device will support below capabilities:</p> 25118<ul> 25119<li>BURST_<wbr/>CAPTURE capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains BURST_<wbr/>CAPTURE)</li> 25120<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> 25121<li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR)</li> 25122<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 25123 MANUAL_<wbr/>POST_<wbr/>PROCESSING)</li> 25124<li>At least 3 processed (but not stalling) format output streams 25125 (<a href="#static_android.request.maxNumOutputProc">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc</a> <code>>=</code> 3)</li> 25126<li>The required stream configurations defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a></li> 25127<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> 25128<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> 25129</ul> 25130<p>A LIMITED device may have some or none of the above characteristics.<wbr/> 25131To find out more refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 25132<p>Some features are not part of any particular hardware level or capability and must be 25133queried separately.<wbr/> These include:</p> 25134<ul> 25135<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li> 25136<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> 25137<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> 25138<li>Optical or electrical image stabilization 25139 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/> 25140 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li> 25141</ul> 25142<p>A LEGACY device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual 25143post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/></p> 25144<p>Each higher level supports everything the lower level supports 25145in this order: FULL <code>></code> LIMITED <code>></code> LEGACY.<wbr/></p> 25146<p>Note: 25147Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region 25148(<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/> 25149and FULL devices may only support CENTERED cropping.<wbr/></p> 25150 </td> 25151 </tr> 25152 25153 <tr class="entries_header"> 25154 <th class="th_details" colspan="5">HAL Implementation Details</th> 25155 </tr> 25156 <tr class="entry_cont"> 25157 <td class="entry_details" colspan="5"> 25158 <p>The camera 3 HAL device can implement one of two possible 25159operational modes; limited and full.<wbr/> Full support is 25160expected from new higher-end devices.<wbr/> Limited mode has 25161hardware requirements roughly in line with those for a 25162camera HAL device v1 implementation,<wbr/> and is expected from 25163older or inexpensive devices.<wbr/> Full is a strict superset of 25164limited,<wbr/> and they share the same essential operational flow.<wbr/></p> 25165<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p> 25166<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there 25167for backwards compatibility in the <code>android.<wbr/>hardware.<wbr/>camera2</code> 25168user-facing API only.<wbr/></p> 25169 </td> 25170 </tr> 25171 25172 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25173 <!-- end of entry --> 25174 25175 25176 25177 <!-- end of kind --> 25178 </tbody> 25179 25180 <!-- end of section --> 25181 <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr> 25182 25183 25184 <tr><td colspan="6" class="kind">controls</td></tr> 25185 25186 <thead class="entries_header"> 25187 <tr> 25188 <th class="th_name">Property Name</th> 25189 <th class="th_type">Type</th> 25190 <th class="th_description">Description</th> 25191 <th class="th_units">Units</th> 25192 <th class="th_range">Range</th> 25193 <th class="th_tags">Tags</th> 25194 </tr> 25195 </thead> 25196 25197 <tbody> 25198 25199 25200 25201 25202 25203 25204 25205 25206 25207 25208 <tr class="entry" id="controls_android.blackLevel.lock"> 25209 <td class="entry_name 25210 " rowspan="5"> 25211 android.<wbr/>black<wbr/>Level.<wbr/>lock 25212 </td> 25213 <td class="entry_type"> 25214 <span class="entry_type_name entry_type_name_enum">byte</span> 25215 25216 <span class="entry_type_visibility"> [public as boolean]</span> 25217 25218 25219 <span class="entry_type_hwlevel">[full] </span> 25220 25221 25222 25223 <ul class="entry_type_enum"> 25224 <li> 25225 <span class="entry_type_enum_name">OFF</span> 25226 </li> 25227 <li> 25228 <span class="entry_type_enum_name">ON</span> 25229 </li> 25230 </ul> 25231 25232 </td> <!-- entry_type --> 25233 25234 <td class="entry_description"> 25235 <p>Whether black-level compensation is locked 25236to its current values,<wbr/> or is free to vary.<wbr/></p> 25237 </td> 25238 25239 <td class="entry_units"> 25240 </td> 25241 25242 <td class="entry_range"> 25243 </td> 25244 25245 <td class="entry_tags"> 25246 <ul class="entry_tags"> 25247 <li><a href="#tag_HAL2">HAL2</a></li> 25248 </ul> 25249 </td> 25250 25251 </tr> 25252 <tr class="entries_header"> 25253 <th class="th_details" colspan="5">Details</th> 25254 </tr> 25255 <tr class="entry_cont"> 25256 <td class="entry_details" colspan="5"> 25257 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level 25258compensation will not change until the lock is set to 25259<code>false</code> (OFF).<wbr/></p> 25260<p>Since changes to certain capture parameters (such as 25261exposure time) may require resetting of black level 25262compensation,<wbr/> the camera device must report whether setting 25263the black level lock was successful in the output result 25264metadata.<wbr/></p> 25265<p>For example,<wbr/> if a sequence of requests is as follows:</p> 25266<ul> 25267<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 25268<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 25269<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 25270<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25271<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25272<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25273</ul> 25274<p>And the exposure change in Request 4 requires the camera 25275device to reset the black level offsets,<wbr/> then the output 25276result metadata is expected to be:</p> 25277<ul> 25278<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 25279<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 25280<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 25281<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li> 25282<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25283<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25284</ul> 25285<p>This indicates to the application that on frame 4,<wbr/> black 25286levels were reset due to exposure value changes,<wbr/> and pixel 25287values may not be consistent across captures.<wbr/></p> 25288<p>The camera device will maintain the lock to the extent 25289possible,<wbr/> only overriding the lock to OFF when changes to 25290other request parameters require a black level recalculation 25291or reset.<wbr/></p> 25292 </td> 25293 </tr> 25294 25295 <tr class="entries_header"> 25296 <th class="th_details" colspan="5">HAL Implementation Details</th> 25297 </tr> 25298 <tr class="entry_cont"> 25299 <td class="entry_details" colspan="5"> 25300 <p>If for some reason black level locking is no longer possible 25301(for example,<wbr/> the analog gain has changed,<wbr/> which forces 25302black level offsets to be recalculated),<wbr/> then the HAL must 25303override this request (and it must report 'OFF' when this 25304does happen) until the next capture for which locking is 25305possible again.<wbr/></p> 25306 </td> 25307 </tr> 25308 25309 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25310 <!-- end of entry --> 25311 25312 25313 25314 <!-- end of kind --> 25315 </tbody> 25316 <tr><td colspan="6" class="kind">dynamic</td></tr> 25317 25318 <thead class="entries_header"> 25319 <tr> 25320 <th class="th_name">Property Name</th> 25321 <th class="th_type">Type</th> 25322 <th class="th_description">Description</th> 25323 <th class="th_units">Units</th> 25324 <th class="th_range">Range</th> 25325 <th class="th_tags">Tags</th> 25326 </tr> 25327 </thead> 25328 25329 <tbody> 25330 25331 25332 25333 25334 25335 25336 25337 25338 25339 25340 <tr class="entry" id="dynamic_android.blackLevel.lock"> 25341 <td class="entry_name 25342 " rowspan="5"> 25343 android.<wbr/>black<wbr/>Level.<wbr/>lock 25344 </td> 25345 <td class="entry_type"> 25346 <span class="entry_type_name entry_type_name_enum">byte</span> 25347 25348 <span class="entry_type_visibility"> [public as boolean]</span> 25349 25350 25351 <span class="entry_type_hwlevel">[full] </span> 25352 25353 25354 25355 <ul class="entry_type_enum"> 25356 <li> 25357 <span class="entry_type_enum_name">OFF</span> 25358 </li> 25359 <li> 25360 <span class="entry_type_enum_name">ON</span> 25361 </li> 25362 </ul> 25363 25364 </td> <!-- entry_type --> 25365 25366 <td class="entry_description"> 25367 <p>Whether black-level compensation is locked 25368to its current values,<wbr/> or is free to vary.<wbr/></p> 25369 </td> 25370 25371 <td class="entry_units"> 25372 </td> 25373 25374 <td class="entry_range"> 25375 </td> 25376 25377 <td class="entry_tags"> 25378 <ul class="entry_tags"> 25379 <li><a href="#tag_HAL2">HAL2</a></li> 25380 </ul> 25381 </td> 25382 25383 </tr> 25384 <tr class="entries_header"> 25385 <th class="th_details" colspan="5">Details</th> 25386 </tr> 25387 <tr class="entry_cont"> 25388 <td class="entry_details" colspan="5"> 25389 <p>Whether the black level offset was locked for this frame.<wbr/> Should be 25390ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless 25391a change in other capture settings forced the camera device to 25392perform a black level reset.<wbr/></p> 25393 </td> 25394 </tr> 25395 25396 <tr class="entries_header"> 25397 <th class="th_details" colspan="5">HAL Implementation Details</th> 25398 </tr> 25399 <tr class="entry_cont"> 25400 <td class="entry_details" colspan="5"> 25401 <p>If for some reason black level locking is no longer possible 25402(for example,<wbr/> the analog gain has changed,<wbr/> which forces 25403black level offsets to be recalculated),<wbr/> then the HAL must 25404override this request (and it must report 'OFF' when this 25405does happen) until the next capture for which locking is 25406possible again.<wbr/></p> 25407 </td> 25408 </tr> 25409 25410 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25411 <!-- end of entry --> 25412 25413 25414 25415 <!-- end of kind --> 25416 </tbody> 25417 25418 <!-- end of section --> 25419 <tr><td colspan="6" id="section_sync" class="section">sync</td></tr> 25420 25421 25422 <tr><td colspan="6" class="kind">dynamic</td></tr> 25423 25424 <thead class="entries_header"> 25425 <tr> 25426 <th class="th_name">Property Name</th> 25427 <th class="th_type">Type</th> 25428 <th class="th_description">Description</th> 25429 <th class="th_units">Units</th> 25430 <th class="th_range">Range</th> 25431 <th class="th_tags">Tags</th> 25432 </tr> 25433 </thead> 25434 25435 <tbody> 25436 25437 25438 25439 25440 25441 25442 25443 25444 25445 25446 <tr class="entry" id="dynamic_android.sync.frameNumber"> 25447 <td class="entry_name 25448 " rowspan="5"> 25449 android.<wbr/>sync.<wbr/>frame<wbr/>Number 25450 </td> 25451 <td class="entry_type"> 25452 <span class="entry_type_name entry_type_name_enum">int64</span> 25453 25454 <span class="entry_type_visibility"> [hidden]</span> 25455 25456 25457 <span class="entry_type_hwlevel">[legacy] </span> 25458 25459 25460 25461 <ul class="entry_type_enum"> 25462 <li> 25463 <span class="entry_type_enum_name">CONVERGING</span> 25464 <span class="entry_type_enum_value">-1</span> 25465 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p> 25466<p>Synchronization is in progress,<wbr/> and reading metadata from this 25467result may include a mix of data that have taken effect since the 25468last synchronization time.<wbr/></p> 25469<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/> 25470this value will update to the actual frame number frame number 25471the result is guaranteed to be synchronized to (as long as the 25472request settings remain constant).<wbr/></p></span> 25473 </li> 25474 <li> 25475 <span class="entry_type_enum_name">UNKNOWN</span> 25476 <span class="entry_type_enum_value">-2</span> 25477 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p> 25478<p>The result may have already converged,<wbr/> or it may be in 25479progress.<wbr/> Reading from this result may include some mix 25480of settings from past requests.<wbr/></p> 25481<p>After a settings change,<wbr/> the new settings will eventually all 25482take effect for the output buffers and results.<wbr/> However,<wbr/> this 25483value will not change when that happens.<wbr/> Altering settings 25484rapidly may provide outcomes using mixes of settings from recent 25485requests.<wbr/></p> 25486<p>This value is intended primarily for backwards compatibility with 25487the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span> 25488 </li> 25489 </ul> 25490 25491 </td> <!-- entry_type --> 25492 25493 <td class="entry_description"> 25494 <p>The frame number corresponding to the last request 25495with which the output result (metadata + buffers) has been fully 25496synchronized.<wbr/></p> 25497 </td> 25498 25499 <td class="entry_units"> 25500 </td> 25501 25502 <td class="entry_range"> 25503 <p>Either a non-negative value corresponding to a 25504<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p> 25505 </td> 25506 25507 <td class="entry_tags"> 25508 <ul class="entry_tags"> 25509 <li><a href="#tag_V1">V1</a></li> 25510 </ul> 25511 </td> 25512 25513 </tr> 25514 <tr class="entries_header"> 25515 <th class="th_details" colspan="5">Details</th> 25516 </tr> 25517 <tr class="entry_cont"> 25518 <td class="entry_details" colspan="5"> 25519 <p>When a request is submitted to the camera device,<wbr/> there is usually a 25520delay of several frames before the controls get applied.<wbr/> A camera 25521device may either choose to account for this delay by implementing a 25522pipeline and carefully submit well-timed atomic control updates,<wbr/> or 25523it may start streaming control changes that span over several frame 25524boundaries.<wbr/></p> 25525<p>In the latter case,<wbr/> whenever a request's settings change relative to 25526the previous submitted request,<wbr/> the full set of changes may take 25527multiple frame durations to fully take effect.<wbr/> Some settings may 25528take effect sooner (in less frame durations) than others.<wbr/></p> 25529<p>While a set of control changes are being propagated,<wbr/> this value 25530will be CONVERGING.<wbr/></p> 25531<p>Once it is fully known that a set of control changes have been 25532finished propagating,<wbr/> and the resulting updated control settings 25533have been read back by the camera device,<wbr/> this value will be set 25534to a non-negative frame number (corresponding to the request to 25535which the results have synchronized to).<wbr/></p> 25536<p>Older camera device implementations may not have a way to detect 25537when all camera controls have been applied,<wbr/> and will always set this 25538value to UNKNOWN.<wbr/></p> 25539<p>FULL capability devices will always have this value set to the 25540frame number of the request corresponding to this result.<wbr/></p> 25541<p><em>Further details</em>:</p> 25542<ul> 25543<li>Whenever a request differs from the last request,<wbr/> any future 25544results not yet returned may have this value set to CONVERGING (this 25545could include any in-progress captures not yet returned by the camera 25546device,<wbr/> for more details see pipeline considerations below).<wbr/></li> 25547<li>Submitting a series of multiple requests that differ from the 25548previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) 25549moves the new synchronization frame to the last non-repeating 25550request (using the smallest frame number from the contiguous list of 25551repeating requests).<wbr/></li> 25552<li>Submitting the same request repeatedly will not change this value 25553to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li> 25554<li>When this value changes to non-negative,<wbr/> that means that all of the 25555metadata controls from the request have been applied,<wbr/> all of the 25556metadata controls from the camera device have been read to the 25557updated values (into the result),<wbr/> and all of the graphics buffers 25558corresponding to this result are also synchronized to the request.<wbr/></li> 25559</ul> 25560<p><em>Pipeline considerations</em>:</p> 25561<p>Submitting a request with updated controls relative to the previously 25562submitted requests may also invalidate the synchronization state 25563of all the results corresponding to currently in-flight requests.<wbr/></p> 25564<p>In other words,<wbr/> results for this current request and up to 25565<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their 25566<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p> 25567 </td> 25568 </tr> 25569 25570 <tr class="entries_header"> 25571 <th class="th_details" colspan="5">HAL Implementation Details</th> 25572 </tr> 25573 <tr class="entry_cont"> 25574 <td class="entry_details" colspan="5"> 25575 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> 25576is also UNKNOWN.<wbr/></p> 25577<p>FULL capability devices should simply set this value to the 25578<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p> 25579 </td> 25580 </tr> 25581 25582 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25583 <!-- end of entry --> 25584 25585 25586 25587 <!-- end of kind --> 25588 </tbody> 25589 <tr><td colspan="6" class="kind">static</td></tr> 25590 25591 <thead class="entries_header"> 25592 <tr> 25593 <th class="th_name">Property Name</th> 25594 <th class="th_type">Type</th> 25595 <th class="th_description">Description</th> 25596 <th class="th_units">Units</th> 25597 <th class="th_range">Range</th> 25598 <th class="th_tags">Tags</th> 25599 </tr> 25600 </thead> 25601 25602 <tbody> 25603 25604 25605 25606 25607 25608 25609 25610 25611 25612 25613 <tr class="entry" id="static_android.sync.maxLatency"> 25614 <td class="entry_name 25615 " rowspan="5"> 25616 android.<wbr/>sync.<wbr/>max<wbr/>Latency 25617 </td> 25618 <td class="entry_type"> 25619 <span class="entry_type_name entry_type_name_enum">int32</span> 25620 25621 <span class="entry_type_visibility"> [public]</span> 25622 25623 25624 <span class="entry_type_hwlevel">[legacy] </span> 25625 25626 25627 25628 <ul class="entry_type_enum"> 25629 <li> 25630 <span class="entry_type_enum_name">PER_FRAME_CONTROL</span> 25631 <span class="entry_type_enum_value">0</span> 25632 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p> 25633<p>Changing controls over multiple requests one after another will 25634produce results that have those controls applied atomically 25635each frame.<wbr/></p> 25636<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span> 25637 </li> 25638 <li> 25639 <span class="entry_type_enum_name">UNKNOWN</span> 25640 <span class="entry_type_enum_value">-1</span> 25641 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set) 25642of the past requests applied to the camera settings.<wbr/></p> 25643<p>By submitting a series of identical requests,<wbr/> the camera device 25644will eventually have the camera settings applied,<wbr/> but it is 25645unknown when that exact point will be.<wbr/></p> 25646<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span> 25647 </li> 25648 </ul> 25649 25650 </td> <!-- entry_type --> 25651 25652 <td class="entry_description"> 25653 <p>The maximum number of frames that can occur after a request 25654(different than the previous) has been submitted,<wbr/> and before the 25655result's state becomes synchronized.<wbr/></p> 25656 </td> 25657 25658 <td class="entry_units"> 25659 Frame counts 25660 </td> 25661 25662 <td class="entry_range"> 25663 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p> 25664 </td> 25665 25666 <td class="entry_tags"> 25667 <ul class="entry_tags"> 25668 <li><a href="#tag_V1">V1</a></li> 25669 </ul> 25670 </td> 25671 25672 </tr> 25673 <tr class="entries_header"> 25674 <th class="th_details" colspan="5">Details</th> 25675 </tr> 25676 <tr class="entry_cont"> 25677 <td class="entry_details" colspan="5"> 25678 <p>This defines the maximum distance (in number of metadata results),<wbr/> 25679between the frame number of the request that has new controls to apply 25680and the frame number of the result that has all the controls applied.<wbr/></p> 25681<p>In other words this acts as an upper boundary for how many frames 25682must occur before the camera device knows for a fact that the new 25683submitted camera settings have been applied in outgoing frames.<wbr/></p> 25684 </td> 25685 </tr> 25686 25687 <tr class="entries_header"> 25688 <th class="th_details" colspan="5">HAL Implementation Details</th> 25689 </tr> 25690 <tr class="entry_cont"> 25691 <td class="entry_details" colspan="5"> 25692 <p>For example if maxLatency was 2,<wbr/></p> 25693<pre><code>initial request = X (repeating) 25694request1 = X 25695request2 = Y 25696request3 = Y 25697request4 = Y 25698 25699where requestN has frameNumber N,<wbr/> and the first of the repeating 25700initial request's has frameNumber F (and F < 1).<wbr/> 25701 25702initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 25703result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 25704result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 25705result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 25706result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } 25707 25708where resultN has frameNumber N.<wbr/> 25709</code></pre> 25710<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and 25711<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly 25712<code>4 - 2 = 2</code>.<wbr/></p> 25713<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of 25714<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or 25715<code>@link{android.<wbr/>hardware.<wbr/>camera2.<wbr/>Capture<wbr/>Result#get<wbr/>Frame<wbr/>Number}</code>.<wbr/></p> 25716<p>LIMITED devices are strongly encouraged to use a non-negative 25717value.<wbr/> If UNKNOWN is used here then app developers do not have a way 25718to know when sensor settings have been applied.<wbr/></p> 25719 </td> 25720 </tr> 25721 25722 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25723 <!-- end of entry --> 25724 25725 25726 25727 <!-- end of kind --> 25728 </tbody> 25729 25730 <!-- end of section --> 25731 <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr> 25732 25733 25734 <tr><td colspan="6" class="kind">controls</td></tr> 25735 25736 <thead class="entries_header"> 25737 <tr> 25738 <th class="th_name">Property Name</th> 25739 <th class="th_type">Type</th> 25740 <th class="th_description">Description</th> 25741 <th class="th_units">Units</th> 25742 <th class="th_range">Range</th> 25743 <th class="th_tags">Tags</th> 25744 </tr> 25745 </thead> 25746 25747 <tbody> 25748 25749 25750 25751 25752 25753 25754 25755 25756 25757 25758 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor"> 25759 <td class="entry_name 25760 " rowspan="3"> 25761 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 25762 </td> 25763 <td class="entry_type"> 25764 <span class="entry_type_name">float</span> 25765 25766 <span class="entry_type_visibility"> [public]</span> 25767 25768 25769 <span class="entry_type_hwlevel">[limited] </span> 25770 25771 25772 25773 25774 </td> <!-- entry_type --> 25775 25776 <td class="entry_description"> 25777 <p>The amount of exposure time increase factor applied to the original output 25778frame by the application processing before sending for reprocessing.<wbr/></p> 25779 </td> 25780 25781 <td class="entry_units"> 25782 Relative exposure time increase factor.<wbr/> 25783 </td> 25784 25785 <td class="entry_range"> 25786 <p>>= 1.<wbr/>0</p> 25787 </td> 25788 25789 <td class="entry_tags"> 25790 <ul class="entry_tags"> 25791 <li><a href="#tag_REPROC">REPROC</a></li> 25792 </ul> 25793 </td> 25794 25795 </tr> 25796 <tr class="entries_header"> 25797 <th class="th_details" colspan="5">Details</th> 25798 </tr> 25799 <tr class="entry_cont"> 25800 <td class="entry_details" colspan="5"> 25801 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 25802capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 25803<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 25804output frames to effectively reduce the noise to the same level as a frame that was 25805captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 25806images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 25807the camera device is that the amount of noise in the image would be approximately what 25808would be expected if the original capture parameters had been a sensitivity of 25809S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 25810than S and T respectively.<wbr/> If the captured images were processed by the application 25811before being sent for reprocessing,<wbr/> then the application may have used image processing 25812algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 25813application-processed images (input images).<wbr/> By using the effectiveExposureFactor 25814control,<wbr/> the application can communicate to the camera device the actual noise level 25815improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 25816device can select appropriate noise reduction and edge enhancement parameters to avoid 25817excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 25818enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 25819<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 25820multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 25821fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 25822square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 25823adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 25824produce the best quality images.<wbr/></p> 25825<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 25826buffer in a way that affects its effective exposure time.<wbr/></p> 25827<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 25828reduction 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/> 25829Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 25830<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 25831 </td> 25832 </tr> 25833 25834 25835 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25836 <!-- end of entry --> 25837 25838 25839 25840 <!-- end of kind --> 25841 </tbody> 25842 <tr><td colspan="6" class="kind">dynamic</td></tr> 25843 25844 <thead class="entries_header"> 25845 <tr> 25846 <th class="th_name">Property Name</th> 25847 <th class="th_type">Type</th> 25848 <th class="th_description">Description</th> 25849 <th class="th_units">Units</th> 25850 <th class="th_range">Range</th> 25851 <th class="th_tags">Tags</th> 25852 </tr> 25853 </thead> 25854 25855 <tbody> 25856 25857 25858 25859 25860 25861 25862 25863 25864 25865 25866 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor"> 25867 <td class="entry_name 25868 " rowspan="3"> 25869 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 25870 </td> 25871 <td class="entry_type"> 25872 <span class="entry_type_name">float</span> 25873 25874 <span class="entry_type_visibility"> [public]</span> 25875 25876 25877 <span class="entry_type_hwlevel">[limited] </span> 25878 25879 25880 25881 25882 </td> <!-- entry_type --> 25883 25884 <td class="entry_description"> 25885 <p>The amount of exposure time increase factor applied to the original output 25886frame by the application processing before sending for reprocessing.<wbr/></p> 25887 </td> 25888 25889 <td class="entry_units"> 25890 Relative exposure time increase factor.<wbr/> 25891 </td> 25892 25893 <td class="entry_range"> 25894 <p>>= 1.<wbr/>0</p> 25895 </td> 25896 25897 <td class="entry_tags"> 25898 <ul class="entry_tags"> 25899 <li><a href="#tag_REPROC">REPROC</a></li> 25900 </ul> 25901 </td> 25902 25903 </tr> 25904 <tr class="entries_header"> 25905 <th class="th_details" colspan="5">Details</th> 25906 </tr> 25907 <tr class="entry_cont"> 25908 <td class="entry_details" colspan="5"> 25909 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 25910capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 25911<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 25912output frames to effectively reduce the noise to the same level as a frame that was 25913captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 25914images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 25915the camera device is that the amount of noise in the image would be approximately what 25916would be expected if the original capture parameters had been a sensitivity of 25917S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 25918than S and T respectively.<wbr/> If the captured images were processed by the application 25919before being sent for reprocessing,<wbr/> then the application may have used image processing 25920algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 25921application-processed images (input images).<wbr/> By using the effectiveExposureFactor 25922control,<wbr/> the application can communicate to the camera device the actual noise level 25923improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 25924device can select appropriate noise reduction and edge enhancement parameters to avoid 25925excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 25926enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 25927<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 25928multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 25929fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 25930square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 25931adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 25932produce the best quality images.<wbr/></p> 25933<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 25934buffer in a way that affects its effective exposure time.<wbr/></p> 25935<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 25936reduction 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/> 25937Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 25938<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 25939 </td> 25940 </tr> 25941 25942 25943 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25944 <!-- end of entry --> 25945 25946 25947 25948 <!-- end of kind --> 25949 </tbody> 25950 <tr><td colspan="6" class="kind">static</td></tr> 25951 25952 <thead class="entries_header"> 25953 <tr> 25954 <th class="th_name">Property Name</th> 25955 <th class="th_type">Type</th> 25956 <th class="th_description">Description</th> 25957 <th class="th_units">Units</th> 25958 <th class="th_range">Range</th> 25959 <th class="th_tags">Tags</th> 25960 </tr> 25961 </thead> 25962 25963 <tbody> 25964 25965 25966 25967 25968 25969 25970 25971 25972 25973 25974 <tr class="entry" id="static_android.reprocess.maxCaptureStall"> 25975 <td class="entry_name 25976 " rowspan="3"> 25977 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall 25978 </td> 25979 <td class="entry_type"> 25980 <span class="entry_type_name">int32</span> 25981 25982 <span class="entry_type_visibility"> [public]</span> 25983 25984 25985 <span class="entry_type_hwlevel">[limited] </span> 25986 25987 25988 25989 25990 </td> <!-- entry_type --> 25991 25992 <td class="entry_description"> 25993 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a 25994reprocess capture request.<wbr/></p> 25995 </td> 25996 25997 <td class="entry_units"> 25998 Number of frames.<wbr/> 25999 </td> 26000 26001 <td class="entry_range"> 26002 <p><= 4</p> 26003 </td> 26004 26005 <td class="entry_tags"> 26006 <ul class="entry_tags"> 26007 <li><a href="#tag_REPROC">REPROC</a></li> 26008 </ul> 26009 </td> 26010 26011 </tr> 26012 <tr class="entries_header"> 26013 <th class="th_details" colspan="5">Details</th> 26014 </tr> 26015 <tr class="entry_cont"> 26016 <td class="entry_details" colspan="5"> 26017 <p>The key describes the maximal interference that one reprocess (input) request 26018can introduce to the camera simultaneous streaming of regular (output) capture 26019requests,<wbr/> including repeating requests.<wbr/></p> 26020<p>When a reprocessing capture request is submitted while a camera output repeating request 26021(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture 26022pipeline for at least one frame duration so that the camera device is unable to process 26023the following capture request in time for the next sensor start of exposure boundary.<wbr/> 26024When this happens,<wbr/> the application may observe a capture time gap (longer than one frame 26025duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview 26026glitch if the repeating request output targets include a preview surface.<wbr/> This key gives 26027the worst-case number of frame stall introduced by one reprocess request with any kind of 26028formats/<wbr/>sizes combination.<wbr/></p> 26029<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the 26030ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p> 26031<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing ( 26032i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or 26033YUV_<wbr/>REPROCESSING).<wbr/></p> 26034 </td> 26035 </tr> 26036 26037 26038 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26039 <!-- end of entry --> 26040 26041 26042 26043 <!-- end of kind --> 26044 </tbody> 26045 26046 <!-- end of section --> 26047 <tr><td colspan="6" id="section_depth" class="section">depth</td></tr> 26048 26049 26050 <tr><td colspan="6" class="kind">static</td></tr> 26051 26052 <thead class="entries_header"> 26053 <tr> 26054 <th class="th_name">Property Name</th> 26055 <th class="th_type">Type</th> 26056 <th class="th_description">Description</th> 26057 <th class="th_units">Units</th> 26058 <th class="th_range">Range</th> 26059 <th class="th_tags">Tags</th> 26060 </tr> 26061 </thead> 26062 26063 <tbody> 26064 26065 26066 26067 26068 26069 26070 26071 26072 26073 26074 <tr class="entry" id="static_android.depth.maxDepthSamples"> 26075 <td class="entry_name 26076 " rowspan="3"> 26077 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples 26078 </td> 26079 <td class="entry_type"> 26080 <span class="entry_type_name">int32</span> 26081 26082 <span class="entry_type_visibility"> [system]</span> 26083 26084 26085 <span class="entry_type_hwlevel">[limited] </span> 26086 26087 26088 26089 26090 </td> <!-- entry_type --> 26091 26092 <td class="entry_description"> 26093 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p> 26094 </td> 26095 26096 <td class="entry_units"> 26097 </td> 26098 26099 <td class="entry_range"> 26100 </td> 26101 26102 <td class="entry_tags"> 26103 <ul class="entry_tags"> 26104 <li><a href="#tag_DEPTH">DEPTH</a></li> 26105 </ul> 26106 </td> 26107 26108 </tr> 26109 <tr class="entries_header"> 26110 <th class="th_details" colspan="5">Details</th> 26111 </tr> 26112 <tr class="entry_cont"> 26113 <td class="entry_details" colspan="5"> 26114 <p>If a camera device supports outputting depth range data in the form of a depth point 26115cloud (<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 26116number of points an output buffer may contain.<wbr/></p> 26117<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/> 26118If output in the depth point cloud format is not supported,<wbr/> this entry will 26119not be defined.<wbr/></p> 26120 </td> 26121 </tr> 26122 26123 26124 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26125 <!-- end of entry --> 26126 26127 26128 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations"> 26129 <td class="entry_name 26130 " rowspan="3"> 26131 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations 26132 </td> 26133 <td class="entry_type"> 26134 <span class="entry_type_name entry_type_name_enum">int32</span> 26135 <span class="entry_type_container">x</span> 26136 26137 <span class="entry_type_array"> 26138 n x 4 26139 </span> 26140 <span class="entry_type_visibility"> [hidden as streamConfiguration]</span> 26141 26142 26143 <span class="entry_type_hwlevel">[limited] </span> 26144 26145 26146 26147 <ul class="entry_type_enum"> 26148 <li> 26149 <span class="entry_type_enum_name">OUTPUT</span> 26150 </li> 26151 <li> 26152 <span class="entry_type_enum_name">INPUT</span> 26153 </li> 26154 </ul> 26155 26156 </td> <!-- entry_type --> 26157 26158 <td class="entry_description"> 26159 <p>The available depth dataspace stream 26160configurations that this camera device supports 26161(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 26162 </td> 26163 26164 <td class="entry_units"> 26165 </td> 26166 26167 <td class="entry_range"> 26168 </td> 26169 26170 <td class="entry_tags"> 26171 <ul class="entry_tags"> 26172 <li><a href="#tag_DEPTH">DEPTH</a></li> 26173 </ul> 26174 </td> 26175 26176 </tr> 26177 <tr class="entries_header"> 26178 <th class="th_details" colspan="5">Details</th> 26179 </tr> 26180 <tr class="entry_cont"> 26181 <td class="entry_details" colspan="5"> 26182 <p>These are output stream configurations for use with 26183dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are 26184listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 26185<p>Only devices that support depth output for at least 26186the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include 26187this entry.<wbr/></p> 26188<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB 26189sparse depth point cloud must report a single entry for 26190the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/> 26191<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to 26192the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p> 26193 </td> 26194 </tr> 26195 26196 26197 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26198 <!-- end of entry --> 26199 26200 26201 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations"> 26202 <td class="entry_name 26203 " rowspan="3"> 26204 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations 26205 </td> 26206 <td class="entry_type"> 26207 <span class="entry_type_name">int64</span> 26208 <span class="entry_type_container">x</span> 26209 26210 <span class="entry_type_array"> 26211 4 x n 26212 </span> 26213 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 26214 26215 26216 <span class="entry_type_hwlevel">[limited] </span> 26217 26218 26219 26220 26221 </td> <!-- entry_type --> 26222 26223 <td class="entry_description"> 26224 <p>This lists the minimum frame duration for each 26225format/<wbr/>size combination for depth output formats.<wbr/></p> 26226 </td> 26227 26228 <td class="entry_units"> 26229 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 26230 </td> 26231 26232 <td class="entry_range"> 26233 </td> 26234 26235 <td class="entry_tags"> 26236 <ul class="entry_tags"> 26237 <li><a href="#tag_DEPTH">DEPTH</a></li> 26238 </ul> 26239 </td> 26240 26241 </tr> 26242 <tr class="entries_header"> 26243 <th class="th_details" colspan="5">Details</th> 26244 </tr> 26245 <tr class="entry_cont"> 26246 <td class="entry_details" colspan="5"> 26247 <p>This should correspond to the frame duration when only that 26248stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 26249set to either OFF or FAST.<wbr/></p> 26250<p>When multiple streams are used in a request,<wbr/> the minimum frame 26251duration will be max(individual stream min durations).<wbr/></p> 26252<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 26253is the same regardless of whether the stream is input or output.<wbr/></p> 26254<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 26255<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 26256calculating the max frame rate.<wbr/></p> 26257<p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p> 26258 </td> 26259 </tr> 26260 26261 26262 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26263 <!-- end of entry --> 26264 26265 26266 <tr class="entry" id="static_android.depth.availableDepthStallDurations"> 26267 <td class="entry_name 26268 " rowspan="3"> 26269 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations 26270 </td> 26271 <td class="entry_type"> 26272 <span class="entry_type_name">int64</span> 26273 <span class="entry_type_container">x</span> 26274 26275 <span class="entry_type_array"> 26276 4 x n 26277 </span> 26278 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 26279 26280 26281 <span class="entry_type_hwlevel">[limited] </span> 26282 26283 26284 26285 26286 </td> <!-- entry_type --> 26287 26288 <td class="entry_description"> 26289 <p>This lists the maximum stall duration for each 26290output format/<wbr/>size combination for depth streams.<wbr/></p> 26291 </td> 26292 26293 <td class="entry_units"> 26294 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 26295 </td> 26296 26297 <td class="entry_range"> 26298 </td> 26299 26300 <td class="entry_tags"> 26301 <ul class="entry_tags"> 26302 <li><a href="#tag_DEPTH">DEPTH</a></li> 26303 </ul> 26304 </td> 26305 26306 </tr> 26307 <tr class="entries_header"> 26308 <th class="th_details" colspan="5">Details</th> 26309 </tr> 26310 <tr class="entry_cont"> 26311 <td class="entry_details" colspan="5"> 26312 <p>A stall duration is how much extra time would get added 26313to the normal minimum frame duration for a repeating request 26314that has streams with non-zero stall.<wbr/></p> 26315<p>This functions similarly to 26316<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth 26317streams.<wbr/></p> 26318<p>All depth output stream formats may have a nonzero stall 26319duration.<wbr/></p> 26320 </td> 26321 </tr> 26322 26323 26324 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26325 <!-- end of entry --> 26326 26327 26328 <tr class="entry" id="static_android.depth.depthIsExclusive"> 26329 <td class="entry_name 26330 " rowspan="3"> 26331 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive 26332 </td> 26333 <td class="entry_type"> 26334 <span class="entry_type_name entry_type_name_enum">byte</span> 26335 26336 <span class="entry_type_visibility"> [public as boolean]</span> 26337 26338 26339 <span class="entry_type_hwlevel">[limited] </span> 26340 26341 26342 26343 <ul class="entry_type_enum"> 26344 <li> 26345 <span class="entry_type_enum_name">FALSE</span> 26346 </li> 26347 <li> 26348 <span class="entry_type_enum_name">TRUE</span> 26349 </li> 26350 </ul> 26351 26352 </td> <!-- entry_type --> 26353 26354 <td class="entry_description"> 26355 <p>Indicates whether a capture request may target both a 26356DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as 26357YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p> 26358 </td> 26359 26360 <td class="entry_units"> 26361 </td> 26362 26363 <td class="entry_range"> 26364 </td> 26365 26366 <td class="entry_tags"> 26367 </td> 26368 26369 </tr> 26370 <tr class="entries_header"> 26371 <th class="th_details" colspan="5">Details</th> 26372 </tr> 26373 <tr class="entry_cont"> 26374 <td class="entry_details" colspan="5"> 26375 <p>If TRUE,<wbr/> including both depth and color outputs in a single 26376capture request is not supported.<wbr/> An application must interleave color 26377and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types 26378of output.<wbr/></p> 26379<p>Typically,<wbr/> this restriction exists on camera devices that 26380need to emit a specific pattern or wavelength of light to 26381measure depth values,<wbr/> which causes the color image to be 26382corrupted during depth measurement.<wbr/></p> 26383 </td> 26384 </tr> 26385 26386 26387 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26388 <!-- end of entry --> 26389 26390 26391 26392 <!-- end of kind --> 26393 </tbody> 26394 26395 <!-- end of section --> 26396<!-- </namespace> --> 26397 </table> 26398 26399 <div class="tags" id="tag_index"> 26400 <h2>Tags</h2> 26401 <ul> 26402 <li id="tag_BC">BC - 26403 Needed for backwards compatibility with old Java API 26404 26405 <ul class="tags_entries"> 26406 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li> 26407 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li> 26408 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li> 26409 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li> 26410 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li> 26411 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li> 26412 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li> 26413 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li> 26414 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li> 26415 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li> 26416 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li> 26417 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> 26418 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li> 26419 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li> 26420 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li> 26421 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li> 26422 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li> 26423 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li> 26424 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li> 26425 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li> 26426 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li> 26427 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li> 26428 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li> 26429 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li> 26430 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li> 26431 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li> 26432 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li> 26433 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li> 26434 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li> 26435 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li> 26436 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li> 26437 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li> 26438 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li> 26439 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li> 26440 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li> 26441 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li> 26442 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li> 26443 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li> 26444 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li> 26445 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li> 26446 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li> 26447 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li> 26448 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 26449 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 26450 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> 26451 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> 26452 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> 26453 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> 26454 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> 26455 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> 26456 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li> 26457 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li> 26458 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li> 26459 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li> 26460 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 26461 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 26462 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 26463 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li> 26464 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li> 26465 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li> 26466 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li> 26467 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li> 26468 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li> 26469 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li> 26470 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li> 26471 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li> 26472 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li> 26473 </ul> 26474 </li> <!-- tag_BC --> 26475 <li id="tag_V1">V1 - 26476 New features for first camera 2 release (API1) 26477 26478 <ul class="tags_entries"> 26479 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li> 26480 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li> 26481 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 26482 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 26483 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 26484 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 26485 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li> 26486 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li> 26487 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li> 26488 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 26489 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li> 26490 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li> 26491 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li> 26492 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 26493 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li> 26494 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li> 26495 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li> 26496 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li> 26497 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li> 26498 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 26499 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 26500 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li> 26501 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li> 26502 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li> 26503 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li> 26504 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> 26505 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li> 26506 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 26507 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li> 26508 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> 26509 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 26510 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li> 26511 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 26512 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li> 26513 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 26514 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 26515 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 26516 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li> 26517 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li> 26518 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 26519 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 26520 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li> 26521 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li> 26522 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li> 26523 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 26524 </ul> 26525 </li> <!-- tag_V1 --> 26526 <li id="tag_RAW">RAW - 26527 Needed for useful RAW image processing and DNG file support 26528 26529 <ul class="tags_entries"> 26530 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 26531 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 26532 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li> 26533 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li> 26534 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 26535 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li> 26536 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li> 26537 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> 26538 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li> 26539 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li> 26540 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li> 26541 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li> 26542 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li> 26543 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li> 26544 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li> 26545 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li> 26546 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li> 26547 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li> 26548 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li> 26549 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li> 26550 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li> 26551 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li> 26552 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 26553 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 26554 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 26555 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li> 26556 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 26557 </ul> 26558 </li> <!-- tag_RAW --> 26559 <li id="tag_HAL2">HAL2 - 26560 Entry is only used by camera device HAL 2.x 26561 26562 <ul class="tags_entries"> 26563 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li> 26564 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li> 26565 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li> 26566 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li> 26567 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li> 26568 </ul> 26569 </li> <!-- tag_HAL2 --> 26570 <li id="tag_FULL">FULL - 26571 Entry is required for full hardware level devices, and optional for other hardware levels 26572 26573 <ul class="tags_entries"> 26574 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 26575 </ul> 26576 </li> <!-- tag_FULL --> 26577 <li id="tag_DEPTH">DEPTH - 26578 Entry is required for the depth capability. 26579 26580 <ul class="tags_entries"> 26581 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li> 26582 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li> 26583 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li> 26584 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li> 26585 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li> 26586 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li> 26587 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li> 26588 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li> 26589 </ul> 26590 </li> <!-- tag_DEPTH --> 26591 <li id="tag_REPROC">REPROC - 26592 Entry is required for the YUV or PRIVATE reprocessing capability. 26593 26594 <ul class="tags_entries"> 26595 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 26596 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 26597 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 26598 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 26599 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li> 26600 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li> 26601 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li> 26602 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li> 26603 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 26604 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 26605 </ul> 26606 </li> <!-- tag_REPROC --> 26607 <li id="tag_FUTURE">FUTURE - 26608 Entry is under-specified and is not required for now. This is for book-keeping purpose, 26609 do not implement or use it, it may be revised for future. 26610 26611 <ul class="tags_entries"> 26612 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li> 26613 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li> 26614 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li> 26615 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li> 26616 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li> 26617 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li> 26618 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li> 26619 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li> 26620 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li> 26621 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li> 26622 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> 26623 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li> 26624 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li> 26625 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li> 26626 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li> 26627 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li> 26628 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li> 26629 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li> 26630 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li> 26631 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li> 26632 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li> 26633 </ul> 26634 </li> <!-- tag_FUTURE --> 26635 </ul> 26636 </div> 26637 26638 [ <a href="#">top</a> ] 26639 26640</body> 26641</html> 26642