docs.html revision ea3b26886f230c995490a7affe2da58cd8361934
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 <li 803 ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li> 804 <li 805 ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li> 806 </ul> 807 </li> 808 <li> 809 <span class="toc_kind_header">dynamic</span> 810 <ul class="toc_section"> 811 <li 812 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 813 <li 814 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 815 <li 816 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 817 <li 818 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li> 819 <li 820 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li> 821 <li 822 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li> 823 <li 824 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li> 825 <li 826 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li> 827 <li 828 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li> 829 <li 830 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li> 831 <li 832 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 833 <li 834 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 835 <li 836 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li> 837 <li 838 ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li> 839 <li 840 ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li> 841 </ul> 842 </li> 843 </ul> <!-- toc_section --> 844 </li> 845 <li> 846 <span class="toc_section_header"><a href="#section_shading">shading</a></span> 847 <ul class="toc_section"> 848 <li> 849 <span class="toc_kind_header">controls</span> 850 <ul class="toc_section"> 851 <li 852 ><a href="#controls_android.shading.mode">android.shading.mode</a></li> 853 <li 854 ><a href="#controls_android.shading.strength">android.shading.strength</a></li> 855 </ul> 856 </li> 857 <li> 858 <span class="toc_kind_header">dynamic</span> 859 <ul class="toc_section"> 860 <li 861 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li> 862 </ul> 863 </li> 864 <li> 865 <span class="toc_kind_header">static</span> 866 <ul class="toc_section"> 867 <li 868 ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li> 869 </ul> 870 </li> 871 </ul> <!-- toc_section --> 872 </li> 873 <li> 874 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span> 875 <ul class="toc_section"> 876 <li> 877 <span class="toc_kind_header">controls</span> 878 <ul class="toc_section"> 879 <li 880 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 881 <li 882 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 883 <li 884 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 885 <li 886 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 887 <li 888 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 889 </ul> 890 </li> 891 <li> 892 <span class="toc_kind_header">static</span> 893 <ul class="toc_section"> 894 895 <li 896 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li> 897 <li 898 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li> 899 <li 900 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li> 901 <li 902 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li> 903 <li 904 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li> 905 <li 906 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li> 907 <li 908 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li> 909 <li 910 ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li> 911 912 </ul> 913 </li> 914 <li> 915 <span class="toc_kind_header">dynamic</span> 916 <ul class="toc_section"> 917 <li 918 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 919 <li 920 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li> 921 <li 922 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li> 923 <li 924 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li> 925 <li 926 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li> 927 <li 928 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li> 929 <li 930 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li> 931 <li 932 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 933 <li 934 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li> 935 <li 936 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 937 <li 938 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li> 939 <li 940 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li> 941 <li 942 class="toc_deprecated" 943 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li> 944 <li 945 class="toc_deprecated" 946 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li> 947 <li 948 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li> 949 <li 950 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 951 <li 952 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li> 953 <li 954 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 955 </ul> 956 </li> 957 </ul> <!-- toc_section --> 958 </li> 959 <li> 960 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span> 961 <ul class="toc_section"> 962 <li> 963 <span class="toc_kind_header">controls</span> 964 <ul class="toc_section"> 965 <li 966 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 967 <li 968 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 969 <li 970 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 971 <li 972 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li> 973 <li 974 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li> 975 <li 976 ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li> 977 <li 978 ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 979 </ul> 980 </li> 981 <li> 982 <span class="toc_kind_header">static</span> 983 <ul class="toc_section"> 984 <li 985 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li> 986 <li 987 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li> 988 </ul> 989 </li> 990 <li> 991 <span class="toc_kind_header">dynamic</span> 992 <ul class="toc_section"> 993 <li 994 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 995 <li 996 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 997 <li 998 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 999 <li 1000 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li> 1001 <li 1002 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li> 1003 <li 1004 ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li> 1005 <li 1006 ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 1007 </ul> 1008 </li> 1009 </ul> <!-- toc_section --> 1010 </li> 1011 <li> 1012 <span class="toc_section_header"><a href="#section_led">led</a></span> 1013 <ul class="toc_section"> 1014 <li> 1015 <span class="toc_kind_header">controls</span> 1016 <ul class="toc_section"> 1017 <li 1018 ><a href="#controls_android.led.transmit">android.led.transmit</a></li> 1019 </ul> 1020 </li> 1021 <li> 1022 <span class="toc_kind_header">dynamic</span> 1023 <ul class="toc_section"> 1024 <li 1025 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li> 1026 </ul> 1027 </li> 1028 <li> 1029 <span class="toc_kind_header">static</span> 1030 <ul class="toc_section"> 1031 <li 1032 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li> 1033 </ul> 1034 </li> 1035 </ul> <!-- toc_section --> 1036 </li> 1037 <li> 1038 <span class="toc_section_header"><a href="#section_info">info</a></span> 1039 <ul class="toc_section"> 1040 <li> 1041 <span class="toc_kind_header">static</span> 1042 <ul class="toc_section"> 1043 <li 1044 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li> 1045 </ul> 1046 </li> 1047 </ul> <!-- toc_section --> 1048 </li> 1049 <li> 1050 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span> 1051 <ul class="toc_section"> 1052 <li> 1053 <span class="toc_kind_header">controls</span> 1054 <ul class="toc_section"> 1055 <li 1056 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li> 1057 </ul> 1058 </li> 1059 <li> 1060 <span class="toc_kind_header">dynamic</span> 1061 <ul class="toc_section"> 1062 <li 1063 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li> 1064 </ul> 1065 </li> 1066 </ul> <!-- toc_section --> 1067 </li> 1068 <li> 1069 <span class="toc_section_header"><a href="#section_sync">sync</a></span> 1070 <ul class="toc_section"> 1071 <li> 1072 <span class="toc_kind_header">dynamic</span> 1073 <ul class="toc_section"> 1074 <li 1075 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li> 1076 </ul> 1077 </li> 1078 <li> 1079 <span class="toc_kind_header">static</span> 1080 <ul class="toc_section"> 1081 <li 1082 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li> 1083 </ul> 1084 </li> 1085 </ul> <!-- toc_section --> 1086 </li> 1087 <li> 1088 <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span> 1089 <ul class="toc_section"> 1090 <li> 1091 <span class="toc_kind_header">controls</span> 1092 <ul class="toc_section"> 1093 <li 1094 ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1095 </ul> 1096 </li> 1097 <li> 1098 <span class="toc_kind_header">dynamic</span> 1099 <ul class="toc_section"> 1100 <li 1101 ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1102 </ul> 1103 </li> 1104 <li> 1105 <span class="toc_kind_header">static</span> 1106 <ul class="toc_section"> 1107 <li 1108 ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li> 1109 </ul> 1110 </li> 1111 </ul> <!-- toc_section --> 1112 </li> 1113 <li> 1114 <span class="toc_section_header"><a href="#section_depth">depth</a></span> 1115 <ul class="toc_section"> 1116 <li> 1117 <span class="toc_kind_header">static</span> 1118 <ul class="toc_section"> 1119 <li 1120 ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li> 1121 <li 1122 ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li> 1123 <li 1124 ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li> 1125 <li 1126 ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li> 1127 <li 1128 ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li> 1129 </ul> 1130 </li> 1131 </ul> <!-- toc_section --> 1132 </li> 1133 </ul> 1134 1135 1136 <h1>Properties</h1> 1137 <table class="properties"> 1138 1139 <thead class="thead_dummy"> 1140 <tr> 1141 <th class="th_name">Property Name</th> 1142 <th class="th_type">Type</th> 1143 <th class="th_description">Description</th> 1144 <th class="th_units">Units</th> 1145 <th class="th_range">Range</th> 1146 <th class="th_tags">Tags</th> 1147 </tr> 1148 </thead> <!-- so that the first occurrence of thead is not 1149 above the first occurrence of tr --> 1150<!-- <namespace name="android"> --> 1151 <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr> 1152 1153 1154 <tr><td colspan="6" class="kind">controls</td></tr> 1155 1156 <thead class="entries_header"> 1157 <tr> 1158 <th class="th_name">Property Name</th> 1159 <th class="th_type">Type</th> 1160 <th class="th_description">Description</th> 1161 <th class="th_units">Units</th> 1162 <th class="th_range">Range</th> 1163 <th class="th_tags">Tags</th> 1164 </tr> 1165 </thead> 1166 1167 <tbody> 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 <tr class="entry" id="controls_android.colorCorrection.mode"> 1179 <td class="entry_name 1180 " rowspan="5"> 1181 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1182 </td> 1183 <td class="entry_type"> 1184 <span class="entry_type_name entry_type_name_enum">byte</span> 1185 1186 <span class="entry_type_visibility"> [public]</span> 1187 1188 1189 <span class="entry_type_hwlevel">[full] </span> 1190 1191 1192 1193 <ul class="entry_type_enum"> 1194 <li> 1195 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> 1196 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1197and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1198<p>All advanced white balance adjustments (not specified 1199by our white balance pipeline) must be disabled.<wbr/></p> 1200<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 1201TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1202this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1203 </li> 1204 <li> 1205 <span class="entry_type_enum_name">FAST</span> 1206 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1207capture rate relative to sensor raw output.<wbr/></p> 1208<p>Advanced white balance adjustments above and beyond 1209the specified white balance pipeline may be applied.<wbr/></p> 1210<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 1211the camera device uses the last frame's AWB values 1212(or defaults if AWB has never been run).<wbr/></p></span> 1213 </li> 1214 <li> 1215 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1216 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1217quality but the capture rate might be reduced (relative to sensor 1218raw output rate)</p> 1219<p>Advanced white balance adjustments above and beyond 1220the specified white balance pipeline may be applied.<wbr/></p> 1221<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 1222the camera device uses the last frame's AWB values 1223(or defaults if AWB has never been run).<wbr/></p></span> 1224 </li> 1225 </ul> 1226 1227 </td> <!-- entry_type --> 1228 1229 <td class="entry_description"> 1230 <p>The mode control selects how the image data is converted from the 1231sensor's native color into linear sRGB color.<wbr/></p> 1232 </td> 1233 1234 <td class="entry_units"> 1235 </td> 1236 1237 <td class="entry_range"> 1238 </td> 1239 1240 <td class="entry_tags"> 1241 </td> 1242 1243 </tr> 1244 <tr class="entries_header"> 1245 <th class="th_details" colspan="5">Details</th> 1246 </tr> 1247 <tr class="entry_cont"> 1248 <td class="entry_details" colspan="5"> 1249 <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 1250control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1251application controls how the color mapping is performed.<wbr/></p> 1252<p>We define the expected processing pipeline below.<wbr/> For consistency 1253across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1254<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1255do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1256<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1257camera device (in the results) and be roughly correct.<wbr/></p> 1258<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1259FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1260as what was produced by the camera device in the earlier frame.<wbr/></p> 1261<p>The expected processing pipeline is as follows:</p> 1262<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1263<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1264gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1265matrix (applied after demosaic).<wbr/></p> 1266<p>The 4-channel white-balance gains are defined as:</p> 1267<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1268</code></pre> 1269<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1270output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1271These may be identical for a given camera device implementation; if 1272the camera device does not support a separate gain for even/<wbr/>odd green 1273channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1274<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1275<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1276<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 ] 1277</code></pre> 1278<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1279to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1280<p>with colors as follows:</p> 1281<pre><code>r' = I0r + I1g + I2b 1282g' = I3r + I4g + I5b 1283b' = I6r + I7g + I8b 1284</code></pre> 1285<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1286values are clipped to fit within the range.<wbr/></p> 1287 </td> 1288 </tr> 1289 1290 <tr class="entries_header"> 1291 <th class="th_details" colspan="5">HAL Implementation Details</th> 1292 </tr> 1293 <tr class="entry_cont"> 1294 <td class="entry_details" colspan="5"> 1295 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1296on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1297That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1298capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1299 </td> 1300 </tr> 1301 1302 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1303 <!-- end of entry --> 1304 1305 1306 <tr class="entry" id="controls_android.colorCorrection.transform"> 1307 <td class="entry_name 1308 " rowspan="3"> 1309 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1310 </td> 1311 <td class="entry_type"> 1312 <span class="entry_type_name">rational</span> 1313 <span class="entry_type_container">x</span> 1314 1315 <span class="entry_type_array"> 1316 3 x 3 1317 </span> 1318 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1319 1320 1321 <span class="entry_type_hwlevel">[full] </span> 1322 1323 1324 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1325 1326 1327 </td> <!-- entry_type --> 1328 1329 <td class="entry_description"> 1330 <p>A color transform matrix to use to transform 1331from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1332 </td> 1333 1334 <td class="entry_units"> 1335 Unitless scale factors 1336 </td> 1337 1338 <td class="entry_range"> 1339 </td> 1340 1341 <td class="entry_tags"> 1342 </td> 1343 1344 </tr> 1345 <tr class="entries_header"> 1346 <th class="th_details" colspan="5">Details</th> 1347 </tr> 1348 <tr class="entry_cont"> 1349 <td class="entry_details" colspan="5"> 1350 <p>This matrix is either set by the camera device when the request 1351<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1352directly by the application in the request when the 1353<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1354<p>In the latter case,<wbr/> the camera device may round the matrix to account 1355for precision issues; the final rounded matrix should be reported back 1356in this matrix result metadata.<wbr/> The transform should keep the magnitude 1357of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1358values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1359<p>The valid range of each matrix element varies on different devices,<wbr/> but 1360values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1361 </td> 1362 </tr> 1363 1364 1365 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1366 <!-- end of entry --> 1367 1368 1369 <tr class="entry" id="controls_android.colorCorrection.gains"> 1370 <td class="entry_name 1371 " rowspan="5"> 1372 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1373 </td> 1374 <td class="entry_type"> 1375 <span class="entry_type_name">float</span> 1376 <span class="entry_type_container">x</span> 1377 1378 <span class="entry_type_array"> 1379 4 1380 </span> 1381 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1382 1383 1384 <span class="entry_type_hwlevel">[full] </span> 1385 1386 1387 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1388 1389 1390 </td> <!-- entry_type --> 1391 1392 <td class="entry_description"> 1393 <p>Gains applying to Bayer raw color channels for 1394white-balance.<wbr/></p> 1395 </td> 1396 1397 <td class="entry_units"> 1398 Unitless gain factors 1399 </td> 1400 1401 <td class="entry_range"> 1402 </td> 1403 1404 <td class="entry_tags"> 1405 </td> 1406 1407 </tr> 1408 <tr class="entries_header"> 1409 <th class="th_details" colspan="5">Details</th> 1410 </tr> 1411 <tr class="entry_cont"> 1412 <td class="entry_details" colspan="5"> 1413 <p>These per-channel gains are either set by the camera device 1414when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1415TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1416request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1417TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1418<p>The gains in the result metadata are the gains actually 1419applied by the camera device to the current frame.<wbr/></p> 1420<p>The valid range of gains varies on different devices,<wbr/> but gains 1421between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1422device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1423this can create color artifacts.<wbr/></p> 1424 </td> 1425 </tr> 1426 1427 <tr class="entries_header"> 1428 <th class="th_details" colspan="5">HAL Implementation Details</th> 1429 </tr> 1430 <tr class="entry_cont"> 1431 <td class="entry_details" colspan="5"> 1432 <p>The 4-channel white-balance gains are defined in 1433the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1434for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1435is the gain for green pixels on the odd rows.<wbr/></p> 1436<p>If a HAL does not support a separate gain for even/<wbr/>odd green 1437channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1438<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1439 </td> 1440 </tr> 1441 1442 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1443 <!-- end of entry --> 1444 1445 1446 <tr class="entry" id="controls_android.colorCorrection.aberrationMode"> 1447 <td class="entry_name 1448 " rowspan="3"> 1449 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1450 </td> 1451 <td class="entry_type"> 1452 <span class="entry_type_name entry_type_name_enum">byte</span> 1453 1454 <span class="entry_type_visibility"> [public]</span> 1455 1456 1457 <span class="entry_type_hwlevel">[legacy] </span> 1458 1459 1460 1461 <ul class="entry_type_enum"> 1462 <li> 1463 <span class="entry_type_enum_name">OFF</span> 1464 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1465 </li> 1466 <li> 1467 <span class="entry_type_enum_name">FAST</span> 1468 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1469relative to sensor raw output.<wbr/></p></span> 1470 </li> 1471 <li> 1472 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1473 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 1474reduced (relative to sensor raw output rate)</p></span> 1475 </li> 1476 </ul> 1477 1478 </td> <!-- entry_type --> 1479 1480 <td class="entry_description"> 1481 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1482 </td> 1483 1484 <td class="entry_units"> 1485 </td> 1486 1487 <td class="entry_range"> 1488 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1489 </td> 1490 1491 <td class="entry_tags"> 1492 </td> 1493 1494 </tr> 1495 <tr class="entries_header"> 1496 <th class="th_details" colspan="5">Details</th> 1497 </tr> 1498 <tr class="entry_cont"> 1499 <td class="entry_details" colspan="5"> 1500 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1501can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1502the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1503minimize the chromatic artifacts that may occur along the object boundaries in an 1504image.<wbr/></p> 1505<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1506correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1507use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1508capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1509applying aberration correction.<wbr/></p> 1510<p>LEGACY devices will always be in FAST mode.<wbr/></p> 1511 </td> 1512 </tr> 1513 1514 1515 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1516 <!-- end of entry --> 1517 1518 1519 1520 <!-- end of kind --> 1521 </tbody> 1522 <tr><td colspan="6" class="kind">dynamic</td></tr> 1523 1524 <thead class="entries_header"> 1525 <tr> 1526 <th class="th_name">Property Name</th> 1527 <th class="th_type">Type</th> 1528 <th class="th_description">Description</th> 1529 <th class="th_units">Units</th> 1530 <th class="th_range">Range</th> 1531 <th class="th_tags">Tags</th> 1532 </tr> 1533 </thead> 1534 1535 <tbody> 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 <tr class="entry" id="dynamic_android.colorCorrection.mode"> 1547 <td class="entry_name 1548 " rowspan="5"> 1549 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1550 </td> 1551 <td class="entry_type"> 1552 <span class="entry_type_name entry_type_name_enum">byte</span> 1553 1554 <span class="entry_type_visibility"> [public]</span> 1555 1556 1557 <span class="entry_type_hwlevel">[full] </span> 1558 1559 1560 1561 <ul class="entry_type_enum"> 1562 <li> 1563 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> 1564 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1565and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1566<p>All advanced white balance adjustments (not specified 1567by our white balance pipeline) must be disabled.<wbr/></p> 1568<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 1569TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1570this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1571 </li> 1572 <li> 1573 <span class="entry_type_enum_name">FAST</span> 1574 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1575capture rate relative to sensor raw output.<wbr/></p> 1576<p>Advanced white balance adjustments above and beyond 1577the specified white balance pipeline may be applied.<wbr/></p> 1578<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 1579the camera device uses the last frame's AWB values 1580(or defaults if AWB has never been run).<wbr/></p></span> 1581 </li> 1582 <li> 1583 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1584 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1585quality but the capture rate might be reduced (relative to sensor 1586raw output rate)</p> 1587<p>Advanced white balance adjustments above and beyond 1588the specified white balance pipeline may be applied.<wbr/></p> 1589<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 1590the camera device uses the last frame's AWB values 1591(or defaults if AWB has never been run).<wbr/></p></span> 1592 </li> 1593 </ul> 1594 1595 </td> <!-- entry_type --> 1596 1597 <td class="entry_description"> 1598 <p>The mode control selects how the image data is converted from the 1599sensor's native color into linear sRGB color.<wbr/></p> 1600 </td> 1601 1602 <td class="entry_units"> 1603 </td> 1604 1605 <td class="entry_range"> 1606 </td> 1607 1608 <td class="entry_tags"> 1609 </td> 1610 1611 </tr> 1612 <tr class="entries_header"> 1613 <th class="th_details" colspan="5">Details</th> 1614 </tr> 1615 <tr class="entry_cont"> 1616 <td class="entry_details" colspan="5"> 1617 <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 1618control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1619application controls how the color mapping is performed.<wbr/></p> 1620<p>We define the expected processing pipeline below.<wbr/> For consistency 1621across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1622<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1623do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1624<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1625camera device (in the results) and be roughly correct.<wbr/></p> 1626<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1627FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1628as what was produced by the camera device in the earlier frame.<wbr/></p> 1629<p>The expected processing pipeline is as follows:</p> 1630<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1631<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1632gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1633matrix (applied after demosaic).<wbr/></p> 1634<p>The 4-channel white-balance gains are defined as:</p> 1635<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1636</code></pre> 1637<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1638output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1639These may be identical for a given camera device implementation; if 1640the camera device does not support a separate gain for even/<wbr/>odd green 1641channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1642<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1643<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1644<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 ] 1645</code></pre> 1646<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1647to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1648<p>with colors as follows:</p> 1649<pre><code>r' = I0r + I1g + I2b 1650g' = I3r + I4g + I5b 1651b' = I6r + I7g + I8b 1652</code></pre> 1653<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1654values are clipped to fit within the range.<wbr/></p> 1655 </td> 1656 </tr> 1657 1658 <tr class="entries_header"> 1659 <th class="th_details" colspan="5">HAL Implementation Details</th> 1660 </tr> 1661 <tr class="entry_cont"> 1662 <td class="entry_details" colspan="5"> 1663 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1664on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1665That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1666capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1667 </td> 1668 </tr> 1669 1670 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1671 <!-- end of entry --> 1672 1673 1674 <tr class="entry" id="dynamic_android.colorCorrection.transform"> 1675 <td class="entry_name 1676 " rowspan="3"> 1677 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1678 </td> 1679 <td class="entry_type"> 1680 <span class="entry_type_name">rational</span> 1681 <span class="entry_type_container">x</span> 1682 1683 <span class="entry_type_array"> 1684 3 x 3 1685 </span> 1686 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1687 1688 1689 <span class="entry_type_hwlevel">[full] </span> 1690 1691 1692 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1693 1694 1695 </td> <!-- entry_type --> 1696 1697 <td class="entry_description"> 1698 <p>A color transform matrix to use to transform 1699from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1700 </td> 1701 1702 <td class="entry_units"> 1703 Unitless scale factors 1704 </td> 1705 1706 <td class="entry_range"> 1707 </td> 1708 1709 <td class="entry_tags"> 1710 </td> 1711 1712 </tr> 1713 <tr class="entries_header"> 1714 <th class="th_details" colspan="5">Details</th> 1715 </tr> 1716 <tr class="entry_cont"> 1717 <td class="entry_details" colspan="5"> 1718 <p>This matrix is either set by the camera device when the request 1719<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1720directly by the application in the request when the 1721<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1722<p>In the latter case,<wbr/> the camera device may round the matrix to account 1723for precision issues; the final rounded matrix should be reported back 1724in this matrix result metadata.<wbr/> The transform should keep the magnitude 1725of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1726values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1727<p>The valid range of each matrix element varies on different devices,<wbr/> but 1728values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1729 </td> 1730 </tr> 1731 1732 1733 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1734 <!-- end of entry --> 1735 1736 1737 <tr class="entry" id="dynamic_android.colorCorrection.gains"> 1738 <td class="entry_name 1739 " rowspan="5"> 1740 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1741 </td> 1742 <td class="entry_type"> 1743 <span class="entry_type_name">float</span> 1744 <span class="entry_type_container">x</span> 1745 1746 <span class="entry_type_array"> 1747 4 1748 </span> 1749 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1750 1751 1752 <span class="entry_type_hwlevel">[full] </span> 1753 1754 1755 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1756 1757 1758 </td> <!-- entry_type --> 1759 1760 <td class="entry_description"> 1761 <p>Gains applying to Bayer raw color channels for 1762white-balance.<wbr/></p> 1763 </td> 1764 1765 <td class="entry_units"> 1766 Unitless gain factors 1767 </td> 1768 1769 <td class="entry_range"> 1770 </td> 1771 1772 <td class="entry_tags"> 1773 </td> 1774 1775 </tr> 1776 <tr class="entries_header"> 1777 <th class="th_details" colspan="5">Details</th> 1778 </tr> 1779 <tr class="entry_cont"> 1780 <td class="entry_details" colspan="5"> 1781 <p>These per-channel gains are either set by the camera device 1782when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1783TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1784request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1785TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1786<p>The gains in the result metadata are the gains actually 1787applied by the camera device to the current frame.<wbr/></p> 1788<p>The valid range of gains varies on different devices,<wbr/> but gains 1789between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1790device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1791this can create color artifacts.<wbr/></p> 1792 </td> 1793 </tr> 1794 1795 <tr class="entries_header"> 1796 <th class="th_details" colspan="5">HAL Implementation Details</th> 1797 </tr> 1798 <tr class="entry_cont"> 1799 <td class="entry_details" colspan="5"> 1800 <p>The 4-channel white-balance gains are defined in 1801the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1802for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1803is the gain for green pixels on the odd rows.<wbr/></p> 1804<p>If a HAL does not support a separate gain for even/<wbr/>odd green 1805channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1806<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1807 </td> 1808 </tr> 1809 1810 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1811 <!-- end of entry --> 1812 1813 1814 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode"> 1815 <td class="entry_name 1816 " rowspan="3"> 1817 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1818 </td> 1819 <td class="entry_type"> 1820 <span class="entry_type_name entry_type_name_enum">byte</span> 1821 1822 <span class="entry_type_visibility"> [public]</span> 1823 1824 1825 <span class="entry_type_hwlevel">[legacy] </span> 1826 1827 1828 1829 <ul class="entry_type_enum"> 1830 <li> 1831 <span class="entry_type_enum_name">OFF</span> 1832 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1833 </li> 1834 <li> 1835 <span class="entry_type_enum_name">FAST</span> 1836 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1837relative to sensor raw output.<wbr/></p></span> 1838 </li> 1839 <li> 1840 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1841 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 1842reduced (relative to sensor raw output rate)</p></span> 1843 </li> 1844 </ul> 1845 1846 </td> <!-- entry_type --> 1847 1848 <td class="entry_description"> 1849 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1850 </td> 1851 1852 <td class="entry_units"> 1853 </td> 1854 1855 <td class="entry_range"> 1856 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1857 </td> 1858 1859 <td class="entry_tags"> 1860 </td> 1861 1862 </tr> 1863 <tr class="entries_header"> 1864 <th class="th_details" colspan="5">Details</th> 1865 </tr> 1866 <tr class="entry_cont"> 1867 <td class="entry_details" colspan="5"> 1868 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1869can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1870the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1871minimize the chromatic artifacts that may occur along the object boundaries in an 1872image.<wbr/></p> 1873<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1874correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1875use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1876capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1877applying aberration correction.<wbr/></p> 1878<p>LEGACY devices will always be in FAST mode.<wbr/></p> 1879 </td> 1880 </tr> 1881 1882 1883 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1884 <!-- end of entry --> 1885 1886 1887 1888 <!-- end of kind --> 1889 </tbody> 1890 <tr><td colspan="6" class="kind">static</td></tr> 1891 1892 <thead class="entries_header"> 1893 <tr> 1894 <th class="th_name">Property Name</th> 1895 <th class="th_type">Type</th> 1896 <th class="th_description">Description</th> 1897 <th class="th_units">Units</th> 1898 <th class="th_range">Range</th> 1899 <th class="th_tags">Tags</th> 1900 </tr> 1901 </thead> 1902 1903 <tbody> 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes"> 1915 <td class="entry_name 1916 " rowspan="5"> 1917 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes 1918 </td> 1919 <td class="entry_type"> 1920 <span class="entry_type_name">byte</span> 1921 <span class="entry_type_container">x</span> 1922 1923 <span class="entry_type_array"> 1924 n 1925 </span> 1926 <span class="entry_type_visibility"> [public as enumList]</span> 1927 1928 1929 <span class="entry_type_hwlevel">[legacy] </span> 1930 1931 1932 <div class="entry_type_notes">list of enums</div> 1933 1934 1935 </td> <!-- entry_type --> 1936 1937 <td class="entry_description"> 1938 <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 1939supported by this camera device.<wbr/></p> 1940 </td> 1941 1942 <td class="entry_units"> 1943 </td> 1944 1945 <td class="entry_range"> 1946 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p> 1947 </td> 1948 1949 <td class="entry_tags"> 1950 <ul class="entry_tags"> 1951 <li><a href="#tag_V1">V1</a></li> 1952 </ul> 1953 </td> 1954 1955 </tr> 1956 <tr class="entries_header"> 1957 <th class="th_details" colspan="5">Details</th> 1958 </tr> 1959 <tr class="entry_cont"> 1960 <td class="entry_details" colspan="5"> 1961 <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 1962aberration correction modes are available for a device,<wbr/> this list will solely include 1963OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p> 1964<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list 1965OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p> 1966<p>LEGACY devices will always only support FAST mode.<wbr/></p> 1967 </td> 1968 </tr> 1969 1970 <tr class="entries_header"> 1971 <th class="th_details" colspan="5">HAL Implementation Details</th> 1972 </tr> 1973 <tr class="entry_cont"> 1974 <td class="entry_details" colspan="5"> 1975 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available 1976on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1977That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1978capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 1979 </td> 1980 </tr> 1981 1982 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1983 <!-- end of entry --> 1984 1985 1986 1987 <!-- end of kind --> 1988 </tbody> 1989 1990 <!-- end of section --> 1991 <tr><td colspan="6" id="section_control" class="section">control</td></tr> 1992 1993 1994 <tr><td colspan="6" class="kind">controls</td></tr> 1995 1996 <thead class="entries_header"> 1997 <tr> 1998 <th class="th_name">Property Name</th> 1999 <th class="th_type">Type</th> 2000 <th class="th_description">Description</th> 2001 <th class="th_units">Units</th> 2002 <th class="th_range">Range</th> 2003 <th class="th_tags">Tags</th> 2004 </tr> 2005 </thead> 2006 2007 <tbody> 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 <tr class="entry" id="controls_android.control.aeAntibandingMode"> 2019 <td class="entry_name 2020 " rowspan="5"> 2021 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 2022 </td> 2023 <td class="entry_type"> 2024 <span class="entry_type_name entry_type_name_enum">byte</span> 2025 2026 <span class="entry_type_visibility"> [public]</span> 2027 2028 2029 <span class="entry_type_hwlevel">[legacy] </span> 2030 2031 2032 2033 <ul class="entry_type_enum"> 2034 <li> 2035 <span class="entry_type_enum_name">OFF</span> 2036 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 2037avoid banding problems.<wbr/></p></span> 2038 </li> 2039 <li> 2040 <span class="entry_type_enum_name">50HZ</span> 2041 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2042avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 2043 </li> 2044 <li> 2045 <span class="entry_type_enum_name">60HZ</span> 2046 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2047avoid banding problems with 60Hz illumination 2048sources.<wbr/></p></span> 2049 </li> 2050 <li> 2051 <span class="entry_type_enum_name">AUTO</span> 2052 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 2053antibanding routine to the current illumination 2054condition.<wbr/> This is the default mode if AUTO is 2055available on given camera device.<wbr/></p></span> 2056 </li> 2057 </ul> 2058 2059 </td> <!-- entry_type --> 2060 2061 <td class="entry_description"> 2062 <p>The desired setting for the camera device's auto-exposure 2063algorithm's antibanding compensation.<wbr/></p> 2064 </td> 2065 2066 <td class="entry_units"> 2067 </td> 2068 2069 <td class="entry_range"> 2070 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 2071 </td> 2072 2073 <td class="entry_tags"> 2074 <ul class="entry_tags"> 2075 <li><a href="#tag_BC">BC</a></li> 2076 </ul> 2077 </td> 2078 2079 </tr> 2080 <tr class="entries_header"> 2081 <th class="th_details" colspan="5">Details</th> 2082 </tr> 2083 <tr class="entry_cont"> 2084 <td class="entry_details" colspan="5"> 2085 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 2086lights,<wbr/> flicker at the rate of the power supply frequency 2087(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 2088typically not noticeable to a person,<wbr/> it can be visible to 2089a camera device.<wbr/> If a camera sets its exposure time to the 2090wrong value,<wbr/> the flicker may become visible in the 2091viewfinder as flicker or in a final captured image,<wbr/> as a 2092set of variable-brightness bands across the image.<wbr/></p> 2093<p>Therefore,<wbr/> the auto-exposure routines of camera devices 2094include antibanding routines that ensure that the chosen 2095exposure value will not cause such banding.<wbr/> The choice of 2096exposure time depends on the rate of flicker,<wbr/> which the 2097camera device can detect automatically,<wbr/> or the expected 2098rate can be selected by the application using this 2099control.<wbr/></p> 2100<p>A given camera device may not support all of the possible 2101options for the antibanding mode.<wbr/> The 2102<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 2103the available modes for a given camera device.<wbr/></p> 2104<p>AUTO mode is the default if it is available on given 2105camera device.<wbr/> When AUTO mode is not available,<wbr/> the 2106default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 2107and 60HZ will be available.<wbr/></p> 2108<p>If manual exposure control is enabled (by setting 2109<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/> 2110then this setting has no effect,<wbr/> and the application must 2111ensure it selects exposure times that do not cause banding 2112issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 2113the application in this.<wbr/></p> 2114 </td> 2115 </tr> 2116 2117 <tr class="entries_header"> 2118 <th class="th_details" colspan="5">HAL Implementation Details</th> 2119 </tr> 2120 <tr class="entry_cont"> 2121 <td class="entry_details" colspan="5"> 2122 <p>For all capture request templates,<wbr/> this field must be set 2123to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 2124the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 212560HZ must be available.<wbr/></p> 2126<p>If manual exposure control is enabled (by setting 2127<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/> 2128then the exposure values provided by the application must not be 2129adjusted for antibanding.<wbr/></p> 2130 </td> 2131 </tr> 2132 2133 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2134 <!-- end of entry --> 2135 2136 2137 <tr class="entry" id="controls_android.control.aeExposureCompensation"> 2138 <td class="entry_name 2139 " rowspan="3"> 2140 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 2141 </td> 2142 <td class="entry_type"> 2143 <span class="entry_type_name">int32</span> 2144 2145 <span class="entry_type_visibility"> [public]</span> 2146 2147 2148 <span class="entry_type_hwlevel">[legacy] </span> 2149 2150 2151 2152 2153 </td> <!-- entry_type --> 2154 2155 <td class="entry_description"> 2156 <p>Adjustment to auto-exposure (AE) target image 2157brightness.<wbr/></p> 2158 </td> 2159 2160 <td class="entry_units"> 2161 Compensation steps 2162 </td> 2163 2164 <td class="entry_range"> 2165 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 2166 </td> 2167 2168 <td class="entry_tags"> 2169 <ul class="entry_tags"> 2170 <li><a href="#tag_BC">BC</a></li> 2171 </ul> 2172 </td> 2173 2174 </tr> 2175 <tr class="entries_header"> 2176 <th class="th_details" colspan="5">Details</th> 2177 </tr> 2178 <tr class="entry_cont"> 2179 <td class="entry_details" colspan="5"> 2180 <p>The adjustment is measured as a count of steps,<wbr/> with the 2181step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 2182allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 2183<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 2184will mean an exposure compensation of +2 EV; -3 will mean an 2185exposure compensation of -1 EV.<wbr/> One EV represents a doubling 2186of image brightness.<wbr/> Note that this control will only be 2187effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 2188will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 2189<p>In the event of exposure compensation value being changed,<wbr/> camera device 2190may take several frames to reach the newly requested exposure target.<wbr/> 2191During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 2192state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 2193change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 2194FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 2195 </td> 2196 </tr> 2197 2198 2199 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2200 <!-- end of entry --> 2201 2202 2203 <tr class="entry" id="controls_android.control.aeLock"> 2204 <td class="entry_name 2205 " rowspan="3"> 2206 android.<wbr/>control.<wbr/>ae<wbr/>Lock 2207 </td> 2208 <td class="entry_type"> 2209 <span class="entry_type_name entry_type_name_enum">byte</span> 2210 2211 <span class="entry_type_visibility"> [public as boolean]</span> 2212 2213 2214 <span class="entry_type_hwlevel">[legacy] </span> 2215 2216 2217 2218 <ul class="entry_type_enum"> 2219 <li> 2220 <span class="entry_type_enum_name">OFF</span> 2221 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 2222is free to update its parameters.<wbr/></p></span> 2223 </li> 2224 <li> 2225 <span class="entry_type_enum_name">ON</span> 2226 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 2227must not update the exposure and sensitivity parameters 2228while the lock is active.<wbr/></p> 2229<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 2230will still take effect while auto-exposure is locked.<wbr/></p> 2231<p>Some rare LEGACY devices may not support 2232this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 2233 </li> 2234 </ul> 2235 2236 </td> <!-- entry_type --> 2237 2238 <td class="entry_description"> 2239 <p>Whether auto-exposure (AE) is currently locked to its latest 2240calculated values.<wbr/></p> 2241 </td> 2242 2243 <td class="entry_units"> 2244 </td> 2245 2246 <td class="entry_range"> 2247 </td> 2248 2249 <td class="entry_tags"> 2250 <ul class="entry_tags"> 2251 <li><a href="#tag_BC">BC</a></li> 2252 </ul> 2253 </td> 2254 2255 </tr> 2256 <tr class="entries_header"> 2257 <th class="th_details" colspan="5">Details</th> 2258 </tr> 2259 <tr class="entry_cont"> 2260 <td class="entry_details" colspan="5"> 2261 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 2262and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 2263<p>Note that even when AE is locked,<wbr/> the flash may be fired if 2264the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 2265ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 2266<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 2267is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 2268<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 2269when AE is already locked,<wbr/> the camera device will not change the exposure time 2270(<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>) 2271parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 2272is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 2273<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/> 2274Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 2275<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 2276the AE if AE is locked by the camera device internally during precapture metering 2277sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 2278ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 2279will never succeed in a sequence of preview requests where AE lock is always set 2280to <code>false</code>.<wbr/></p> 2281<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 2282get locked do not necessarily correspond to the settings that were present in the 2283latest capture result received from the camera device,<wbr/> since additional captures 2284and AE updates may have occurred even before the result was sent out.<wbr/> If an 2285application is switching between automatic and manual control and wishes to eliminate 2286any flicker during the switch,<wbr/> the following procedure is recommended:</p> 2287<ol> 2288<li>Starting in auto-AE mode:</li> 2289<li>Lock AE</li> 2290<li>Wait for the first result to be output that has the AE locked</li> 2291<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 2292<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 2293</ol> 2294<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> 2295 </td> 2296 </tr> 2297 2298 2299 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2300 <!-- end of entry --> 2301 2302 2303 <tr class="entry" id="controls_android.control.aeMode"> 2304 <td class="entry_name 2305 " rowspan="3"> 2306 android.<wbr/>control.<wbr/>ae<wbr/>Mode 2307 </td> 2308 <td class="entry_type"> 2309 <span class="entry_type_name entry_type_name_enum">byte</span> 2310 2311 <span class="entry_type_visibility"> [public]</span> 2312 2313 2314 <span class="entry_type_hwlevel">[legacy] </span> 2315 2316 2317 2318 <ul class="entry_type_enum"> 2319 <li> 2320 <span class="entry_type_enum_name">OFF</span> 2321 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 2322<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2323<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 2324<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 2325device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 2326a flash unit for this camera device.<wbr/></p> 2327<p>Note that auto-white balance (AWB) and auto-focus (AF) 2328behavior is device dependent when AE is in OFF mode.<wbr/> 2329To have consistent behavior across different devices,<wbr/> 2330it is recommended to either set AWB and AF to OFF mode 2331or lock AWB and AF before setting AE to OFF.<wbr/> 2332See <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/> 2333<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> 2334for more details.<wbr/></p> 2335<p>LEGACY devices do not support the OFF mode and will 2336override attempts to use this value to ON.<wbr/></p></span> 2337 </li> 2338 <li> 2339 <span class="entry_type_enum_name">ON</span> 2340 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 2341with no flash control.<wbr/></p> 2342<p>The application's values for 2343<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2344<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2345<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 2346application has control over the various 2347android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 2348 </li> 2349 <li> 2350 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 2351 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2352the camera's flash unit,<wbr/> firing it in low-light 2353conditions.<wbr/></p> 2354<p>The flash may be fired during a precapture sequence 2355(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2356may be fired for captures for which the 2357<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2358STILL_<wbr/>CAPTURE</p></span> 2359 </li> 2360 <li> 2361 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 2362 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2363the camera's flash unit,<wbr/> always firing it for still 2364captures.<wbr/></p> 2365<p>The flash may be fired during a precapture sequence 2366(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2367will always be fired for captures for which the 2368<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2369STILL_<wbr/>CAPTURE</p></span> 2370 </li> 2371 <li> 2372 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 2373 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 2374reduction.<wbr/></p> 2375<p>If deemed necessary by the camera device,<wbr/> a red eye 2376reduction flash will fire during the precapture 2377sequence.<wbr/></p></span> 2378 </li> 2379 </ul> 2380 2381 </td> <!-- entry_type --> 2382 2383 <td class="entry_description"> 2384 <p>The desired mode for the camera device's 2385auto-exposure routine.<wbr/></p> 2386 </td> 2387 2388 <td class="entry_units"> 2389 </td> 2390 2391 <td class="entry_range"> 2392 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 2393 </td> 2394 2395 <td class="entry_tags"> 2396 <ul class="entry_tags"> 2397 <li><a href="#tag_BC">BC</a></li> 2398 </ul> 2399 </td> 2400 2401 </tr> 2402 <tr class="entries_header"> 2403 <th class="th_details" colspan="5">Details</th> 2404 </tr> 2405 <tr class="entry_cont"> 2406 <td class="entry_details" colspan="5"> 2407 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 2408AUTO.<wbr/></p> 2409<p>When set to any of the ON modes,<wbr/> the camera device's 2410auto-exposure routine is enabled,<wbr/> overriding the 2411application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 2412and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2413<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2414<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 2415is selected,<wbr/> the camera device's flash unit controls are 2416also overridden.<wbr/></p> 2417<p>The FLASH modes are only available if the camera device 2418has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 2419<p>If flash TORCH mode is desired,<wbr/> this field must be set to 2420ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 2421<p>When set to any of the ON modes,<wbr/> the values chosen by the 2422camera device auto-exposure routine for the overridden 2423fields for a given capture will be available in its 2424CaptureResult.<wbr/></p> 2425 </td> 2426 </tr> 2427 2428 2429 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2430 <!-- end of entry --> 2431 2432 2433 <tr class="entry" id="controls_android.control.aeRegions"> 2434 <td class="entry_name 2435 " rowspan="5"> 2436 android.<wbr/>control.<wbr/>ae<wbr/>Regions 2437 </td> 2438 <td class="entry_type"> 2439 <span class="entry_type_name">int32</span> 2440 <span class="entry_type_container">x</span> 2441 2442 <span class="entry_type_array"> 2443 5 x area_count 2444 </span> 2445 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2446 2447 2448 2449 2450 2451 2452 </td> <!-- entry_type --> 2453 2454 <td class="entry_description"> 2455 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 2456 </td> 2457 2458 <td class="entry_units"> 2459 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 2460 </td> 2461 2462 <td class="entry_range"> 2463 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 2464<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 2465 </td> 2466 2467 <td class="entry_tags"> 2468 <ul class="entry_tags"> 2469 <li><a href="#tag_BC">BC</a></li> 2470 </ul> 2471 </td> 2472 2473 </tr> 2474 <tr class="entries_header"> 2475 <th class="th_details" colspan="5">Details</th> 2476 </tr> 2477 <tr class="entry_cont"> 2478 <td class="entry_details" colspan="5"> 2479 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 2480Otherwise will always be present.<wbr/></p> 2481<p>The maximum number of regions supported by the device is determined by the value 2482of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 2483<p>The coordinate system is based on the active pixel array,<wbr/> 2484with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2485(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2486<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2487bottom-right pixel in the active pixel array.<wbr/></p> 2488<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 2489for every pixel in the area.<wbr/> This means that a large metering area 2490with the same weight as a smaller area will have more effect in 2491the metering result.<wbr/> Metering areas can partially overlap and the 2492camera device will add the weights in the overlap region.<wbr/></p> 2493<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 2494region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 2495weight is ignored.<wbr/></p> 2496<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 2497camera device.<wbr/></p> 2498<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 2499capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 2500region and output only the intersection rectangle as the metering region in the result 2501metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 2502not reported in the result metadata.<wbr/></p> 2503 </td> 2504 </tr> 2505 2506 <tr class="entries_header"> 2507 <th class="th_details" colspan="5">HAL Implementation Details</th> 2508 </tr> 2509 <tr class="entry_cont"> 2510 <td class="entry_details" colspan="5"> 2511 <p>The HAL level representation of MeteringRectangle[] is a 2512int[5 * area_<wbr/>count].<wbr/> 2513Every five elements represent a metering region of 2514(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2515The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2516exclusive on xmax and ymax.<wbr/></p> 2517 </td> 2518 </tr> 2519 2520 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2521 <!-- end of entry --> 2522 2523 2524 <tr class="entry" id="controls_android.control.aeTargetFpsRange"> 2525 <td class="entry_name 2526 " rowspan="3"> 2527 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 2528 </td> 2529 <td class="entry_type"> 2530 <span class="entry_type_name">int32</span> 2531 <span class="entry_type_container">x</span> 2532 2533 <span class="entry_type_array"> 2534 2 2535 </span> 2536 <span class="entry_type_visibility"> [public as rangeInt]</span> 2537 2538 2539 <span class="entry_type_hwlevel">[legacy] </span> 2540 2541 2542 2543 2544 </td> <!-- entry_type --> 2545 2546 <td class="entry_description"> 2547 <p>Range over which the auto-exposure routine can 2548adjust the capture frame rate to maintain good 2549exposure.<wbr/></p> 2550 </td> 2551 2552 <td class="entry_units"> 2553 Frames per second (FPS) 2554 </td> 2555 2556 <td class="entry_range"> 2557 <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> 2558 </td> 2559 2560 <td class="entry_tags"> 2561 <ul class="entry_tags"> 2562 <li><a href="#tag_BC">BC</a></li> 2563 </ul> 2564 </td> 2565 2566 </tr> 2567 <tr class="entries_header"> 2568 <th class="th_details" colspan="5">Details</th> 2569 </tr> 2570 <tr class="entry_cont"> 2571 <td class="entry_details" colspan="5"> 2572 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 2573manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 2574<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 2575 </td> 2576 </tr> 2577 2578 2579 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2580 <!-- end of entry --> 2581 2582 2583 <tr class="entry" id="controls_android.control.aePrecaptureTrigger"> 2584 <td class="entry_name 2585 " rowspan="5"> 2586 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 2587 </td> 2588 <td class="entry_type"> 2589 <span class="entry_type_name entry_type_name_enum">byte</span> 2590 2591 <span class="entry_type_visibility"> [public]</span> 2592 2593 2594 <span class="entry_type_hwlevel">[limited] </span> 2595 2596 2597 2598 <ul class="entry_type_enum"> 2599 <li> 2600 <span class="entry_type_enum_name">IDLE</span> 2601 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2602 </li> 2603 <li> 2604 <span class="entry_type_enum_name">START</span> 2605 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 2606by the camera device.<wbr/></p> 2607<p>The exact effect of the precapture trigger depends on 2608the current AE mode and state.<wbr/></p></span> 2609 </li> 2610 <li> 2611 <span class="entry_type_enum_name">CANCEL</span> 2612 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 2613precapture metering sequence,<wbr/> the auto-exposure routine will return to its 2614initial state.<wbr/></p></span> 2615 </li> 2616 </ul> 2617 2618 </td> <!-- entry_type --> 2619 2620 <td class="entry_description"> 2621 <p>Whether the camera device will trigger a precapture 2622metering sequence when it processes this request.<wbr/></p> 2623 </td> 2624 2625 <td class="entry_units"> 2626 </td> 2627 2628 <td class="entry_range"> 2629 </td> 2630 2631 <td class="entry_tags"> 2632 <ul class="entry_tags"> 2633 <li><a href="#tag_BC">BC</a></li> 2634 </ul> 2635 </td> 2636 2637 </tr> 2638 <tr class="entries_header"> 2639 <th class="th_details" colspan="5">Details</th> 2640 </tr> 2641 <tr class="entry_cont"> 2642 <td class="entry_details" colspan="5"> 2643 <p>This entry is normally set to IDLE,<wbr/> or is not 2644included at all in the request settings.<wbr/> When included and 2645set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 2646precapture metering sequence.<wbr/></p> 2647<p>When set to CANCEL,<wbr/> the camera device will cancel any active 2648precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 2649If a precapture metering sequence is already completed,<wbr/> and the camera 2650device has implicitly locked the AE for subsequent still capture,<wbr/> the 2651CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 2652<p>The precapture sequence should be triggered before starting a 2653high-quality still capture for final metering decisions to 2654be made,<wbr/> and for firing pre-capture flash pulses to estimate 2655scene brightness and required final capture flash power,<wbr/> when 2656the flash is enabled.<wbr/></p> 2657<p>Normally,<wbr/> this entry should be set to START for only a 2658single request,<wbr/> and the application should wait until the 2659sequence completes before starting a new one.<wbr/></p> 2660<p>When a precapture metering sequence is finished,<wbr/> the camera device 2661may lock the auto-exposure routine internally to be able to accurately expose the 2662subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 2663For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 2664submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 2665submit 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 2666with <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 2667still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 2668API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 2669internally locked AE if the application doesn't submit a still capture request after 2670the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 2671be used in devices that have earlier API levels.<wbr/></p> 2672<p>The exact effect of auto-exposure (AE) precapture trigger 2673depends on the current AE mode and state; see 2674<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 2675details.<wbr/></p> 2676<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 2677capturing a high-resolution JPEG image will automatically trigger a 2678precapture sequence before the high-resolution capture,<wbr/> including 2679potentially firing a pre-capture flash.<wbr/></p> 2680<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 2681simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 2682the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 2683focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 2684trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 2685changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 2686example.<wbr/></p> 2687<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 2688the camera device will complete them in the optimal order for that device.<wbr/></p> 2689 </td> 2690 </tr> 2691 2692 <tr class="entries_header"> 2693 <th class="th_details" colspan="5">HAL Implementation Details</th> 2694 </tr> 2695 <tr class="entry_cont"> 2696 <td class="entry_details" colspan="5"> 2697 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 2698(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 2699treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 2700AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 2701to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 2702 </td> 2703 </tr> 2704 2705 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2706 <!-- end of entry --> 2707 2708 2709 <tr class="entry" id="controls_android.control.afMode"> 2710 <td class="entry_name 2711 " rowspan="5"> 2712 android.<wbr/>control.<wbr/>af<wbr/>Mode 2713 </td> 2714 <td class="entry_type"> 2715 <span class="entry_type_name entry_type_name_enum">byte</span> 2716 2717 <span class="entry_type_visibility"> [public]</span> 2718 2719 2720 <span class="entry_type_hwlevel">[legacy] </span> 2721 2722 2723 2724 <ul class="entry_type_enum"> 2725 <li> 2726 <span class="entry_type_enum_name">OFF</span> 2727 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 2728<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 2729application.<wbr/></p></span> 2730 </li> 2731 <li> 2732 <span class="entry_type_enum_name">AUTO</span> 2733 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 2734<p>In this mode,<wbr/> the lens does not move unless 2735the autofocus trigger action is called.<wbr/> When that trigger 2736is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2737the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 2738<p>Always supported if lens is not fixed focus.<wbr/></p> 2739<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 2740is fixed-focus.<wbr/></p> 2741<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 2742and sets the AF state to INACTIVE.<wbr/></p></span> 2743 </li> 2744 <li> 2745 <span class="entry_type_enum_name">MACRO</span> 2746 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 2747<p>In this mode,<wbr/> the lens does not move unless the 2748autofocus trigger action is called.<wbr/> When that trigger is 2749activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2750the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 2751mode is optimized for focusing on objects very close to 2752the camera.<wbr/></p> 2753<p>When that trigger is activated,<wbr/> AF will transition to 2754ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 2755NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 2756position to default,<wbr/> and sets the AF state to 2757INACTIVE.<wbr/></p></span> 2758 </li> 2759 <li> 2760 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 2761 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2762position continually to attempt to provide a 2763constantly-in-focus image stream.<wbr/></p> 2764<p>The focusing behavior should be suitable for good quality 2765video recording; typically this means slower focus 2766movement and no overshoots.<wbr/> When the AF trigger is not 2767involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 2768and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 2769states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 2770the algorithm should immediately transition into 2771AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2772lens position until a cancel AF trigger is received.<wbr/></p> 2773<p>Once cancel is received,<wbr/> the algorithm should transition 2774back to INACTIVE and resume passive scan.<wbr/> Note that this 2775behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 2776ongoing PASSIVE_<wbr/>SCAN must immediately be 2777canceled.<wbr/></p></span> 2778 </li> 2779 <li> 2780 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 2781 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2782position continually to attempt to provide a 2783constantly-in-focus image stream.<wbr/></p> 2784<p>The focusing behavior should be suitable for still image 2785capture; typically this means focusing as fast as 2786possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 2787algorithm should start in INACTIVE state,<wbr/> and then 2788transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 2789appropriate as it attempts to maintain focus.<wbr/> When the AF 2790trigger is activated,<wbr/> the algorithm should finish its 2791PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 2792AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2793lens position until a cancel AF trigger is received.<wbr/></p> 2794<p>When the AF cancel trigger is activated,<wbr/> the algorithm 2795should transition back to INACTIVE and then act as if it 2796has just been started.<wbr/></p></span> 2797 </li> 2798 <li> 2799 <span class="entry_type_enum_name">EDOF</span> 2800 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 2801<p>The camera device will produce images with an extended 2802depth of field automatically; no special focusing 2803operations need to be done before taking a picture.<wbr/></p> 2804<p>AF triggers are ignored,<wbr/> and the AF state will always be 2805INACTIVE.<wbr/></p></span> 2806 </li> 2807 </ul> 2808 2809 </td> <!-- entry_type --> 2810 2811 <td class="entry_description"> 2812 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 2813mode it is set to.<wbr/></p> 2814 </td> 2815 2816 <td class="entry_units"> 2817 </td> 2818 2819 <td class="entry_range"> 2820 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 2821 </td> 2822 2823 <td class="entry_tags"> 2824 <ul class="entry_tags"> 2825 <li><a href="#tag_BC">BC</a></li> 2826 </ul> 2827 </td> 2828 2829 </tr> 2830 <tr class="entries_header"> 2831 <th class="th_details" colspan="5">Details</th> 2832 </tr> 2833 <tr class="entry_cont"> 2834 <td class="entry_details" colspan="5"> 2835 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 2836(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 2837when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 2838dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 2839setting <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> 2840<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 2841the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 2842in result metadata.<wbr/></p> 2843 </td> 2844 </tr> 2845 2846 <tr class="entries_header"> 2847 <th class="th_details" colspan="5">HAL Implementation Details</th> 2848 </tr> 2849 <tr class="entry_cont"> 2850 <td class="entry_details" colspan="5"> 2851 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 2852request (<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 2853up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 2854<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 2855locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 2856after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 2857the same focal plane remains in focus.<wbr/></p> 2858<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 2859scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 2860(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 2861same lock behavior as above.<wbr/></p> 2862<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 2863focus 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/> 2864However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 2865manual control.<wbr/></p> 2866<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 2867camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 2868remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 2869by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 2870that will arise on camera modules with open-loop VCMs.<wbr/></p> 2871 </td> 2872 </tr> 2873 2874 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2875 <!-- end of entry --> 2876 2877 2878 <tr class="entry" id="controls_android.control.afRegions"> 2879 <td class="entry_name 2880 " rowspan="5"> 2881 android.<wbr/>control.<wbr/>af<wbr/>Regions 2882 </td> 2883 <td class="entry_type"> 2884 <span class="entry_type_name">int32</span> 2885 <span class="entry_type_container">x</span> 2886 2887 <span class="entry_type_array"> 2888 5 x area_count 2889 </span> 2890 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2891 2892 2893 2894 2895 2896 2897 </td> <!-- entry_type --> 2898 2899 <td class="entry_description"> 2900 <p>List of metering areas to use for auto-focus.<wbr/></p> 2901 </td> 2902 2903 <td class="entry_units"> 2904 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 2905 </td> 2906 2907 <td class="entry_range"> 2908 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 2909<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 2910 </td> 2911 2912 <td class="entry_tags"> 2913 <ul class="entry_tags"> 2914 <li><a href="#tag_BC">BC</a></li> 2915 </ul> 2916 </td> 2917 2918 </tr> 2919 <tr class="entries_header"> 2920 <th class="th_details" colspan="5">Details</th> 2921 </tr> 2922 <tr class="entry_cont"> 2923 <td class="entry_details" colspan="5"> 2924 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 2925Otherwise will always be present.<wbr/></p> 2926<p>The maximum number of focus areas supported by the device is determined by the value 2927of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 2928<p>The coordinate system is based on the active pixel array,<wbr/> 2929with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2930(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2931<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2932bottom-right pixel in the active pixel array.<wbr/></p> 2933<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 2934for every pixel in the area.<wbr/> This means that a large metering area 2935with the same weight as a smaller area will have more effect in 2936the metering result.<wbr/> Metering areas can partially overlap and the 2937camera device will add the weights in the overlap region.<wbr/></p> 2938<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 2939is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 2940ignored.<wbr/></p> 2941<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 2942camera device.<wbr/></p> 2943<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 2944capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 2945region and output only the intersection rectangle as the metering region in the result 2946metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 2947not reported in the result metadata.<wbr/></p> 2948 </td> 2949 </tr> 2950 2951 <tr class="entries_header"> 2952 <th class="th_details" colspan="5">HAL Implementation Details</th> 2953 </tr> 2954 <tr class="entry_cont"> 2955 <td class="entry_details" colspan="5"> 2956 <p>The HAL level representation of MeteringRectangle[] is a 2957int[5 * area_<wbr/>count].<wbr/> 2958Every five elements represent a metering region of 2959(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2960The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2961exclusive on xmax and ymax.<wbr/></p> 2962 </td> 2963 </tr> 2964 2965 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2966 <!-- end of entry --> 2967 2968 2969 <tr class="entry" id="controls_android.control.afTrigger"> 2970 <td class="entry_name 2971 " rowspan="5"> 2972 android.<wbr/>control.<wbr/>af<wbr/>Trigger 2973 </td> 2974 <td class="entry_type"> 2975 <span class="entry_type_name entry_type_name_enum">byte</span> 2976 2977 <span class="entry_type_visibility"> [public]</span> 2978 2979 2980 <span class="entry_type_hwlevel">[legacy] </span> 2981 2982 2983 2984 <ul class="entry_type_enum"> 2985 <li> 2986 <span class="entry_type_enum_name">IDLE</span> 2987 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2988 </li> 2989 <li> 2990 <span class="entry_type_enum_name">START</span> 2991 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 2992 </li> 2993 <li> 2994 <span class="entry_type_enum_name">CANCEL</span> 2995 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 2996state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 2997 </li> 2998 </ul> 2999 3000 </td> <!-- entry_type --> 3001 3002 <td class="entry_description"> 3003 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 3004 </td> 3005 3006 <td class="entry_units"> 3007 </td> 3008 3009 <td class="entry_range"> 3010 </td> 3011 3012 <td class="entry_tags"> 3013 <ul class="entry_tags"> 3014 <li><a href="#tag_BC">BC</a></li> 3015 </ul> 3016 </td> 3017 3018 </tr> 3019 <tr class="entries_header"> 3020 <th class="th_details" colspan="5">Details</th> 3021 </tr> 3022 <tr class="entry_cont"> 3023 <td class="entry_details" colspan="5"> 3024 <p>This entry is normally set to IDLE,<wbr/> or is not 3025included at all in the request settings.<wbr/></p> 3026<p>When included and set to START,<wbr/> the camera device will trigger the 3027autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 3028<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 3029and return to its initial AF state.<wbr/></p> 3030<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 3031single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 3032START for multiple captures in a row means restarting the AF operation over 3033and over again.<wbr/></p> 3034<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> 3035<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> 3036simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 3037the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 3038focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 3039trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 3040changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 3041 </td> 3042 </tr> 3043 3044 <tr class="entries_header"> 3045 <th class="th_details" colspan="5">HAL Implementation Details</th> 3046 </tr> 3047 <tr class="entry_cont"> 3048 <td class="entry_details" colspan="5"> 3049 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 3050(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 3051treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 3052AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 3053to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 3054 </td> 3055 </tr> 3056 3057 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3058 <!-- end of entry --> 3059 3060 3061 <tr class="entry" id="controls_android.control.awbLock"> 3062 <td class="entry_name 3063 " rowspan="3"> 3064 android.<wbr/>control.<wbr/>awb<wbr/>Lock 3065 </td> 3066 <td class="entry_type"> 3067 <span class="entry_type_name entry_type_name_enum">byte</span> 3068 3069 <span class="entry_type_visibility"> [public as boolean]</span> 3070 3071 3072 <span class="entry_type_hwlevel">[legacy] </span> 3073 3074 3075 3076 <ul class="entry_type_enum"> 3077 <li> 3078 <span class="entry_type_enum_name">OFF</span> 3079 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 3080algorithm is free to update its parameters if in AUTO 3081mode.<wbr/></p></span> 3082 </li> 3083 <li> 3084 <span class="entry_type_enum_name">ON</span> 3085 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 3086algorithm will not update its parameters while the lock 3087is active.<wbr/></p></span> 3088 </li> 3089 </ul> 3090 3091 </td> <!-- entry_type --> 3092 3093 <td class="entry_description"> 3094 <p>Whether auto-white balance (AWB) is currently locked to its 3095latest calculated values.<wbr/></p> 3096 </td> 3097 3098 <td class="entry_units"> 3099 </td> 3100 3101 <td class="entry_range"> 3102 </td> 3103 3104 <td class="entry_tags"> 3105 <ul class="entry_tags"> 3106 <li><a href="#tag_BC">BC</a></li> 3107 </ul> 3108 </td> 3109 3110 </tr> 3111 <tr class="entries_header"> 3112 <th class="th_details" colspan="5">Details</th> 3113 </tr> 3114 <tr class="entry_cont"> 3115 <td class="entry_details" colspan="5"> 3116 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 3117and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 3118<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 3119get locked do not necessarily correspond to the settings that were present in the 3120latest capture result received from the camera device,<wbr/> since additional captures 3121and AWB updates may have occurred even before the result was sent out.<wbr/> If an 3122application is switching between automatic and manual control and wishes to eliminate 3123any flicker during the switch,<wbr/> the following procedure is recommended:</p> 3124<ol> 3125<li>Starting in auto-AWB mode:</li> 3126<li>Lock AWB</li> 3127<li>Wait for the first result to be output that has the AWB locked</li> 3128<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 3129<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 3130</ol> 3131<p>Note that AWB lock is only meaningful when 3132<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 3133AWB is already fixed to a specific setting.<wbr/></p> 3134<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 3135 </td> 3136 </tr> 3137 3138 3139 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3140 <!-- end of entry --> 3141 3142 3143 <tr class="entry" id="controls_android.control.awbMode"> 3144 <td class="entry_name 3145 " rowspan="3"> 3146 android.<wbr/>control.<wbr/>awb<wbr/>Mode 3147 </td> 3148 <td class="entry_type"> 3149 <span class="entry_type_name entry_type_name_enum">byte</span> 3150 3151 <span class="entry_type_visibility"> [public]</span> 3152 3153 3154 <span class="entry_type_hwlevel">[legacy] </span> 3155 3156 3157 3158 <ul class="entry_type_enum"> 3159 <li> 3160 <span class="entry_type_enum_name">OFF</span> 3161 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 3162<p>The application-selected color transform matrix 3163(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 3164(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 3165device for manual white balance control.<wbr/></p></span> 3166 </li> 3167 <li> 3168 <span class="entry_type_enum_name">AUTO</span> 3169 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 3170<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3171and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3172For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3173values used by the camera device for the transform and gains 3174will be available in the capture result for this request.<wbr/></p></span> 3175 </li> 3176 <li> 3177 <span class="entry_type_enum_name">INCANDESCENT</span> 3178 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3179the camera device uses incandescent light as the assumed scene 3180illumination for white balance.<wbr/></p> 3181<p>While the exact white balance transforms are up to the 3182camera device,<wbr/> they will approximately match the CIE 3183standard illuminant A.<wbr/></p> 3184<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3185and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3186For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3187values used by the camera device for the transform and gains 3188will be available in the capture result for this request.<wbr/></p></span> 3189 </li> 3190 <li> 3191 <span class="entry_type_enum_name">FLUORESCENT</span> 3192 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3193the camera device uses fluorescent light as the assumed scene 3194illumination for white balance.<wbr/></p> 3195<p>While the exact white balance transforms are up to the 3196camera device,<wbr/> they will approximately match the CIE 3197standard illuminant F2.<wbr/></p> 3198<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3199and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3200For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3201values used by the camera device for the transform and gains 3202will be available in the capture result for this request.<wbr/></p></span> 3203 </li> 3204 <li> 3205 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 3206 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3207the camera device uses warm fluorescent light as the assumed scene 3208illumination for white balance.<wbr/></p> 3209<p>While the exact white balance transforms are up to the 3210camera device,<wbr/> they will approximately match the CIE 3211standard illuminant F4.<wbr/></p> 3212<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3213and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3214For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3215values used by the camera device for the transform and gains 3216will be available in the capture result for this request.<wbr/></p></span> 3217 </li> 3218 <li> 3219 <span class="entry_type_enum_name">DAYLIGHT</span> 3220 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3221the camera device uses daylight light as the assumed scene 3222illumination for white balance.<wbr/></p> 3223<p>While the exact white balance transforms are up to the 3224camera device,<wbr/> they will approximately match the CIE 3225standard illuminant D65.<wbr/></p> 3226<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3227and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3228For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3229values used by the camera device for the transform and gains 3230will be available in the capture result for this request.<wbr/></p></span> 3231 </li> 3232 <li> 3233 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 3234 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3235the camera device uses cloudy daylight light as the assumed scene 3236illumination for white balance.<wbr/></p> 3237<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3238and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3239For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3240values used by the camera device for the transform and gains 3241will be available in the capture result for this request.<wbr/></p></span> 3242 </li> 3243 <li> 3244 <span class="entry_type_enum_name">TWILIGHT</span> 3245 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3246the camera device uses twilight light as the assumed scene 3247illumination for white balance.<wbr/></p> 3248<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3249and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3250For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3251values used by the camera device for the transform and gains 3252will be available in the capture result for this request.<wbr/></p></span> 3253 </li> 3254 <li> 3255 <span class="entry_type_enum_name">SHADE</span> 3256 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3257the camera device uses shade light as the assumed scene 3258illumination for white balance.<wbr/></p> 3259<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3260and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3261For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3262values used by the camera device for the transform and gains 3263will be available in the capture result for this request.<wbr/></p></span> 3264 </li> 3265 </ul> 3266 3267 </td> <!-- entry_type --> 3268 3269 <td class="entry_description"> 3270 <p>Whether auto-white balance (AWB) is currently setting the color 3271transform fields,<wbr/> and what its illumination target 3272is.<wbr/></p> 3273 </td> 3274 3275 <td class="entry_units"> 3276 </td> 3277 3278 <td class="entry_range"> 3279 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 3280 </td> 3281 3282 <td class="entry_tags"> 3283 <ul class="entry_tags"> 3284 <li><a href="#tag_BC">BC</a></li> 3285 </ul> 3286 </td> 3287 3288 </tr> 3289 <tr class="entries_header"> 3290 <th class="th_details" colspan="5">Details</th> 3291 </tr> 3292 <tr class="entry_cont"> 3293 <td class="entry_details" colspan="5"> 3294 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 3295<p>When set to the ON mode,<wbr/> the camera device's auto-white balance 3296routine is enabled,<wbr/> overriding the application's selected 3297<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 3298<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> 3299is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 3300also 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 3301setting AE mode to OFF.<wbr/></p> 3302<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 3303routine is disabled.<wbr/> The application manually controls the white 3304balance 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> 3305and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 3306<p>When set to any other modes,<wbr/> the camera device's auto-white 3307balance routine is disabled.<wbr/> The camera device uses each 3308particular illumination target for white balance 3309adjustment.<wbr/> The application's values for 3310<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 3311<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 3312<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 3313 </td> 3314 </tr> 3315 3316 3317 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3318 <!-- end of entry --> 3319 3320 3321 <tr class="entry" id="controls_android.control.awbRegions"> 3322 <td class="entry_name 3323 " rowspan="5"> 3324 android.<wbr/>control.<wbr/>awb<wbr/>Regions 3325 </td> 3326 <td class="entry_type"> 3327 <span class="entry_type_name">int32</span> 3328 <span class="entry_type_container">x</span> 3329 3330 <span class="entry_type_array"> 3331 5 x area_count 3332 </span> 3333 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 3334 3335 3336 3337 3338 3339 3340 </td> <!-- entry_type --> 3341 3342 <td class="entry_description"> 3343 <p>List of metering areas to use for auto-white-balance illuminant 3344estimation.<wbr/></p> 3345 </td> 3346 3347 <td class="entry_units"> 3348 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 3349 </td> 3350 3351 <td class="entry_range"> 3352 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 3353<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 3354 </td> 3355 3356 <td class="entry_tags"> 3357 <ul class="entry_tags"> 3358 <li><a href="#tag_BC">BC</a></li> 3359 </ul> 3360 </td> 3361 3362 </tr> 3363 <tr class="entries_header"> 3364 <th class="th_details" colspan="5">Details</th> 3365 </tr> 3366 <tr class="entry_cont"> 3367 <td class="entry_details" colspan="5"> 3368 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 3369Otherwise will always be present.<wbr/></p> 3370<p>The maximum number of regions supported by the device is determined by the value 3371of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 3372<p>The coordinate system is based on the active pixel array,<wbr/> 3373with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 3374(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3375<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 3376bottom-right pixel in the active pixel array.<wbr/></p> 3377<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 3378for every pixel in the area.<wbr/> This means that a large metering area 3379with the same weight as a smaller area will have more effect in 3380the metering result.<wbr/> Metering areas can partially overlap and the 3381camera device will add the weights in the overlap region.<wbr/></p> 3382<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 3383only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 33840 weight is ignored.<wbr/></p> 3385<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 3386camera device.<wbr/></p> 3387<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 3388capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 3389region and output only the intersection rectangle as the metering region in the result 3390metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 3391not reported in the result metadata.<wbr/></p> 3392 </td> 3393 </tr> 3394 3395 <tr class="entries_header"> 3396 <th class="th_details" colspan="5">HAL Implementation Details</th> 3397 </tr> 3398 <tr class="entry_cont"> 3399 <td class="entry_details" colspan="5"> 3400 <p>The HAL level representation of MeteringRectangle[] is a 3401int[5 * area_<wbr/>count].<wbr/> 3402Every five elements represent a metering region of 3403(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 3404The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 3405exclusive on xmax and ymax.<wbr/></p> 3406 </td> 3407 </tr> 3408 3409 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3410 <!-- end of entry --> 3411 3412 3413 <tr class="entry" id="controls_android.control.captureIntent"> 3414 <td class="entry_name 3415 " rowspan="3"> 3416 android.<wbr/>control.<wbr/>capture<wbr/>Intent 3417 </td> 3418 <td class="entry_type"> 3419 <span class="entry_type_name entry_type_name_enum">byte</span> 3420 3421 <span class="entry_type_visibility"> [public]</span> 3422 3423 3424 <span class="entry_type_hwlevel">[legacy] </span> 3425 3426 3427 3428 <ul class="entry_type_enum"> 3429 <li> 3430 <span class="entry_type_enum_name">CUSTOM</span> 3431 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 3432categories.<wbr/> The camera device will default to preview-like 3433behavior.<wbr/></p></span> 3434 </li> 3435 <li> 3436 <span class="entry_type_enum_name">PREVIEW</span> 3437 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 3438<p>The precapture trigger may be used to start off a metering 3439w/<wbr/>flash sequence.<wbr/></p></span> 3440 </li> 3441 <li> 3442 <span class="entry_type_enum_name">STILL_CAPTURE</span> 3443 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 3444use case.<wbr/></p> 3445<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 3446 </li> 3447 <li> 3448 <span class="entry_type_enum_name">VIDEO_RECORD</span> 3449 <span class="entry_type_enum_notes"><p>This request is for a video recording 3450use case.<wbr/></p></span> 3451 </li> 3452 <li> 3453 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 3454 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 3455image while recording video) use case.<wbr/></p> 3456<p>The camera device should take the highest-quality image 3457possible (given the other settings) without disrupting the 3458frame rate of video recording.<wbr/> </p></span> 3459 </li> 3460 <li> 3461 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 3462 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 3463application will stream full-resolution images and 3464reprocess one or several later for a final 3465capture.<wbr/></p></span> 3466 </li> 3467 <li> 3468 <span class="entry_type_enum_name">MANUAL</span> 3469 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 3470the applications want to directly control the capture parameters.<wbr/></p> 3471<p>For example,<wbr/> the application may wish to manually control 3472<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> 3473 </li> 3474 </ul> 3475 3476 </td> <!-- entry_type --> 3477 3478 <td class="entry_description"> 3479 <p>Information to the camera device 3A (auto-exposure,<wbr/> 3480auto-focus,<wbr/> auto-white balance) routines about the purpose 3481of this capture,<wbr/> to help the camera device to decide optimal 3A 3482strategy.<wbr/></p> 3483 </td> 3484 3485 <td class="entry_units"> 3486 </td> 3487 3488 <td class="entry_range"> 3489 </td> 3490 3491 <td class="entry_tags"> 3492 <ul class="entry_tags"> 3493 <li><a href="#tag_BC">BC</a></li> 3494 </ul> 3495 </td> 3496 3497 </tr> 3498 <tr class="entries_header"> 3499 <th class="th_details" colspan="5">Details</th> 3500 </tr> 3501 <tr class="entry_cont"> 3502 <td class="entry_details" colspan="5"> 3503 <p>This control (except for MANUAL) is only effective if 3504<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 3505<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 3506contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if 3507<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are 3508always supported.<wbr/></p> 3509 </td> 3510 </tr> 3511 3512 3513 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3514 <!-- end of entry --> 3515 3516 3517 <tr class="entry" id="controls_android.control.effectMode"> 3518 <td class="entry_name 3519 " rowspan="3"> 3520 android.<wbr/>control.<wbr/>effect<wbr/>Mode 3521 </td> 3522 <td class="entry_type"> 3523 <span class="entry_type_name entry_type_name_enum">byte</span> 3524 3525 <span class="entry_type_visibility"> [public]</span> 3526 3527 3528 <span class="entry_type_hwlevel">[legacy] </span> 3529 3530 3531 3532 <ul class="entry_type_enum"> 3533 <li> 3534 <span class="entry_type_enum_name">OFF</span> 3535 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 3536 </li> 3537 <li> 3538 <span class="entry_type_enum_name">MONO</span> 3539 <span class="entry_type_enum_optional">[optional]</span> 3540 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 3541a single color.<wbr/></p> 3542<p>This will typically be grayscale.<wbr/></p></span> 3543 </li> 3544 <li> 3545 <span class="entry_type_enum_name">NEGATIVE</span> 3546 <span class="entry_type_enum_optional">[optional]</span> 3547 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 3548are inverted.<wbr/></p></span> 3549 </li> 3550 <li> 3551 <span class="entry_type_enum_name">SOLARIZE</span> 3552 <span class="entry_type_enum_optional">[optional]</span> 3553 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 3554image is wholly or partially reversed in 3555tone.<wbr/></p></span> 3556 </li> 3557 <li> 3558 <span class="entry_type_enum_name">SEPIA</span> 3559 <span class="entry_type_enum_optional">[optional]</span> 3560 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 3561gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 3562 </li> 3563 <li> 3564 <span class="entry_type_enum_name">POSTERIZE</span> 3565 <span class="entry_type_enum_optional">[optional]</span> 3566 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 3567discrete regions of tone rather than a continuous 3568gradient of tones.<wbr/></p></span> 3569 </li> 3570 <li> 3571 <span class="entry_type_enum_name">WHITEBOARD</span> 3572 <span class="entry_type_enum_optional">[optional]</span> 3573 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 3574as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 3575 </li> 3576 <li> 3577 <span class="entry_type_enum_name">BLACKBOARD</span> 3578 <span class="entry_type_enum_optional">[optional]</span> 3579 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 3580as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 3581 </li> 3582 <li> 3583 <span class="entry_type_enum_name">AQUA</span> 3584 <span class="entry_type_enum_optional">[optional]</span> 3585 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 3586 </li> 3587 </ul> 3588 3589 </td> <!-- entry_type --> 3590 3591 <td class="entry_description"> 3592 <p>A special color effect to apply.<wbr/></p> 3593 </td> 3594 3595 <td class="entry_units"> 3596 </td> 3597 3598 <td class="entry_range"> 3599 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 3600 </td> 3601 3602 <td class="entry_tags"> 3603 <ul class="entry_tags"> 3604 <li><a href="#tag_BC">BC</a></li> 3605 </ul> 3606 </td> 3607 3608 </tr> 3609 <tr class="entries_header"> 3610 <th class="th_details" colspan="5">Details</th> 3611 </tr> 3612 <tr class="entry_cont"> 3613 <td class="entry_details" colspan="5"> 3614 <p>When this mode is set,<wbr/> a color effect will be applied 3615to images produced by the camera device.<wbr/> The interpretation 3616and implementation of these color effects is left to the 3617implementor of the camera device,<wbr/> and should not be 3618depended on to be consistent (or present) across all 3619devices.<wbr/></p> 3620 </td> 3621 </tr> 3622 3623 3624 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3625 <!-- end of entry --> 3626 3627 3628 <tr class="entry" id="controls_android.control.mode"> 3629 <td class="entry_name 3630 " rowspan="3"> 3631 android.<wbr/>control.<wbr/>mode 3632 </td> 3633 <td class="entry_type"> 3634 <span class="entry_type_name entry_type_name_enum">byte</span> 3635 3636 <span class="entry_type_visibility"> [public]</span> 3637 3638 3639 <span class="entry_type_hwlevel">[legacy] </span> 3640 3641 3642 3643 <ul class="entry_type_enum"> 3644 <li> 3645 <span class="entry_type_enum_name">OFF</span> 3646 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 3647<p>All control by the device's metering and focusing (3A) 3648routines is disabled,<wbr/> and no other settings in 3649android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 3650<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 3651device to select post-processing values for processing 3652blocks that do not allow for manual control,<wbr/> or are not 3653exposed by the camera API.<wbr/></p> 3654<p>However,<wbr/> the camera device's 3A routines may continue to 3655collect statistics and update their internal state so that 3656when control is switched to AUTO mode,<wbr/> good control values 3657can be immediately applied.<wbr/></p></span> 3658 </li> 3659 <li> 3660 <span class="entry_type_enum_name">AUTO</span> 3661 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 3662<p>Manual control of capture parameters is disabled.<wbr/> All 3663controls in android.<wbr/>control.<wbr/>* besides sceneMode take 3664effect.<wbr/></p></span> 3665 </li> 3666 <li> 3667 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 3668 <span class="entry_type_enum_optional">[optional]</span> 3669 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 3670<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 3671control.<wbr/>afMode controls; the camera device will ignore 3672those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 3673FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 3674This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 3675<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 3676contain some modes other than DISABLED).<wbr/></p></span> 3677 </li> 3678 <li> 3679 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 3680 <span class="entry_type_enum_optional">[optional]</span> 3681 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 3682used by camera device background auto-exposure,<wbr/> auto-white balance and 3683auto-focus algorithms (3A) to update their statistics.<wbr/></p> 3684<p>Specifically,<wbr/> the 3A routines are locked to the last 3685values set from a request with AUTO,<wbr/> OFF,<wbr/> or 3686USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 3687collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 3688discarded by the camera device.<wbr/></p></span> 3689 </li> 3690 </ul> 3691 3692 </td> <!-- entry_type --> 3693 3694 <td class="entry_description"> 3695 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 3696routines.<wbr/></p> 3697 </td> 3698 3699 <td class="entry_units"> 3700 </td> 3701 3702 <td class="entry_range"> 3703 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 3704 </td> 3705 3706 <td class="entry_tags"> 3707 <ul class="entry_tags"> 3708 <li><a href="#tag_BC">BC</a></li> 3709 </ul> 3710 </td> 3711 3712 </tr> 3713 <tr class="entries_header"> 3714 <th class="th_details" colspan="5">Details</th> 3715 </tr> 3716 <tr class="entry_cont"> 3717 <td class="entry_details" colspan="5"> 3718 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 3719by the camera device is disabled.<wbr/> The application must set the fields for 3720capture parameters itself.<wbr/></p> 3721<p>When set to AUTO,<wbr/> the individual algorithm controls in 3722android.<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> 3723<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 3724android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 3725one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 3726as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 3727<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 3728<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 3729is that this frame will not be used by camera device background 3A statistics 3730update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 3731where the application doesn't want a 3A manual control capture to affect 3732the subsequent auto 3A capture results.<wbr/></p> 3733 </td> 3734 </tr> 3735 3736 3737 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3738 <!-- end of entry --> 3739 3740 3741 <tr class="entry" id="controls_android.control.sceneMode"> 3742 <td class="entry_name 3743 " rowspan="5"> 3744 android.<wbr/>control.<wbr/>scene<wbr/>Mode 3745 </td> 3746 <td class="entry_type"> 3747 <span class="entry_type_name entry_type_name_enum">byte</span> 3748 3749 <span class="entry_type_visibility"> [public]</span> 3750 3751 3752 <span class="entry_type_hwlevel">[legacy] </span> 3753 3754 3755 3756 <ul class="entry_type_enum"> 3757 <li> 3758 <span class="entry_type_enum_name">DISABLED</span> 3759 <span class="entry_type_enum_value">0</span> 3760 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 3761 </li> 3762 <li> 3763 <span class="entry_type_enum_name">FACE_PRIORITY</span> 3764 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 3765detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 3766auto-exposure routines.<wbr/></p> 3767<p>If face detection statistics are disabled 3768(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/> 3769this should still operate correctly (but will not return 3770face detection statistics to the framework).<wbr/></p> 3771<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3772<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> 3773remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 3774 </li> 3775 <li> 3776 <span class="entry_type_enum_name">ACTION</span> 3777 <span class="entry_type_enum_optional">[optional]</span> 3778 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 3779<p>Similar to SPORTS.<wbr/></p></span> 3780 </li> 3781 <li> 3782 <span class="entry_type_enum_name">PORTRAIT</span> 3783 <span class="entry_type_enum_optional">[optional]</span> 3784 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 3785 </li> 3786 <li> 3787 <span class="entry_type_enum_name">LANDSCAPE</span> 3788 <span class="entry_type_enum_optional">[optional]</span> 3789 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 3790 </li> 3791 <li> 3792 <span class="entry_type_enum_name">NIGHT</span> 3793 <span class="entry_type_enum_optional">[optional]</span> 3794 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 3795 </li> 3796 <li> 3797 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 3798 <span class="entry_type_enum_optional">[optional]</span> 3799 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 3800settings.<wbr/></p></span> 3801 </li> 3802 <li> 3803 <span class="entry_type_enum_name">THEATRE</span> 3804 <span class="entry_type_enum_optional">[optional]</span> 3805 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 3806remain off.<wbr/></p></span> 3807 </li> 3808 <li> 3809 <span class="entry_type_enum_name">BEACH</span> 3810 <span class="entry_type_enum_optional">[optional]</span> 3811 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 3812 </li> 3813 <li> 3814 <span class="entry_type_enum_name">SNOW</span> 3815 <span class="entry_type_enum_optional">[optional]</span> 3816 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 3817 </li> 3818 <li> 3819 <span class="entry_type_enum_name">SUNSET</span> 3820 <span class="entry_type_enum_optional">[optional]</span> 3821 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 3822 </li> 3823 <li> 3824 <span class="entry_type_enum_name">STEADYPHOTO</span> 3825 <span class="entry_type_enum_optional">[optional]</span> 3826 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 3827device motion (for example: due to hand shake).<wbr/></p></span> 3828 </li> 3829 <li> 3830 <span class="entry_type_enum_name">FIREWORKS</span> 3831 <span class="entry_type_enum_optional">[optional]</span> 3832 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 3833 </li> 3834 <li> 3835 <span class="entry_type_enum_name">SPORTS</span> 3836 <span class="entry_type_enum_optional">[optional]</span> 3837 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 3838<p>Similar to ACTION.<wbr/></p></span> 3839 </li> 3840 <li> 3841 <span class="entry_type_enum_name">PARTY</span> 3842 <span class="entry_type_enum_optional">[optional]</span> 3843 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 3844people.<wbr/></p></span> 3845 </li> 3846 <li> 3847 <span class="entry_type_enum_name">CANDLELIGHT</span> 3848 <span class="entry_type_enum_optional">[optional]</span> 3849 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 3850is a flame.<wbr/></p></span> 3851 </li> 3852 <li> 3853 <span class="entry_type_enum_name">BARCODE</span> 3854 <span class="entry_type_enum_optional">[optional]</span> 3855 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 3856for use by camera applications that wish to read the 3857barcode value.<wbr/></p></span> 3858 </li> 3859 <li> 3860 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span> 3861 <span class="entry_type_enum_deprecated">[deprecated]</span> 3862 <span class="entry_type_enum_optional">[optional]</span> 3863 <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> 3864and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 3865for high speed video recording.<wbr/></p> 3866<p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 3867<p>The supported high speed video sizes and fps ranges are specified in 3868<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 3869output frame rates,<wbr/> the application is only allowed to select video size 3870and fps range combinations listed in this static metadata.<wbr/> The fps range 3871can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 3872<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 3873ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 3874controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 3875and post-processing parameters is possible.<wbr/> All other controls operate the 3876same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 3877android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 3878<ul> 3879<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 3880<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 3881<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 3882<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 3883<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 3884<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 3885<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 3886<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 3887<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 3888<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 3889</ul> 3890<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 3891<ul> 3892<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> 3893<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 3894<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 3895<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 3896</ul> 3897<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 3898be lower than what camera can output,<wbr/> depending on the destination Surfaces for 3899the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 3900the application need check if the video encoder is capable of supporting the 3901high frame rate for a given video size,<wbr/> or it will end up with lower recording 3902frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 3903rate will be bounded by the screen refresh rate.<wbr/></p> 3904<p>The camera device will only support up to 2 output high speed streams 3905(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 3906in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 3907<ul> 3908<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 3909format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 3910min(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> 3911<li>The stream sizes are selected from the sizes reported by 3912<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 3913<li>No processed non-stalling or raw streams are configured.<wbr/></li> 3914</ul> 3915<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 3916<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/> 3917the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 3918and the returned capture result metadata will give the fps range choosen 3919by the camera device.<wbr/></p> 3920<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 3921reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 3922the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 3923 </li> 3924 <li> 3925 <span class="entry_type_enum_name">HDR</span> 3926 <span class="entry_type_enum_optional">[optional]</span> 3927 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 3928<p>In this scene mode,<wbr/> the camera device captures images 3929that keep a larger range of scene illumination levels 3930visible in the final image.<wbr/> For example,<wbr/> when taking a 3931picture of a object in front of a bright window,<wbr/> both 3932the object and the scene through the window may be 3933visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 3934one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 3935HDR mode generally takes much longer to capture a single 3936image,<wbr/> has no user control,<wbr/> and may have other artifacts 3937depending on the HDR method used.<wbr/></p> 3938<p>Therefore,<wbr/> HDR captures operate at a much slower rate 3939than regular captures.<wbr/></p> 3940<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 3941is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 3942STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 3943using a high dynamic range capture technique.<wbr/> On LEGACY 3944devices,<wbr/> captures that target a JPEG-format output will 3945be captured with HDR,<wbr/> and the capture intent is not 3946relevant.<wbr/></p> 3947<p>The HDR capture may involve the device capturing a burst 3948of images internally and combining them into one,<wbr/> or it 3949may involve the device using specialized high dynamic 3950range capture hardware.<wbr/> In all cases,<wbr/> a single image is 3951produced in response to a capture request submitted 3952while in HDR mode.<wbr/></p> 3953<p>Since substantial post-processing is generally needed to 3954produce an HDR image,<wbr/> only YUV and JPEG outputs are 3955supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only 3956JPEG outputs are supported for LEGACY HDR 3957captures.<wbr/> Using a RAW output for HDR capture is not 3958supported.<wbr/></p></span> 3959 </li> 3960 <li> 3961 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span> 3962 <span class="entry_type_enum_optional">[optional]</span> 3963 <span class="entry_type_enum_hidden">[hidden]</span> 3964 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 3965device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 3966under low light conditions.<wbr/></p> 3967<p>The camera device may be tuned to expose the images in a reduced 3968sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 3969if 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/> 3970the camera device auto-exposure routine tuning process may limit the actual 3971exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 3972exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 3973low light may be under-exposed when the sensor max exposure time (bounded by the 3974<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 3975ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 3976camera device auto-exposure routine to increase the sensitivity up to the max 3977sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 3978dark and the max exposure time is reached.<wbr/> The captured images may be noisier 3979compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 3980recommended that the application only use this scene mode when it is capable of 3981reducing the noise level of the captured images.<wbr/></p> 3982<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3983<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> 3984remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 3985 </li> 3986 </ul> 3987 3988 </td> <!-- entry_type --> 3989 3990 <td class="entry_description"> 3991 <p>Control for which scene mode is currently active.<wbr/></p> 3992 </td> 3993 3994 <td class="entry_units"> 3995 </td> 3996 3997 <td class="entry_range"> 3998 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 3999 </td> 4000 4001 <td class="entry_tags"> 4002 <ul class="entry_tags"> 4003 <li><a href="#tag_BC">BC</a></li> 4004 </ul> 4005 </td> 4006 4007 </tr> 4008 <tr class="entries_header"> 4009 <th class="th_details" colspan="5">Details</th> 4010 </tr> 4011 <tr class="entry_cont"> 4012 <td class="entry_details" colspan="5"> 4013 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 4014capture settings.<wbr/></p> 4015<p>This is the mode that that is active when 4016<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 4017disable <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> 4018while in use.<wbr/></p> 4019<p>The interpretation and implementation of these scene modes is left 4020to the implementor of the camera device.<wbr/> Their behavior will not be 4021consistent across all devices,<wbr/> and any given device may only implement 4022a subset of these modes.<wbr/></p> 4023 </td> 4024 </tr> 4025 4026 <tr class="entries_header"> 4027 <th class="th_details" colspan="5">HAL Implementation Details</th> 4028 </tr> 4029 <tr class="entry_cont"> 4030 <td class="entry_details" colspan="5"> 4031 <p>HAL implementations that include scene modes are expected to provide 4032the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4033<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 4034<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 4035<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/> 4036the HAL must list supported video size and fps range in 4037<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/> 40381280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming 4039mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture 4040requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/> 4041This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 4042<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 4043capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 4044 </td> 4045 </tr> 4046 4047 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4048 <!-- end of entry --> 4049 4050 4051 <tr class="entry" id="controls_android.control.videoStabilizationMode"> 4052 <td class="entry_name 4053 " rowspan="3"> 4054 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 4055 </td> 4056 <td class="entry_type"> 4057 <span class="entry_type_name entry_type_name_enum">byte</span> 4058 4059 <span class="entry_type_visibility"> [public]</span> 4060 4061 4062 <span class="entry_type_hwlevel">[legacy] </span> 4063 4064 4065 4066 <ul class="entry_type_enum"> 4067 <li> 4068 <span class="entry_type_enum_name">OFF</span> 4069 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 4070 </li> 4071 <li> 4072 <span class="entry_type_enum_name">ON</span> 4073 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 4074 </li> 4075 </ul> 4076 4077 </td> <!-- entry_type --> 4078 4079 <td class="entry_description"> 4080 <p>Whether video stabilization is 4081active.<wbr/></p> 4082 </td> 4083 4084 <td class="entry_units"> 4085 </td> 4086 4087 <td class="entry_range"> 4088 </td> 4089 4090 <td class="entry_tags"> 4091 <ul class="entry_tags"> 4092 <li><a href="#tag_BC">BC</a></li> 4093 </ul> 4094 </td> 4095 4096 </tr> 4097 <tr class="entries_header"> 4098 <th class="th_details" colspan="5">Details</th> 4099 </tr> 4100 <tr class="entry_cont"> 4101 <td class="entry_details" colspan="5"> 4102 <p>Video stabilization automatically warps images from 4103the camera in order to stabilize motion between consecutive frames.<wbr/></p> 4104<p>If enabled,<wbr/> video stabilization can modify the 4105<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 4106<p>Switching between different video stabilization modes may take several 4107frames to initialize,<wbr/> the camera device will report the current mode 4108in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 4109the video stabilization modes in the first several capture results may 4110still be "OFF",<wbr/> and it will become "ON" when the initialization is 4111done.<wbr/></p> 4112<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 4113stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 4114that an output targeting a MediaRecorder or MediaCodec will be stabilized if 4115the recording resolution is less than or equal to 1920 x 1080 (width less than 4116or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 4117frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult 4118<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return 4119OFF if the recording output is not stabilized,<wbr/> or if there are no output 4120Surface types that can be stabilized.<wbr/></p> 4121<p>If a camera device supports both this mode and OIS 4122(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 4123produce undesirable interaction,<wbr/> so it is recommended not to enable 4124both at the same time.<wbr/></p> 4125 </td> 4126 </tr> 4127 4128 4129 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4130 <!-- end of entry --> 4131 4132 4133 4134 <!-- end of kind --> 4135 </tbody> 4136 <tr><td colspan="6" class="kind">static</td></tr> 4137 4138 <thead class="entries_header"> 4139 <tr> 4140 <th class="th_name">Property Name</th> 4141 <th class="th_type">Type</th> 4142 <th class="th_description">Description</th> 4143 <th class="th_units">Units</th> 4144 <th class="th_range">Range</th> 4145 <th class="th_tags">Tags</th> 4146 </tr> 4147 </thead> 4148 4149 <tbody> 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes"> 4161 <td class="entry_name 4162 " rowspan="3"> 4163 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes 4164 </td> 4165 <td class="entry_type"> 4166 <span class="entry_type_name">byte</span> 4167 <span class="entry_type_container">x</span> 4168 4169 <span class="entry_type_array"> 4170 n 4171 </span> 4172 <span class="entry_type_visibility"> [public as enumList]</span> 4173 4174 4175 <span class="entry_type_hwlevel">[legacy] </span> 4176 4177 4178 <div class="entry_type_notes">list of enums</div> 4179 4180 4181 </td> <!-- entry_type --> 4182 4183 <td class="entry_description"> 4184 <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 4185supported by this camera device.<wbr/></p> 4186 </td> 4187 4188 <td class="entry_units"> 4189 </td> 4190 4191 <td class="entry_range"> 4192 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p> 4193 </td> 4194 4195 <td class="entry_tags"> 4196 <ul class="entry_tags"> 4197 <li><a href="#tag_BC">BC</a></li> 4198 </ul> 4199 </td> 4200 4201 </tr> 4202 <tr class="entries_header"> 4203 <th class="th_details" colspan="5">Details</th> 4204 </tr> 4205 <tr class="entry_cont"> 4206 <td class="entry_details" colspan="5"> 4207 <p>Not all of the auto-exposure anti-banding modes may be 4208supported by a given camera device.<wbr/> This field lists the 4209valid anti-banding modes that the application may request 4210for this camera device with the 4211<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p> 4212 </td> 4213 </tr> 4214 4215 4216 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4217 <!-- end of entry --> 4218 4219 4220 <tr class="entry" id="static_android.control.aeAvailableModes"> 4221 <td class="entry_name 4222 " rowspan="3"> 4223 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes 4224 </td> 4225 <td class="entry_type"> 4226 <span class="entry_type_name">byte</span> 4227 <span class="entry_type_container">x</span> 4228 4229 <span class="entry_type_array"> 4230 n 4231 </span> 4232 <span class="entry_type_visibility"> [public as enumList]</span> 4233 4234 4235 <span class="entry_type_hwlevel">[legacy] </span> 4236 4237 4238 <div class="entry_type_notes">list of enums</div> 4239 4240 4241 </td> <!-- entry_type --> 4242 4243 <td class="entry_description"> 4244 <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 4245device.<wbr/></p> 4246 </td> 4247 4248 <td class="entry_units"> 4249 </td> 4250 4251 <td class="entry_range"> 4252 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p> 4253 </td> 4254 4255 <td class="entry_tags"> 4256 <ul class="entry_tags"> 4257 <li><a href="#tag_BC">BC</a></li> 4258 </ul> 4259 </td> 4260 4261 </tr> 4262 <tr class="entries_header"> 4263 <th class="th_details" colspan="5">Details</th> 4264 </tr> 4265 <tr class="entry_cont"> 4266 <td class="entry_details" colspan="5"> 4267 <p>Not all the auto-exposure modes may be supported by a 4268given camera device,<wbr/> especially if no flash unit is 4269available.<wbr/> This entry lists the valid modes for 4270<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p> 4271<p>All camera devices support ON,<wbr/> and all camera devices with flash 4272units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p> 4273<p>FULL mode camera devices always support OFF mode,<wbr/> 4274which enables application control of camera exposure time,<wbr/> 4275sensitivity,<wbr/> and frame duration.<wbr/></p> 4276<p>LEGACY mode camera devices never support OFF mode.<wbr/> 4277LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR 4278capability.<wbr/></p> 4279 </td> 4280 </tr> 4281 4282 4283 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4284 <!-- end of entry --> 4285 4286 4287 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges"> 4288 <td class="entry_name 4289 " rowspan="3"> 4290 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges 4291 </td> 4292 <td class="entry_type"> 4293 <span class="entry_type_name">int32</span> 4294 <span class="entry_type_container">x</span> 4295 4296 <span class="entry_type_array"> 4297 2 x n 4298 </span> 4299 <span class="entry_type_visibility"> [public as rangeInt]</span> 4300 4301 4302 <span class="entry_type_hwlevel">[legacy] </span> 4303 4304 4305 <div class="entry_type_notes">list of pairs of frame rates</div> 4306 4307 4308 </td> <!-- entry_type --> 4309 4310 <td class="entry_description"> 4311 <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 4312this camera device.<wbr/></p> 4313 </td> 4314 4315 <td class="entry_units"> 4316 Frames per second (FPS) 4317 </td> 4318 4319 <td class="entry_range"> 4320 </td> 4321 4322 <td class="entry_tags"> 4323 <ul class="entry_tags"> 4324 <li><a href="#tag_BC">BC</a></li> 4325 </ul> 4326 </td> 4327 4328 </tr> 4329 <tr class="entries_header"> 4330 <th class="th_details" colspan="5">Details</th> 4331 </tr> 4332 <tr class="entry_cont"> 4333 <td class="entry_details" colspan="5"> 4334 <p>For devices at the LEGACY level or above:</p> 4335<ul> 4336<li> 4337<p>For constant-framerate recording,<wbr/> for each normal 4338<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a 4339<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has 4340<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in 4341the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/> 4342<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is 4343supported by the device and has 4344<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will 4345always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p> 4346</li> 4347<li> 4348<p>Also,<wbr/> a camera device must either not support any 4349<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> 4350or support at least one 4351normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has 4352<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> >= 24.<wbr/></p> 4353</li> 4354</ul> 4355<p>For devices at the LIMITED level or above:</p> 4356<ul> 4357<li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) 4358and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the 4359maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li> 4360</ul> 4361 </td> 4362 </tr> 4363 4364 4365 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4366 <!-- end of entry --> 4367 4368 4369 <tr class="entry" id="static_android.control.aeCompensationRange"> 4370 <td class="entry_name 4371 " rowspan="1"> 4372 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range 4373 </td> 4374 <td class="entry_type"> 4375 <span class="entry_type_name">int32</span> 4376 <span class="entry_type_container">x</span> 4377 4378 <span class="entry_type_array"> 4379 2 4380 </span> 4381 <span class="entry_type_visibility"> [public as rangeInt]</span> 4382 4383 4384 <span class="entry_type_hwlevel">[legacy] </span> 4385 4386 4387 4388 4389 </td> <!-- entry_type --> 4390 4391 <td class="entry_description"> 4392 <p>Maximum and minimum exposure compensation values for 4393<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/> 4394that are supported by this camera device.<wbr/></p> 4395 </td> 4396 4397 <td class="entry_units"> 4398 </td> 4399 4400 <td class="entry_range"> 4401 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p> 4402<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure 4403compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p> 4404<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> 4405<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> 4406<p>LEGACY devices may support a smaller range than this.<wbr/></p> 4407 </td> 4408 4409 <td class="entry_tags"> 4410 <ul class="entry_tags"> 4411 <li><a href="#tag_BC">BC</a></li> 4412 </ul> 4413 </td> 4414 4415 </tr> 4416 4417 4418 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4419 <!-- end of entry --> 4420 4421 4422 <tr class="entry" id="static_android.control.aeCompensationStep"> 4423 <td class="entry_name 4424 " rowspan="5"> 4425 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step 4426 </td> 4427 <td class="entry_type"> 4428 <span class="entry_type_name">rational</span> 4429 4430 <span class="entry_type_visibility"> [public]</span> 4431 4432 4433 <span class="entry_type_hwlevel">[legacy] </span> 4434 4435 4436 4437 4438 </td> <!-- entry_type --> 4439 4440 <td class="entry_description"> 4441 <p>Smallest step by which the exposure compensation 4442can be changed.<wbr/></p> 4443 </td> 4444 4445 <td class="entry_units"> 4446 Exposure Value (EV) 4447 </td> 4448 4449 <td class="entry_range"> 4450 </td> 4451 4452 <td class="entry_tags"> 4453 <ul class="entry_tags"> 4454 <li><a href="#tag_BC">BC</a></li> 4455 </ul> 4456 </td> 4457 4458 </tr> 4459 <tr class="entries_header"> 4460 <th class="th_details" colspan="5">Details</th> 4461 </tr> 4462 <tr class="entry_cont"> 4463 <td class="entry_details" colspan="5"> 4464 <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 4465a 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 4466that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p> 4467<p>One unit of EV compensation changes the brightness of the captured image by a factor 4468of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p> 4469 </td> 4470 </tr> 4471 4472 <tr class="entries_header"> 4473 <th class="th_details" colspan="5">HAL Implementation Details</th> 4474 </tr> 4475 <tr class="entry_cont"> 4476 <td class="entry_details" colspan="5"> 4477 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p> 4478 </td> 4479 </tr> 4480 4481 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4482 <!-- end of entry --> 4483 4484 4485 <tr class="entry" id="static_android.control.afAvailableModes"> 4486 <td class="entry_name 4487 " rowspan="3"> 4488 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes 4489 </td> 4490 <td class="entry_type"> 4491 <span class="entry_type_name">byte</span> 4492 <span class="entry_type_container">x</span> 4493 4494 <span class="entry_type_array"> 4495 n 4496 </span> 4497 <span class="entry_type_visibility"> [public as enumList]</span> 4498 4499 4500 <span class="entry_type_hwlevel">[legacy] </span> 4501 4502 4503 <div class="entry_type_notes">List of enums</div> 4504 4505 4506 </td> <!-- entry_type --> 4507 4508 <td class="entry_description"> 4509 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are 4510supported by this camera device.<wbr/></p> 4511 </td> 4512 4513 <td class="entry_units"> 4514 </td> 4515 4516 <td class="entry_range"> 4517 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p> 4518 </td> 4519 4520 <td class="entry_tags"> 4521 <ul class="entry_tags"> 4522 <li><a href="#tag_BC">BC</a></li> 4523 </ul> 4524 </td> 4525 4526 </tr> 4527 <tr class="entries_header"> 4528 <th class="th_details" colspan="5">Details</th> 4529 </tr> 4530 <tr class="entry_cont"> 4531 <td class="entry_details" colspan="5"> 4532 <p>Not all the auto-focus modes may be supported by a 4533given camera device.<wbr/> This entry lists the valid modes for 4534<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p> 4535<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all 4536camera devices with adjustable focuser units 4537(<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> 4538<p>LEGACY devices will support OFF mode only if they support 4539focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to 4540<code>0.<wbr/>0f</code>).<wbr/></p> 4541 </td> 4542 </tr> 4543 4544 4545 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4546 <!-- end of entry --> 4547 4548 4549 <tr class="entry" id="static_android.control.availableEffects"> 4550 <td class="entry_name 4551 " rowspan="3"> 4552 android.<wbr/>control.<wbr/>available<wbr/>Effects 4553 </td> 4554 <td class="entry_type"> 4555 <span class="entry_type_name">byte</span> 4556 <span class="entry_type_container">x</span> 4557 4558 <span class="entry_type_array"> 4559 n 4560 </span> 4561 <span class="entry_type_visibility"> [public as enumList]</span> 4562 4563 4564 <span class="entry_type_hwlevel">[legacy] </span> 4565 4566 4567 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div> 4568 4569 4570 </td> <!-- entry_type --> 4571 4572 <td class="entry_description"> 4573 <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 4574device.<wbr/></p> 4575 </td> 4576 4577 <td class="entry_units"> 4578 </td> 4579 4580 <td class="entry_range"> 4581 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p> 4582 </td> 4583 4584 <td class="entry_tags"> 4585 <ul class="entry_tags"> 4586 <li><a href="#tag_BC">BC</a></li> 4587 </ul> 4588 </td> 4589 4590 </tr> 4591 <tr class="entries_header"> 4592 <th class="th_details" colspan="5">Details</th> 4593 </tr> 4594 <tr class="entry_cont"> 4595 <td class="entry_details" colspan="5"> 4596 <p>This list contains the color effect modes that can be applied to 4597images produced by the camera device.<wbr/> 4598Implementations are not expected to be consistent across all devices.<wbr/> 4599If no color effect modes are available for a device,<wbr/> this will only list 4600OFF.<wbr/></p> 4601<p>A color effect will only be applied if 4602<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p> 4603<p>This control has no effect on the operation of other control routines such 4604as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p> 4605 </td> 4606 </tr> 4607 4608 4609 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4610 <!-- end of entry --> 4611 4612 4613 <tr class="entry" id="static_android.control.availableSceneModes"> 4614 <td class="entry_name 4615 " rowspan="3"> 4616 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes 4617 </td> 4618 <td class="entry_type"> 4619 <span class="entry_type_name">byte</span> 4620 <span class="entry_type_container">x</span> 4621 4622 <span class="entry_type_array"> 4623 n 4624 </span> 4625 <span class="entry_type_visibility"> [public as enumList]</span> 4626 4627 4628 <span class="entry_type_hwlevel">[legacy] </span> 4629 4630 4631 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div> 4632 4633 4634 </td> <!-- entry_type --> 4635 4636 <td class="entry_description"> 4637 <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 4638device.<wbr/></p> 4639 </td> 4640 4641 <td class="entry_units"> 4642 </td> 4643 4644 <td class="entry_range"> 4645 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p> 4646 </td> 4647 4648 <td class="entry_tags"> 4649 <ul class="entry_tags"> 4650 <li><a href="#tag_BC">BC</a></li> 4651 </ul> 4652 </td> 4653 4654 </tr> 4655 <tr class="entries_header"> 4656 <th class="th_details" colspan="5">Details</th> 4657 </tr> 4658 <tr class="entry_cont"> 4659 <td class="entry_details" colspan="5"> 4660 <p>This list contains scene modes that can be set for the camera device.<wbr/> 4661Only scene modes that have been fully implemented for the 4662camera device may be included here.<wbr/> Implementations are not expected 4663to be consistent across all devices.<wbr/></p> 4664<p>If no scene modes are supported by the camera device,<wbr/> this 4665will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p> 4666<p>FACE_<wbr/>PRIORITY is always listed if face detection is 4667supported (i.<wbr/>e.<wbr/><code><a href="#static_android.statistics.info.maxFaceCount">android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count</a> > 46680</code>).<wbr/></p> 4669 </td> 4670 </tr> 4671 4672 4673 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4674 <!-- end of entry --> 4675 4676 4677 <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> 4678 <td class="entry_name 4679 " rowspan="3"> 4680 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes 4681 </td> 4682 <td class="entry_type"> 4683 <span class="entry_type_name">byte</span> 4684 <span class="entry_type_container">x</span> 4685 4686 <span class="entry_type_array"> 4687 n 4688 </span> 4689 <span class="entry_type_visibility"> [public as enumList]</span> 4690 4691 4692 <span class="entry_type_hwlevel">[legacy] </span> 4693 4694 4695 <div class="entry_type_notes">List of enums.<wbr/></div> 4696 4697 4698 </td> <!-- entry_type --> 4699 4700 <td class="entry_description"> 4701 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> 4702that are supported by this camera device.<wbr/></p> 4703 </td> 4704 4705 <td class="entry_units"> 4706 </td> 4707 4708 <td class="entry_range"> 4709 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p> 4710 </td> 4711 4712 <td class="entry_tags"> 4713 <ul class="entry_tags"> 4714 <li><a href="#tag_BC">BC</a></li> 4715 </ul> 4716 </td> 4717 4718 </tr> 4719 <tr class="entries_header"> 4720 <th class="th_details" colspan="5">Details</th> 4721 </tr> 4722 <tr class="entry_cont"> 4723 <td class="entry_details" colspan="5"> 4724 <p>OFF will always be listed.<wbr/></p> 4725 </td> 4726 </tr> 4727 4728 4729 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4730 <!-- end of entry --> 4731 4732 4733 <tr class="entry" id="static_android.control.awbAvailableModes"> 4734 <td class="entry_name 4735 " rowspan="3"> 4736 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes 4737 </td> 4738 <td class="entry_type"> 4739 <span class="entry_type_name">byte</span> 4740 <span class="entry_type_container">x</span> 4741 4742 <span class="entry_type_array"> 4743 n 4744 </span> 4745 <span class="entry_type_visibility"> [public as enumList]</span> 4746 4747 4748 <span class="entry_type_hwlevel">[legacy] </span> 4749 4750 4751 <div class="entry_type_notes">List of enums</div> 4752 4753 4754 </td> <!-- entry_type --> 4755 4756 <td class="entry_description"> 4757 <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 4758camera device.<wbr/></p> 4759 </td> 4760 4761 <td class="entry_units"> 4762 </td> 4763 4764 <td class="entry_range"> 4765 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p> 4766 </td> 4767 4768 <td class="entry_tags"> 4769 <ul class="entry_tags"> 4770 <li><a href="#tag_BC">BC</a></li> 4771 </ul> 4772 </td> 4773 4774 </tr> 4775 <tr class="entries_header"> 4776 <th class="th_details" colspan="5">Details</th> 4777 </tr> 4778 <tr class="entry_cont"> 4779 <td class="entry_details" colspan="5"> 4780 <p>Not all the auto-white-balance modes may be supported by a 4781given camera device.<wbr/> This entry lists the valid modes for 4782<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p> 4783<p>All camera devices will support ON mode.<wbr/></p> 4784<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF 4785mode,<wbr/> which enables application control of white balance,<wbr/> by using 4786<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 4787mode camera devices.<wbr/></p> 4788 </td> 4789 </tr> 4790 4791 4792 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4793 <!-- end of entry --> 4794 4795 4796 <tr class="entry" id="static_android.control.maxRegions"> 4797 <td class="entry_name 4798 " rowspan="1"> 4799 android.<wbr/>control.<wbr/>max<wbr/>Regions 4800 </td> 4801 <td class="entry_type"> 4802 <span class="entry_type_name">int32</span> 4803 <span class="entry_type_container">x</span> 4804 4805 <span class="entry_type_array"> 4806 3 4807 </span> 4808 <span class="entry_type_visibility"> [hidden]</span> 4809 4810 4811 <span class="entry_type_hwlevel">[legacy] </span> 4812 4813 4814 4815 4816 </td> <!-- entry_type --> 4817 4818 <td class="entry_description"> 4819 <p>List of the maximum number of regions that can be used for metering in 4820auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); 4821this corresponds to the the maximum number of elements in 4822<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/> 4823and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 4824 </td> 4825 4826 <td class="entry_units"> 4827 </td> 4828 4829 <td class="entry_range"> 4830 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices 4831this value must be >= 1 for AE and AF.<wbr/> The order of the elements is: 4832<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p> 4833 </td> 4834 4835 <td class="entry_tags"> 4836 <ul class="entry_tags"> 4837 <li><a href="#tag_BC">BC</a></li> 4838 </ul> 4839 </td> 4840 4841 </tr> 4842 4843 4844 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4845 <!-- end of entry --> 4846 4847 4848 <tr class="entry" id="static_android.control.maxRegionsAe"> 4849 <td class="entry_name 4850 " rowspan="5"> 4851 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae 4852 </td> 4853 <td class="entry_type"> 4854 <span class="entry_type_name">int32</span> 4855 4856 <span class="entry_type_visibility"> [public]</span> 4857 4858 <span class="entry_type_synthetic">[synthetic] </span> 4859 4860 <span class="entry_type_hwlevel">[legacy] </span> 4861 4862 4863 4864 4865 </td> <!-- entry_type --> 4866 4867 <td class="entry_description"> 4868 <p>The maximum number of metering regions that can be used by the auto-exposure (AE) 4869routine.<wbr/></p> 4870 </td> 4871 4872 <td class="entry_units"> 4873 </td> 4874 4875 <td class="entry_range"> 4876 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 4877value will be >= 1.<wbr/></p> 4878 </td> 4879 4880 <td class="entry_tags"> 4881 </td> 4882 4883 </tr> 4884 <tr class="entries_header"> 4885 <th class="th_details" colspan="5">Details</th> 4886 </tr> 4887 <tr class="entry_cont"> 4888 <td class="entry_details" colspan="5"> 4889 <p>This corresponds to the the maximum allowed number of elements in 4890<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p> 4891 </td> 4892 </tr> 4893 4894 <tr class="entries_header"> 4895 <th class="th_details" colspan="5">HAL Implementation Details</th> 4896 </tr> 4897 <tr class="entry_cont"> 4898 <td class="entry_details" colspan="5"> 4899 <p>This entry is private to the framework.<wbr/> Fill in 4900maxRegions to have this entry be automatically populated.<wbr/></p> 4901 </td> 4902 </tr> 4903 4904 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4905 <!-- end of entry --> 4906 4907 4908 <tr class="entry" id="static_android.control.maxRegionsAwb"> 4909 <td class="entry_name 4910 " rowspan="5"> 4911 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb 4912 </td> 4913 <td class="entry_type"> 4914 <span class="entry_type_name">int32</span> 4915 4916 <span class="entry_type_visibility"> [public]</span> 4917 4918 <span class="entry_type_synthetic">[synthetic] </span> 4919 4920 <span class="entry_type_hwlevel">[legacy] </span> 4921 4922 4923 4924 4925 </td> <!-- entry_type --> 4926 4927 <td class="entry_description"> 4928 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB) 4929routine.<wbr/></p> 4930 </td> 4931 4932 <td class="entry_units"> 4933 </td> 4934 4935 <td class="entry_range"> 4936 <p>Value will be >= 0.<wbr/></p> 4937 </td> 4938 4939 <td class="entry_tags"> 4940 </td> 4941 4942 </tr> 4943 <tr class="entries_header"> 4944 <th class="th_details" colspan="5">Details</th> 4945 </tr> 4946 <tr class="entry_cont"> 4947 <td class="entry_details" colspan="5"> 4948 <p>This corresponds to the the maximum allowed number of elements in 4949<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p> 4950 </td> 4951 </tr> 4952 4953 <tr class="entries_header"> 4954 <th class="th_details" colspan="5">HAL Implementation Details</th> 4955 </tr> 4956 <tr class="entry_cont"> 4957 <td class="entry_details" colspan="5"> 4958 <p>This entry is private to the framework.<wbr/> Fill in 4959maxRegions to have this entry be automatically populated.<wbr/></p> 4960 </td> 4961 </tr> 4962 4963 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4964 <!-- end of entry --> 4965 4966 4967 <tr class="entry" id="static_android.control.maxRegionsAf"> 4968 <td class="entry_name 4969 " rowspan="5"> 4970 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af 4971 </td> 4972 <td class="entry_type"> 4973 <span class="entry_type_name">int32</span> 4974 4975 <span class="entry_type_visibility"> [public]</span> 4976 4977 <span class="entry_type_synthetic">[synthetic] </span> 4978 4979 <span class="entry_type_hwlevel">[legacy] </span> 4980 4981 4982 4983 4984 </td> <!-- entry_type --> 4985 4986 <td class="entry_description"> 4987 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p> 4988 </td> 4989 4990 <td class="entry_units"> 4991 </td> 4992 4993 <td class="entry_range"> 4994 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 4995value will be >= 1.<wbr/></p> 4996 </td> 4997 4998 <td class="entry_tags"> 4999 </td> 5000 5001 </tr> 5002 <tr class="entries_header"> 5003 <th class="th_details" colspan="5">Details</th> 5004 </tr> 5005 <tr class="entry_cont"> 5006 <td class="entry_details" colspan="5"> 5007 <p>This corresponds to the the maximum allowed number of elements in 5008<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 5009 </td> 5010 </tr> 5011 5012 <tr class="entries_header"> 5013 <th class="th_details" colspan="5">HAL Implementation Details</th> 5014 </tr> 5015 <tr class="entry_cont"> 5016 <td class="entry_details" colspan="5"> 5017 <p>This entry is private to the framework.<wbr/> Fill in 5018maxRegions to have this entry be automatically populated.<wbr/></p> 5019 </td> 5020 </tr> 5021 5022 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5023 <!-- end of entry --> 5024 5025 5026 <tr class="entry" id="static_android.control.sceneModeOverrides"> 5027 <td class="entry_name 5028 " rowspan="5"> 5029 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides 5030 </td> 5031 <td class="entry_type"> 5032 <span class="entry_type_name">byte</span> 5033 <span class="entry_type_container">x</span> 5034 5035 <span class="entry_type_array"> 5036 3 x length(availableSceneModes) 5037 </span> 5038 <span class="entry_type_visibility"> [system]</span> 5039 5040 5041 <span class="entry_type_hwlevel">[limited] </span> 5042 5043 5044 5045 5046 </td> <!-- entry_type --> 5047 5048 <td class="entry_description"> 5049 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus 5050settings to use with each available scene mode.<wbr/></p> 5051 </td> 5052 5053 <td class="entry_units"> 5054 </td> 5055 5056 <td class="entry_range"> 5057 <p>For each available scene mode,<wbr/> the list must contain three 5058entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5059<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 5060by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> 5061where aeMode has the lowest index position.<wbr/></p> 5062 </td> 5063 5064 <td class="entry_tags"> 5065 <ul class="entry_tags"> 5066 <li><a href="#tag_BC">BC</a></li> 5067 </ul> 5068 </td> 5069 5070 </tr> 5071 <tr class="entries_header"> 5072 <th class="th_details" colspan="5">Details</th> 5073 </tr> 5074 <tr class="entry_cont"> 5075 <td class="entry_details" colspan="5"> 5076 <p>When a scene mode is enabled,<wbr/> the camera device is expected 5077to 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/> 5078and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for 5079that scene mode.<wbr/></p> 5080<p>The order of this list matches that of availableSceneModes,<wbr/> 5081with 3 entries for each mode.<wbr/> The overrides listed 5082for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/> 5083since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5084<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 5085used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> 5086is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and 5087FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p> 5088<p>For example,<wbr/> if availableSceneModes contains 5089<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework 5090expects sceneModeOverrides to have 9 entries formatted like: 5091<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> 5092ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p> 5093 </td> 5094 </tr> 5095 5096 <tr class="entries_header"> 5097 <th class="th_details" colspan="5">HAL Implementation Details</th> 5098 </tr> 5099 <tr class="entry_cont"> 5100 <td class="entry_details" colspan="5"> 5101 <p>To maintain backward compatibility,<wbr/> this list will be made available 5102in the static metadata of the camera service.<wbr/> The camera service will 5103use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5104<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 5105mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p> 5106 </td> 5107 </tr> 5108 5109 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5110 <!-- end of entry --> 5111 5112 5113 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations"> 5114 <td class="entry_name 5115 " rowspan="5"> 5116 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations 5117 </td> 5118 <td class="entry_type"> 5119 <span class="entry_type_name">int32</span> 5120 <span class="entry_type_container">x</span> 5121 5122 <span class="entry_type_array"> 5123 5 x n 5124 </span> 5125 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span> 5126 5127 5128 <span class="entry_type_hwlevel">[limited] </span> 5129 5130 5131 5132 5133 </td> <!-- entry_type --> 5134 5135 <td class="entry_description"> 5136 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations 5137supported 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> 5138 </td> 5139 5140 <td class="entry_units"> 5141 </td> 5142 5143 <td class="entry_range"> 5144 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p> 5145 </td> 5146 5147 <td class="entry_tags"> 5148 <ul class="entry_tags"> 5149 <li><a href="#tag_V1">V1</a></li> 5150 </ul> 5151 </td> 5152 5153 </tr> 5154 <tr class="entries_header"> 5155 <th class="th_details" colspan="5">Details</th> 5156 </tr> 5157 <tr class="entry_cont"> 5158 <td class="entry_details" colspan="5"> 5159 <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/> 5160this metadata will list the supported high speed video size,<wbr/> fps range and max batch size 5161configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes 5162reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> 5163for processed non-stalling formats.<wbr/></p> 5164<p>For the high speed video use case,<wbr/> the application must 5165select the video size and fps range from this metadata to configure the recording and 5166preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends 5167to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to 5168configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata 5169by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the 5170recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application 5171must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams 5172must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p> 5173<p>The min and max fps will be multiple times of 30fps.<wbr/></p> 5174<p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/> 5175to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate 5176multiple frames together and send to camera device for processing where the request 5177controls are same for all the frames in this batch.<wbr/> Max batch size indicates 5178the max possible number of frames the camera device will group together for this high 5179speed stream configuration.<wbr/> This max batch size will be used to generate a high speed 5180recording request list by 5181<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/> 5182The max batch size for each configuration will satisfy below conditions:</p> 5183<ul> 5184<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/> 5185if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li> 5186<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but 5187the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch 5188size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li> 5189<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li> 5190</ul> 5191<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/> 5192in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p> 5193<p>This fps ranges in this configuration list can only be used to create requests 5194that are submitted to a high speed camera capture session created by 5195<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> 5196The fps ranges reported in this metadata must not be used to setup capture requests for 5197normal capture session,<wbr/> or it will cause request error.<wbr/></p> 5198 </td> 5199 </tr> 5200 5201 <tr class="entries_header"> 5202 <th class="th_details" colspan="5">HAL Implementation Details</th> 5203 </tr> 5204 <tr class="entry_cont"> 5205 <td class="entry_details" colspan="5"> 5206 <p>All the sizes listed in this configuration will be a subset of the sizes reported by 5207<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/> 5208Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum 5209of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p> 5210<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps 5211sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application 5212usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused 5213stutter when starting recording as much as possible,<wbr/> the application may want to ensure 5214the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise 5215the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/> 5216For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise 5217[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to 5218do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start 5219recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps 5220values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps 5221values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must 5222switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p> 5223 </td> 5224 </tr> 5225 5226 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5227 <!-- end of entry --> 5228 5229 5230 <tr class="entry" id="static_android.control.aeLockAvailable"> 5231 <td class="entry_name 5232 " rowspan="3"> 5233 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available 5234 </td> 5235 <td class="entry_type"> 5236 <span class="entry_type_name entry_type_name_enum">byte</span> 5237 5238 <span class="entry_type_visibility"> [public as boolean]</span> 5239 5240 5241 <span class="entry_type_hwlevel">[legacy] </span> 5242 5243 5244 5245 <ul class="entry_type_enum"> 5246 <li> 5247 <span class="entry_type_enum_name">FALSE</span> 5248 </li> 5249 <li> 5250 <span class="entry_type_enum_name">TRUE</span> 5251 </li> 5252 </ul> 5253 5254 </td> <!-- entry_type --> 5255 5256 <td class="entry_description"> 5257 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p> 5258 </td> 5259 5260 <td class="entry_units"> 5261 </td> 5262 5263 <td class="entry_range"> 5264 </td> 5265 5266 <td class="entry_tags"> 5267 <ul class="entry_tags"> 5268 <li><a href="#tag_BC">BC</a></li> 5269 </ul> 5270 </td> 5271 5272 </tr> 5273 <tr class="entries_header"> 5274 <th class="th_details" colspan="5">Details</th> 5275 </tr> 5276 <tr class="entry_cont"> 5277 <td class="entry_details" colspan="5"> 5278 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always 5279list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 5280 </td> 5281 </tr> 5282 5283 5284 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5285 <!-- end of entry --> 5286 5287 5288 <tr class="entry" id="static_android.control.awbLockAvailable"> 5289 <td class="entry_name 5290 " rowspan="3"> 5291 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available 5292 </td> 5293 <td class="entry_type"> 5294 <span class="entry_type_name entry_type_name_enum">byte</span> 5295 5296 <span class="entry_type_visibility"> [public as boolean]</span> 5297 5298 5299 <span class="entry_type_hwlevel">[legacy] </span> 5300 5301 5302 5303 <ul class="entry_type_enum"> 5304 <li> 5305 <span class="entry_type_enum_name">FALSE</span> 5306 </li> 5307 <li> 5308 <span class="entry_type_enum_name">TRUE</span> 5309 </li> 5310 </ul> 5311 5312 </td> <!-- entry_type --> 5313 5314 <td class="entry_description"> 5315 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p> 5316 </td> 5317 5318 <td class="entry_units"> 5319 </td> 5320 5321 <td class="entry_range"> 5322 </td> 5323 5324 <td class="entry_tags"> 5325 <ul class="entry_tags"> 5326 <li><a href="#tag_BC">BC</a></li> 5327 </ul> 5328 </td> 5329 5330 </tr> 5331 <tr class="entries_header"> 5332 <th class="th_details" colspan="5">Details</th> 5333 </tr> 5334 <tr class="entry_cont"> 5335 <td class="entry_details" colspan="5"> 5336 <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will 5337always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 5338 </td> 5339 </tr> 5340 5341 5342 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5343 <!-- end of entry --> 5344 5345 5346 <tr class="entry" id="static_android.control.availableModes"> 5347 <td class="entry_name 5348 " rowspan="3"> 5349 android.<wbr/>control.<wbr/>available<wbr/>Modes 5350 </td> 5351 <td class="entry_type"> 5352 <span class="entry_type_name">byte</span> 5353 <span class="entry_type_container">x</span> 5354 5355 <span class="entry_type_array"> 5356 n 5357 </span> 5358 <span class="entry_type_visibility"> [public as enumList]</span> 5359 5360 5361 <span class="entry_type_hwlevel">[legacy] </span> 5362 5363 5364 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div> 5365 5366 5367 </td> <!-- entry_type --> 5368 5369 <td class="entry_description"> 5370 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera 5371device.<wbr/></p> 5372 </td> 5373 5374 <td class="entry_units"> 5375 </td> 5376 5377 <td class="entry_range"> 5378 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p> 5379 </td> 5380 5381 <td class="entry_tags"> 5382 </td> 5383 5384 </tr> 5385 <tr class="entries_header"> 5386 <th class="th_details" colspan="5">Details</th> 5387 </tr> 5388 <tr class="entry_cont"> 5389 <td class="entry_details" colspan="5"> 5390 <p>This list contains control modes that can be set for the camera device.<wbr/> 5391LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL 5392devices will always support OFF,<wbr/> AUTO modes.<wbr/></p> 5393 </td> 5394 </tr> 5395 5396 5397 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5398 <!-- end of entry --> 5399 5400 5401 5402 <!-- end of kind --> 5403 </tbody> 5404 <tr><td colspan="6" class="kind">dynamic</td></tr> 5405 5406 <thead class="entries_header"> 5407 <tr> 5408 <th class="th_name">Property Name</th> 5409 <th class="th_type">Type</th> 5410 <th class="th_description">Description</th> 5411 <th class="th_units">Units</th> 5412 <th class="th_range">Range</th> 5413 <th class="th_tags">Tags</th> 5414 </tr> 5415 </thead> 5416 5417 <tbody> 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 <tr class="entry" id="dynamic_android.control.aePrecaptureId"> 5429 <td class="entry_name 5430 entry_name_deprecated 5431 " rowspan="3"> 5432 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id 5433 </td> 5434 <td class="entry_type"> 5435 <span class="entry_type_name">int32</span> 5436 5437 <span class="entry_type_visibility"> [system]</span> 5438 5439 5440 5441 <span class="entry_type_deprecated">[deprecated] </span> 5442 5443 5444 5445 </td> <!-- entry_type --> 5446 5447 <td class="entry_description"> 5448 <p>The ID sent with the latest 5449CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p> 5450 </td> 5451 5452 <td class="entry_units"> 5453 </td> 5454 5455 <td class="entry_range"> 5456 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 5457 </td> 5458 5459 <td class="entry_tags"> 5460 </td> 5461 5462 </tr> 5463 <tr class="entries_header"> 5464 <th class="th_details" colspan="5">Details</th> 5465 </tr> 5466 <tr class="entry_cont"> 5467 <td class="entry_details" colspan="5"> 5468 <p>Must be 0 if no 5469CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet 5470by HAL.<wbr/> Always updated even if AE algorithm ignores the 5471trigger</p> 5472 </td> 5473 </tr> 5474 5475 5476 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5477 <!-- end of entry --> 5478 5479 5480 <tr class="entry" id="dynamic_android.control.aeAntibandingMode"> 5481 <td class="entry_name 5482 " rowspan="5"> 5483 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 5484 </td> 5485 <td class="entry_type"> 5486 <span class="entry_type_name entry_type_name_enum">byte</span> 5487 5488 <span class="entry_type_visibility"> [public]</span> 5489 5490 5491 <span class="entry_type_hwlevel">[legacy] </span> 5492 5493 5494 5495 <ul class="entry_type_enum"> 5496 <li> 5497 <span class="entry_type_enum_name">OFF</span> 5498 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 5499avoid banding problems.<wbr/></p></span> 5500 </li> 5501 <li> 5502 <span class="entry_type_enum_name">50HZ</span> 5503 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 5504avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 5505 </li> 5506 <li> 5507 <span class="entry_type_enum_name">60HZ</span> 5508 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 5509avoid banding problems with 60Hz illumination 5510sources.<wbr/></p></span> 5511 </li> 5512 <li> 5513 <span class="entry_type_enum_name">AUTO</span> 5514 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 5515antibanding routine to the current illumination 5516condition.<wbr/> This is the default mode if AUTO is 5517available on given camera device.<wbr/></p></span> 5518 </li> 5519 </ul> 5520 5521 </td> <!-- entry_type --> 5522 5523 <td class="entry_description"> 5524 <p>The desired setting for the camera device's auto-exposure 5525algorithm's antibanding compensation.<wbr/></p> 5526 </td> 5527 5528 <td class="entry_units"> 5529 </td> 5530 5531 <td class="entry_range"> 5532 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 5533 </td> 5534 5535 <td class="entry_tags"> 5536 <ul class="entry_tags"> 5537 <li><a href="#tag_BC">BC</a></li> 5538 </ul> 5539 </td> 5540 5541 </tr> 5542 <tr class="entries_header"> 5543 <th class="th_details" colspan="5">Details</th> 5544 </tr> 5545 <tr class="entry_cont"> 5546 <td class="entry_details" colspan="5"> 5547 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 5548lights,<wbr/> flicker at the rate of the power supply frequency 5549(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 5550typically not noticeable to a person,<wbr/> it can be visible to 5551a camera device.<wbr/> If a camera sets its exposure time to the 5552wrong value,<wbr/> the flicker may become visible in the 5553viewfinder as flicker or in a final captured image,<wbr/> as a 5554set of variable-brightness bands across the image.<wbr/></p> 5555<p>Therefore,<wbr/> the auto-exposure routines of camera devices 5556include antibanding routines that ensure that the chosen 5557exposure value will not cause such banding.<wbr/> The choice of 5558exposure time depends on the rate of flicker,<wbr/> which the 5559camera device can detect automatically,<wbr/> or the expected 5560rate can be selected by the application using this 5561control.<wbr/></p> 5562<p>A given camera device may not support all of the possible 5563options for the antibanding mode.<wbr/> The 5564<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 5565the available modes for a given camera device.<wbr/></p> 5566<p>AUTO mode is the default if it is available on given 5567camera device.<wbr/> When AUTO mode is not available,<wbr/> the 5568default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 5569and 60HZ will be available.<wbr/></p> 5570<p>If manual exposure control is enabled (by setting 5571<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/> 5572then this setting has no effect,<wbr/> and the application must 5573ensure it selects exposure times that do not cause banding 5574issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 5575the application in this.<wbr/></p> 5576 </td> 5577 </tr> 5578 5579 <tr class="entries_header"> 5580 <th class="th_details" colspan="5">HAL Implementation Details</th> 5581 </tr> 5582 <tr class="entry_cont"> 5583 <td class="entry_details" colspan="5"> 5584 <p>For all capture request templates,<wbr/> this field must be set 5585to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 5586the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 558760HZ must be available.<wbr/></p> 5588<p>If manual exposure control is enabled (by setting 5589<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/> 5590then the exposure values provided by the application must not be 5591adjusted for antibanding.<wbr/></p> 5592 </td> 5593 </tr> 5594 5595 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5596 <!-- end of entry --> 5597 5598 5599 <tr class="entry" id="dynamic_android.control.aeExposureCompensation"> 5600 <td class="entry_name 5601 " rowspan="3"> 5602 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 5603 </td> 5604 <td class="entry_type"> 5605 <span class="entry_type_name">int32</span> 5606 5607 <span class="entry_type_visibility"> [public]</span> 5608 5609 5610 <span class="entry_type_hwlevel">[legacy] </span> 5611 5612 5613 5614 5615 </td> <!-- entry_type --> 5616 5617 <td class="entry_description"> 5618 <p>Adjustment to auto-exposure (AE) target image 5619brightness.<wbr/></p> 5620 </td> 5621 5622 <td class="entry_units"> 5623 Compensation steps 5624 </td> 5625 5626 <td class="entry_range"> 5627 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 5628 </td> 5629 5630 <td class="entry_tags"> 5631 <ul class="entry_tags"> 5632 <li><a href="#tag_BC">BC</a></li> 5633 </ul> 5634 </td> 5635 5636 </tr> 5637 <tr class="entries_header"> 5638 <th class="th_details" colspan="5">Details</th> 5639 </tr> 5640 <tr class="entry_cont"> 5641 <td class="entry_details" colspan="5"> 5642 <p>The adjustment is measured as a count of steps,<wbr/> with the 5643step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 5644allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 5645<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 5646will mean an exposure compensation of +2 EV; -3 will mean an 5647exposure compensation of -1 EV.<wbr/> One EV represents a doubling 5648of image brightness.<wbr/> Note that this control will only be 5649effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 5650will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 5651<p>In the event of exposure compensation value being changed,<wbr/> camera device 5652may take several frames to reach the newly requested exposure target.<wbr/> 5653During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 5654state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 5655change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 5656FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 5657 </td> 5658 </tr> 5659 5660 5661 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5662 <!-- end of entry --> 5663 5664 5665 <tr class="entry" id="dynamic_android.control.aeLock"> 5666 <td class="entry_name 5667 " rowspan="3"> 5668 android.<wbr/>control.<wbr/>ae<wbr/>Lock 5669 </td> 5670 <td class="entry_type"> 5671 <span class="entry_type_name entry_type_name_enum">byte</span> 5672 5673 <span class="entry_type_visibility"> [public as boolean]</span> 5674 5675 5676 <span class="entry_type_hwlevel">[legacy] </span> 5677 5678 5679 5680 <ul class="entry_type_enum"> 5681 <li> 5682 <span class="entry_type_enum_name">OFF</span> 5683 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 5684is free to update its parameters.<wbr/></p></span> 5685 </li> 5686 <li> 5687 <span class="entry_type_enum_name">ON</span> 5688 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 5689must not update the exposure and sensitivity parameters 5690while the lock is active.<wbr/></p> 5691<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 5692will still take effect while auto-exposure is locked.<wbr/></p> 5693<p>Some rare LEGACY devices may not support 5694this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 5695 </li> 5696 </ul> 5697 5698 </td> <!-- entry_type --> 5699 5700 <td class="entry_description"> 5701 <p>Whether auto-exposure (AE) is currently locked to its latest 5702calculated values.<wbr/></p> 5703 </td> 5704 5705 <td class="entry_units"> 5706 </td> 5707 5708 <td class="entry_range"> 5709 </td> 5710 5711 <td class="entry_tags"> 5712 <ul class="entry_tags"> 5713 <li><a href="#tag_BC">BC</a></li> 5714 </ul> 5715 </td> 5716 5717 </tr> 5718 <tr class="entries_header"> 5719 <th class="th_details" colspan="5">Details</th> 5720 </tr> 5721 <tr class="entry_cont"> 5722 <td class="entry_details" colspan="5"> 5723 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 5724and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 5725<p>Note that even when AE is locked,<wbr/> the flash may be fired if 5726the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 5727ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 5728<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 5729is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 5730<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 5731when AE is already locked,<wbr/> the camera device will not change the exposure time 5732(<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>) 5733parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 5734is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 5735<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/> 5736Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 5737<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 5738the AE if AE is locked by the camera device internally during precapture metering 5739sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 5740ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 5741will never succeed in a sequence of preview requests where AE lock is always set 5742to <code>false</code>.<wbr/></p> 5743<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 5744get locked do not necessarily correspond to the settings that were present in the 5745latest capture result received from the camera device,<wbr/> since additional captures 5746and AE updates may have occurred even before the result was sent out.<wbr/> If an 5747application is switching between automatic and manual control and wishes to eliminate 5748any flicker during the switch,<wbr/> the following procedure is recommended:</p> 5749<ol> 5750<li>Starting in auto-AE mode:</li> 5751<li>Lock AE</li> 5752<li>Wait for the first result to be output that has the AE locked</li> 5753<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 5754<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 5755</ol> 5756<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> 5757 </td> 5758 </tr> 5759 5760 5761 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5762 <!-- end of entry --> 5763 5764 5765 <tr class="entry" id="dynamic_android.control.aeMode"> 5766 <td class="entry_name 5767 " rowspan="3"> 5768 android.<wbr/>control.<wbr/>ae<wbr/>Mode 5769 </td> 5770 <td class="entry_type"> 5771 <span class="entry_type_name entry_type_name_enum">byte</span> 5772 5773 <span class="entry_type_visibility"> [public]</span> 5774 5775 5776 <span class="entry_type_hwlevel">[legacy] </span> 5777 5778 5779 5780 <ul class="entry_type_enum"> 5781 <li> 5782 <span class="entry_type_enum_name">OFF</span> 5783 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 5784<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5785<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 5786<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 5787device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 5788a flash unit for this camera device.<wbr/></p> 5789<p>Note that auto-white balance (AWB) and auto-focus (AF) 5790behavior is device dependent when AE is in OFF mode.<wbr/> 5791To have consistent behavior across different devices,<wbr/> 5792it is recommended to either set AWB and AF to OFF mode 5793or lock AWB and AF before setting AE to OFF.<wbr/> 5794See <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/> 5795<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> 5796for more details.<wbr/></p> 5797<p>LEGACY devices do not support the OFF mode and will 5798override attempts to use this value to ON.<wbr/></p></span> 5799 </li> 5800 <li> 5801 <span class="entry_type_enum_name">ON</span> 5802 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 5803with no flash control.<wbr/></p> 5804<p>The application's values for 5805<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5806<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 5807<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 5808application has control over the various 5809android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 5810 </li> 5811 <li> 5812 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 5813 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 5814the camera's flash unit,<wbr/> firing it in low-light 5815conditions.<wbr/></p> 5816<p>The flash may be fired during a precapture sequence 5817(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 5818may be fired for captures for which the 5819<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 5820STILL_<wbr/>CAPTURE</p></span> 5821 </li> 5822 <li> 5823 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 5824 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 5825the camera's flash unit,<wbr/> always firing it for still 5826captures.<wbr/></p> 5827<p>The flash may be fired during a precapture sequence 5828(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 5829will always be fired for captures for which the 5830<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 5831STILL_<wbr/>CAPTURE</p></span> 5832 </li> 5833 <li> 5834 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 5835 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 5836reduction.<wbr/></p> 5837<p>If deemed necessary by the camera device,<wbr/> a red eye 5838reduction flash will fire during the precapture 5839sequence.<wbr/></p></span> 5840 </li> 5841 </ul> 5842 5843 </td> <!-- entry_type --> 5844 5845 <td class="entry_description"> 5846 <p>The desired mode for the camera device's 5847auto-exposure routine.<wbr/></p> 5848 </td> 5849 5850 <td class="entry_units"> 5851 </td> 5852 5853 <td class="entry_range"> 5854 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 5855 </td> 5856 5857 <td class="entry_tags"> 5858 <ul class="entry_tags"> 5859 <li><a href="#tag_BC">BC</a></li> 5860 </ul> 5861 </td> 5862 5863 </tr> 5864 <tr class="entries_header"> 5865 <th class="th_details" colspan="5">Details</th> 5866 </tr> 5867 <tr class="entry_cont"> 5868 <td class="entry_details" colspan="5"> 5869 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 5870AUTO.<wbr/></p> 5871<p>When set to any of the ON modes,<wbr/> the camera device's 5872auto-exposure routine is enabled,<wbr/> overriding the 5873application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 5874and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 5875<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 5876<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 5877is selected,<wbr/> the camera device's flash unit controls are 5878also overridden.<wbr/></p> 5879<p>The FLASH modes are only available if the camera device 5880has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 5881<p>If flash TORCH mode is desired,<wbr/> this field must be set to 5882ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 5883<p>When set to any of the ON modes,<wbr/> the values chosen by the 5884camera device auto-exposure routine for the overridden 5885fields for a given capture will be available in its 5886CaptureResult.<wbr/></p> 5887 </td> 5888 </tr> 5889 5890 5891 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5892 <!-- end of entry --> 5893 5894 5895 <tr class="entry" id="dynamic_android.control.aeRegions"> 5896 <td class="entry_name 5897 " rowspan="5"> 5898 android.<wbr/>control.<wbr/>ae<wbr/>Regions 5899 </td> 5900 <td class="entry_type"> 5901 <span class="entry_type_name">int32</span> 5902 <span class="entry_type_container">x</span> 5903 5904 <span class="entry_type_array"> 5905 5 x area_count 5906 </span> 5907 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 5908 5909 5910 5911 5912 5913 5914 </td> <!-- entry_type --> 5915 5916 <td class="entry_description"> 5917 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 5918 </td> 5919 5920 <td class="entry_units"> 5921 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 5922 </td> 5923 5924 <td class="entry_range"> 5925 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 5926<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 5927 </td> 5928 5929 <td class="entry_tags"> 5930 <ul class="entry_tags"> 5931 <li><a href="#tag_BC">BC</a></li> 5932 </ul> 5933 </td> 5934 5935 </tr> 5936 <tr class="entries_header"> 5937 <th class="th_details" colspan="5">Details</th> 5938 </tr> 5939 <tr class="entry_cont"> 5940 <td class="entry_details" colspan="5"> 5941 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 5942Otherwise will always be present.<wbr/></p> 5943<p>The maximum number of regions supported by the device is determined by the value 5944of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 5945<p>The coordinate system is based on the active pixel array,<wbr/> 5946with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 5947(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 5948<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 5949bottom-right pixel in the active pixel array.<wbr/></p> 5950<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 5951for every pixel in the area.<wbr/> This means that a large metering area 5952with the same weight as a smaller area will have more effect in 5953the metering result.<wbr/> Metering areas can partially overlap and the 5954camera device will add the weights in the overlap region.<wbr/></p> 5955<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 5956region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 5957weight is ignored.<wbr/></p> 5958<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 5959camera device.<wbr/></p> 5960<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 5961capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 5962region and output only the intersection rectangle as the metering region in the result 5963metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 5964not reported in the result metadata.<wbr/></p> 5965 </td> 5966 </tr> 5967 5968 <tr class="entries_header"> 5969 <th class="th_details" colspan="5">HAL Implementation Details</th> 5970 </tr> 5971 <tr class="entry_cont"> 5972 <td class="entry_details" colspan="5"> 5973 <p>The HAL level representation of MeteringRectangle[] is a 5974int[5 * area_<wbr/>count].<wbr/> 5975Every five elements represent a metering region of 5976(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 5977The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 5978exclusive on xmax and ymax.<wbr/></p> 5979 </td> 5980 </tr> 5981 5982 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5983 <!-- end of entry --> 5984 5985 5986 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange"> 5987 <td class="entry_name 5988 " rowspan="3"> 5989 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 5990 </td> 5991 <td class="entry_type"> 5992 <span class="entry_type_name">int32</span> 5993 <span class="entry_type_container">x</span> 5994 5995 <span class="entry_type_array"> 5996 2 5997 </span> 5998 <span class="entry_type_visibility"> [public as rangeInt]</span> 5999 6000 6001 <span class="entry_type_hwlevel">[legacy] </span> 6002 6003 6004 6005 6006 </td> <!-- entry_type --> 6007 6008 <td class="entry_description"> 6009 <p>Range over which the auto-exposure routine can 6010adjust the capture frame rate to maintain good 6011exposure.<wbr/></p> 6012 </td> 6013 6014 <td class="entry_units"> 6015 Frames per second (FPS) 6016 </td> 6017 6018 <td class="entry_range"> 6019 <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> 6020 </td> 6021 6022 <td class="entry_tags"> 6023 <ul class="entry_tags"> 6024 <li><a href="#tag_BC">BC</a></li> 6025 </ul> 6026 </td> 6027 6028 </tr> 6029 <tr class="entries_header"> 6030 <th class="th_details" colspan="5">Details</th> 6031 </tr> 6032 <tr class="entry_cont"> 6033 <td class="entry_details" colspan="5"> 6034 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 6035manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 6036<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 6037 </td> 6038 </tr> 6039 6040 6041 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6042 <!-- end of entry --> 6043 6044 6045 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger"> 6046 <td class="entry_name 6047 " rowspan="5"> 6048 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 6049 </td> 6050 <td class="entry_type"> 6051 <span class="entry_type_name entry_type_name_enum">byte</span> 6052 6053 <span class="entry_type_visibility"> [public]</span> 6054 6055 6056 <span class="entry_type_hwlevel">[limited] </span> 6057 6058 6059 6060 <ul class="entry_type_enum"> 6061 <li> 6062 <span class="entry_type_enum_name">IDLE</span> 6063 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 6064 </li> 6065 <li> 6066 <span class="entry_type_enum_name">START</span> 6067 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 6068by the camera device.<wbr/></p> 6069<p>The exact effect of the precapture trigger depends on 6070the current AE mode and state.<wbr/></p></span> 6071 </li> 6072 <li> 6073 <span class="entry_type_enum_name">CANCEL</span> 6074 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 6075precapture metering sequence,<wbr/> the auto-exposure routine will return to its 6076initial state.<wbr/></p></span> 6077 </li> 6078 </ul> 6079 6080 </td> <!-- entry_type --> 6081 6082 <td class="entry_description"> 6083 <p>Whether the camera device will trigger a precapture 6084metering sequence when it processes this request.<wbr/></p> 6085 </td> 6086 6087 <td class="entry_units"> 6088 </td> 6089 6090 <td class="entry_range"> 6091 </td> 6092 6093 <td class="entry_tags"> 6094 <ul class="entry_tags"> 6095 <li><a href="#tag_BC">BC</a></li> 6096 </ul> 6097 </td> 6098 6099 </tr> 6100 <tr class="entries_header"> 6101 <th class="th_details" colspan="5">Details</th> 6102 </tr> 6103 <tr class="entry_cont"> 6104 <td class="entry_details" colspan="5"> 6105 <p>This entry is normally set to IDLE,<wbr/> or is not 6106included at all in the request settings.<wbr/> When included and 6107set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 6108precapture metering sequence.<wbr/></p> 6109<p>When set to CANCEL,<wbr/> the camera device will cancel any active 6110precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 6111If a precapture metering sequence is already completed,<wbr/> and the camera 6112device has implicitly locked the AE for subsequent still capture,<wbr/> the 6113CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 6114<p>The precapture sequence should be triggered before starting a 6115high-quality still capture for final metering decisions to 6116be made,<wbr/> and for firing pre-capture flash pulses to estimate 6117scene brightness and required final capture flash power,<wbr/> when 6118the flash is enabled.<wbr/></p> 6119<p>Normally,<wbr/> this entry should be set to START for only a 6120single request,<wbr/> and the application should wait until the 6121sequence completes before starting a new one.<wbr/></p> 6122<p>When a precapture metering sequence is finished,<wbr/> the camera device 6123may lock the auto-exposure routine internally to be able to accurately expose the 6124subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 6125For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 6126submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 6127submit 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 6128with <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 6129still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 6130API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 6131internally locked AE if the application doesn't submit a still capture request after 6132the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 6133be used in devices that have earlier API levels.<wbr/></p> 6134<p>The exact effect of auto-exposure (AE) precapture trigger 6135depends on the current AE mode and state; see 6136<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 6137details.<wbr/></p> 6138<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 6139capturing a high-resolution JPEG image will automatically trigger a 6140precapture sequence before the high-resolution capture,<wbr/> including 6141potentially firing a pre-capture flash.<wbr/></p> 6142<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 6143simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 6144the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 6145focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 6146trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 6147changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 6148example.<wbr/></p> 6149<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 6150the camera device will complete them in the optimal order for that device.<wbr/></p> 6151 </td> 6152 </tr> 6153 6154 <tr class="entries_header"> 6155 <th class="th_details" colspan="5">HAL Implementation Details</th> 6156 </tr> 6157 <tr class="entry_cont"> 6158 <td class="entry_details" colspan="5"> 6159 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 6160(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 6161treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 6162AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 6163to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 6164 </td> 6165 </tr> 6166 6167 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6168 <!-- end of entry --> 6169 6170 6171 <tr class="entry" id="dynamic_android.control.aeState"> 6172 <td class="entry_name 6173 " rowspan="3"> 6174 android.<wbr/>control.<wbr/>ae<wbr/>State 6175 </td> 6176 <td class="entry_type"> 6177 <span class="entry_type_name entry_type_name_enum">byte</span> 6178 6179 <span class="entry_type_visibility"> [public]</span> 6180 6181 6182 <span class="entry_type_hwlevel">[limited] </span> 6183 6184 6185 6186 <ul class="entry_type_enum"> 6187 <li> 6188 <span class="entry_type_enum_name">INACTIVE</span> 6189 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p> 6190<p>When a camera device is opened,<wbr/> it starts in 6191this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting 6192this state in capture result.<wbr/></p></span> 6193 </li> 6194 <li> 6195 <span class="entry_type_enum_name">SEARCHING</span> 6196 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values 6197for the current scene.<wbr/></p> 6198<p>This is a transient state,<wbr/> the camera device may skip 6199reporting this state in capture result.<wbr/></p></span> 6200 </li> 6201 <li> 6202 <span class="entry_type_enum_name">CONVERGED</span> 6203 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the 6204current scene.<wbr/></p></span> 6205 </li> 6206 <li> 6207 <span class="entry_type_enum_name">LOCKED</span> 6208 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span> 6209 </li> 6210 <li> 6211 <span class="entry_type_enum_name">FLASH_REQUIRED</span> 6212 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash 6213needs to be fired for good quality still 6214capture.<wbr/></p></span> 6215 </li> 6216 <li> 6217 <span class="entry_type_enum_name">PRECAPTURE</span> 6218 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence 6219and is currently executing it.<wbr/></p> 6220<p>Precapture can be triggered through setting 6221<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently 6222active and completed (if it causes camera device internal AE lock) precapture 6223metering sequence can be canceled through setting 6224<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p> 6225<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED 6226or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient 6227state,<wbr/> the camera device may skip reporting this state in 6228capture result.<wbr/></p></span> 6229 </li> 6230 </ul> 6231 6232 </td> <!-- entry_type --> 6233 6234 <td class="entry_description"> 6235 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p> 6236 </td> 6237 6238 <td class="entry_units"> 6239 </td> 6240 6241 <td class="entry_range"> 6242 </td> 6243 6244 <td class="entry_tags"> 6245 </td> 6246 6247 </tr> 6248 <tr class="entries_header"> 6249 <th class="th_details" colspan="5">Details</th> 6250 </tr> 6251 <tr class="entry_cont"> 6252 <td class="entry_details" colspan="5"> 6253 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always 6254resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 6255or <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 6256the algorithm states to INACTIVE.<wbr/></p> 6257<p>The camera device can do several state transitions between two results,<wbr/> if it is 6258allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 6259seen in a result.<wbr/></p> 6260<p>The state in the result is the state for this image (in sync with this image): if 6261AE state becomes CONVERGED,<wbr/> then the image data associated with this result should 6262be good to use.<wbr/></p> 6263<p>Below are state transition tables for different AE modes.<wbr/></p> 6264<table> 6265<thead> 6266<tr> 6267<th align="center">State</th> 6268<th align="center">Transition Cause</th> 6269<th align="center">New State</th> 6270<th align="center">Notes</th> 6271</tr> 6272</thead> 6273<tbody> 6274<tr> 6275<td align="center">INACTIVE</td> 6276<td align="center"></td> 6277<td align="center">INACTIVE</td> 6278<td align="center">Camera device auto exposure algorithm is disabled</td> 6279</tr> 6280</tbody> 6281</table> 6282<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p> 6283<table> 6284<thead> 6285<tr> 6286<th align="center">State</th> 6287<th align="center">Transition Cause</th> 6288<th align="center">New State</th> 6289<th align="center">Notes</th> 6290</tr> 6291</thead> 6292<tbody> 6293<tr> 6294<td align="center">INACTIVE</td> 6295<td align="center">Camera device initiates AE scan</td> 6296<td align="center">SEARCHING</td> 6297<td align="center">Values changing</td> 6298</tr> 6299<tr> 6300<td align="center">INACTIVE</td> 6301<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6302<td align="center">LOCKED</td> 6303<td align="center">Values locked</td> 6304</tr> 6305<tr> 6306<td align="center">SEARCHING</td> 6307<td align="center">Camera device finishes AE scan</td> 6308<td align="center">CONVERGED</td> 6309<td align="center">Good values,<wbr/> not changing</td> 6310</tr> 6311<tr> 6312<td align="center">SEARCHING</td> 6313<td align="center">Camera device finishes AE scan</td> 6314<td align="center">FLASH_<wbr/>REQUIRED</td> 6315<td align="center">Converged but too dark w/<wbr/>o flash</td> 6316</tr> 6317<tr> 6318<td align="center">SEARCHING</td> 6319<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6320<td align="center">LOCKED</td> 6321<td align="center">Values locked</td> 6322</tr> 6323<tr> 6324<td align="center">CONVERGED</td> 6325<td align="center">Camera device initiates AE scan</td> 6326<td align="center">SEARCHING</td> 6327<td align="center">Values changing</td> 6328</tr> 6329<tr> 6330<td align="center">CONVERGED</td> 6331<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6332<td align="center">LOCKED</td> 6333<td align="center">Values locked</td> 6334</tr> 6335<tr> 6336<td align="center">FLASH_<wbr/>REQUIRED</td> 6337<td align="center">Camera device initiates AE scan</td> 6338<td align="center">SEARCHING</td> 6339<td align="center">Values changing</td> 6340</tr> 6341<tr> 6342<td align="center">FLASH_<wbr/>REQUIRED</td> 6343<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6344<td align="center">LOCKED</td> 6345<td align="center">Values locked</td> 6346</tr> 6347<tr> 6348<td align="center">LOCKED</td> 6349<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6350<td align="center">SEARCHING</td> 6351<td align="center">Values not good after unlock</td> 6352</tr> 6353<tr> 6354<td align="center">LOCKED</td> 6355<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6356<td align="center">CONVERGED</td> 6357<td align="center">Values good after unlock</td> 6358</tr> 6359<tr> 6360<td align="center">LOCKED</td> 6361<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6362<td align="center">FLASH_<wbr/>REQUIRED</td> 6363<td align="center">Exposure good,<wbr/> but too dark</td> 6364</tr> 6365<tr> 6366<td align="center">PRECAPTURE</td> 6367<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6368<td align="center">CONVERGED</td> 6369<td align="center">Ready for high-quality capture</td> 6370</tr> 6371<tr> 6372<td align="center">PRECAPTURE</td> 6373<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6374<td align="center">LOCKED</td> 6375<td align="center">Ready for high-quality capture</td> 6376</tr> 6377<tr> 6378<td align="center">LOCKED</td> 6379<td align="center">aeLock is ON and aePrecaptureTrigger is START</td> 6380<td align="center">LOCKED</td> 6381<td align="center">Precapture trigger is ignored when AE is already locked</td> 6382</tr> 6383<tr> 6384<td align="center">LOCKED</td> 6385<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td> 6386<td align="center">LOCKED</td> 6387<td align="center">Precapture trigger is ignored when AE is already locked</td> 6388</tr> 6389<tr> 6390<td align="center">Any state (excluding LOCKED)</td> 6391<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> 6392<td align="center">PRECAPTURE</td> 6393<td align="center">Start AE precapture metering sequence</td> 6394</tr> 6395<tr> 6396<td align="center">Any state (excluding LOCKED)</td> 6397<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td> 6398<td align="center">INACTIVE</td> 6399<td align="center">Currently active precapture metering sequence is canceled</td> 6400</tr> 6401</tbody> 6402</table> 6403<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 6404without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 6405can be skipped in that manner is called a transient state.<wbr/></p> 6406<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions 6407listed in above table,<wbr/> it is also legal for the camera device to skip one or more 6408transient states between two results.<wbr/> See below table for examples:</p> 6409<table> 6410<thead> 6411<tr> 6412<th align="center">State</th> 6413<th align="center">Transition Cause</th> 6414<th align="center">New State</th> 6415<th align="center">Notes</th> 6416</tr> 6417</thead> 6418<tbody> 6419<tr> 6420<td align="center">INACTIVE</td> 6421<td align="center">Camera device finished AE scan</td> 6422<td align="center">CONVERGED</td> 6423<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 6424</tr> 6425<tr> 6426<td align="center">Any state (excluding LOCKED)</td> 6427<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> 6428<td align="center">FLASH_<wbr/>REQUIRED</td> 6429<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> 6430</tr> 6431<tr> 6432<td align="center">Any state (excluding LOCKED)</td> 6433<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> 6434<td align="center">CONVERGED</td> 6435<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> 6436</tr> 6437<tr> 6438<td align="center">Any state (excluding LOCKED)</td> 6439<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 6440<td align="center">FLASH_<wbr/>REQUIRED</td> 6441<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> 6442</tr> 6443<tr> 6444<td align="center">Any state (excluding LOCKED)</td> 6445<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 6446<td align="center">CONVERGED</td> 6447<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td> 6448</tr> 6449<tr> 6450<td align="center">CONVERGED</td> 6451<td align="center">Camera device finished AE scan</td> 6452<td align="center">FLASH_<wbr/>REQUIRED</td> 6453<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> 6454</tr> 6455<tr> 6456<td align="center">FLASH_<wbr/>REQUIRED</td> 6457<td align="center">Camera device finished AE scan</td> 6458<td align="center">CONVERGED</td> 6459<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> 6460</tr> 6461</tbody> 6462</table> 6463 </td> 6464 </tr> 6465 6466 6467 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6468 <!-- end of entry --> 6469 6470 6471 <tr class="entry" id="dynamic_android.control.afMode"> 6472 <td class="entry_name 6473 " rowspan="5"> 6474 android.<wbr/>control.<wbr/>af<wbr/>Mode 6475 </td> 6476 <td class="entry_type"> 6477 <span class="entry_type_name entry_type_name_enum">byte</span> 6478 6479 <span class="entry_type_visibility"> [public]</span> 6480 6481 6482 <span class="entry_type_hwlevel">[legacy] </span> 6483 6484 6485 6486 <ul class="entry_type_enum"> 6487 <li> 6488 <span class="entry_type_enum_name">OFF</span> 6489 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 6490<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 6491application.<wbr/></p></span> 6492 </li> 6493 <li> 6494 <span class="entry_type_enum_name">AUTO</span> 6495 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 6496<p>In this mode,<wbr/> the lens does not move unless 6497the autofocus trigger action is called.<wbr/> When that trigger 6498is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 6499the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 6500<p>Always supported if lens is not fixed focus.<wbr/></p> 6501<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 6502is fixed-focus.<wbr/></p> 6503<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 6504and sets the AF state to INACTIVE.<wbr/></p></span> 6505 </li> 6506 <li> 6507 <span class="entry_type_enum_name">MACRO</span> 6508 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 6509<p>In this mode,<wbr/> the lens does not move unless the 6510autofocus trigger action is called.<wbr/> When that trigger is 6511activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 6512the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 6513mode is optimized for focusing on objects very close to 6514the camera.<wbr/></p> 6515<p>When that trigger is activated,<wbr/> AF will transition to 6516ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 6517NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 6518position to default,<wbr/> and sets the AF state to 6519INACTIVE.<wbr/></p></span> 6520 </li> 6521 <li> 6522 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 6523 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 6524position continually to attempt to provide a 6525constantly-in-focus image stream.<wbr/></p> 6526<p>The focusing behavior should be suitable for good quality 6527video recording; typically this means slower focus 6528movement and no overshoots.<wbr/> When the AF trigger is not 6529involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 6530and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 6531states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 6532the algorithm should immediately transition into 6533AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 6534lens position until a cancel AF trigger is received.<wbr/></p> 6535<p>Once cancel is received,<wbr/> the algorithm should transition 6536back to INACTIVE and resume passive scan.<wbr/> Note that this 6537behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 6538ongoing PASSIVE_<wbr/>SCAN must immediately be 6539canceled.<wbr/></p></span> 6540 </li> 6541 <li> 6542 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 6543 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 6544position continually to attempt to provide a 6545constantly-in-focus image stream.<wbr/></p> 6546<p>The focusing behavior should be suitable for still image 6547capture; typically this means focusing as fast as 6548possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 6549algorithm should start in INACTIVE state,<wbr/> and then 6550transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 6551appropriate as it attempts to maintain focus.<wbr/> When the AF 6552trigger is activated,<wbr/> the algorithm should finish its 6553PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 6554AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 6555lens position until a cancel AF trigger is received.<wbr/></p> 6556<p>When the AF cancel trigger is activated,<wbr/> the algorithm 6557should transition back to INACTIVE and then act as if it 6558has just been started.<wbr/></p></span> 6559 </li> 6560 <li> 6561 <span class="entry_type_enum_name">EDOF</span> 6562 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 6563<p>The camera device will produce images with an extended 6564depth of field automatically; no special focusing 6565operations need to be done before taking a picture.<wbr/></p> 6566<p>AF triggers are ignored,<wbr/> and the AF state will always be 6567INACTIVE.<wbr/></p></span> 6568 </li> 6569 </ul> 6570 6571 </td> <!-- entry_type --> 6572 6573 <td class="entry_description"> 6574 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 6575mode it is set to.<wbr/></p> 6576 </td> 6577 6578 <td class="entry_units"> 6579 </td> 6580 6581 <td class="entry_range"> 6582 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 6583 </td> 6584 6585 <td class="entry_tags"> 6586 <ul class="entry_tags"> 6587 <li><a href="#tag_BC">BC</a></li> 6588 </ul> 6589 </td> 6590 6591 </tr> 6592 <tr class="entries_header"> 6593 <th class="th_details" colspan="5">Details</th> 6594 </tr> 6595 <tr class="entry_cont"> 6596 <td class="entry_details" colspan="5"> 6597 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 6598(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 6599when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 6600dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 6601setting <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> 6602<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 6603the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 6604in result metadata.<wbr/></p> 6605 </td> 6606 </tr> 6607 6608 <tr class="entries_header"> 6609 <th class="th_details" colspan="5">HAL Implementation Details</th> 6610 </tr> 6611 <tr class="entry_cont"> 6612 <td class="entry_details" colspan="5"> 6613 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 6614request (<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 6615up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 6616<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 6617locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 6618after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 6619the same focal plane remains in focus.<wbr/></p> 6620<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 6621scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 6622(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 6623same lock behavior as above.<wbr/></p> 6624<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 6625focus 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/> 6626However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 6627manual control.<wbr/></p> 6628<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 6629camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 6630remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 6631by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 6632that will arise on camera modules with open-loop VCMs.<wbr/></p> 6633 </td> 6634 </tr> 6635 6636 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6637 <!-- end of entry --> 6638 6639 6640 <tr class="entry" id="dynamic_android.control.afRegions"> 6641 <td class="entry_name 6642 " rowspan="5"> 6643 android.<wbr/>control.<wbr/>af<wbr/>Regions 6644 </td> 6645 <td class="entry_type"> 6646 <span class="entry_type_name">int32</span> 6647 <span class="entry_type_container">x</span> 6648 6649 <span class="entry_type_array"> 6650 5 x area_count 6651 </span> 6652 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 6653 6654 6655 6656 6657 6658 6659 </td> <!-- entry_type --> 6660 6661 <td class="entry_description"> 6662 <p>List of metering areas to use for auto-focus.<wbr/></p> 6663 </td> 6664 6665 <td class="entry_units"> 6666 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 6667 </td> 6668 6669 <td class="entry_range"> 6670 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 6671<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 6672 </td> 6673 6674 <td class="entry_tags"> 6675 <ul class="entry_tags"> 6676 <li><a href="#tag_BC">BC</a></li> 6677 </ul> 6678 </td> 6679 6680 </tr> 6681 <tr class="entries_header"> 6682 <th class="th_details" colspan="5">Details</th> 6683 </tr> 6684 <tr class="entry_cont"> 6685 <td class="entry_details" colspan="5"> 6686 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 6687Otherwise will always be present.<wbr/></p> 6688<p>The maximum number of focus areas supported by the device is determined by the value 6689of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 6690<p>The coordinate system is based on the active pixel array,<wbr/> 6691with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 6692(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 6693<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 6694bottom-right pixel in the active pixel array.<wbr/></p> 6695<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 6696for every pixel in the area.<wbr/> This means that a large metering area 6697with the same weight as a smaller area will have more effect in 6698the metering result.<wbr/> Metering areas can partially overlap and the 6699camera device will add the weights in the overlap region.<wbr/></p> 6700<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 6701is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 6702ignored.<wbr/></p> 6703<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 6704camera device.<wbr/></p> 6705<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 6706capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 6707region and output only the intersection rectangle as the metering region in the result 6708metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 6709not reported in the result metadata.<wbr/></p> 6710 </td> 6711 </tr> 6712 6713 <tr class="entries_header"> 6714 <th class="th_details" colspan="5">HAL Implementation Details</th> 6715 </tr> 6716 <tr class="entry_cont"> 6717 <td class="entry_details" colspan="5"> 6718 <p>The HAL level representation of MeteringRectangle[] is a 6719int[5 * area_<wbr/>count].<wbr/> 6720Every five elements represent a metering region of 6721(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 6722The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 6723exclusive on xmax and ymax.<wbr/></p> 6724 </td> 6725 </tr> 6726 6727 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6728 <!-- end of entry --> 6729 6730 6731 <tr class="entry" id="dynamic_android.control.afTrigger"> 6732 <td class="entry_name 6733 " rowspan="5"> 6734 android.<wbr/>control.<wbr/>af<wbr/>Trigger 6735 </td> 6736 <td class="entry_type"> 6737 <span class="entry_type_name entry_type_name_enum">byte</span> 6738 6739 <span class="entry_type_visibility"> [public]</span> 6740 6741 6742 <span class="entry_type_hwlevel">[legacy] </span> 6743 6744 6745 6746 <ul class="entry_type_enum"> 6747 <li> 6748 <span class="entry_type_enum_name">IDLE</span> 6749 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 6750 </li> 6751 <li> 6752 <span class="entry_type_enum_name">START</span> 6753 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 6754 </li> 6755 <li> 6756 <span class="entry_type_enum_name">CANCEL</span> 6757 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 6758state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 6759 </li> 6760 </ul> 6761 6762 </td> <!-- entry_type --> 6763 6764 <td class="entry_description"> 6765 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 6766 </td> 6767 6768 <td class="entry_units"> 6769 </td> 6770 6771 <td class="entry_range"> 6772 </td> 6773 6774 <td class="entry_tags"> 6775 <ul class="entry_tags"> 6776 <li><a href="#tag_BC">BC</a></li> 6777 </ul> 6778 </td> 6779 6780 </tr> 6781 <tr class="entries_header"> 6782 <th class="th_details" colspan="5">Details</th> 6783 </tr> 6784 <tr class="entry_cont"> 6785 <td class="entry_details" colspan="5"> 6786 <p>This entry is normally set to IDLE,<wbr/> or is not 6787included at all in the request settings.<wbr/></p> 6788<p>When included and set to START,<wbr/> the camera device will trigger the 6789autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 6790<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 6791and return to its initial AF state.<wbr/></p> 6792<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 6793single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 6794START for multiple captures in a row means restarting the AF operation over 6795and over again.<wbr/></p> 6796<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> 6797<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> 6798simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 6799the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 6800focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 6801trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 6802changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 6803 </td> 6804 </tr> 6805 6806 <tr class="entries_header"> 6807 <th class="th_details" colspan="5">HAL Implementation Details</th> 6808 </tr> 6809 <tr class="entry_cont"> 6810 <td class="entry_details" colspan="5"> 6811 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 6812(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 6813treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 6814AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 6815to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 6816 </td> 6817 </tr> 6818 6819 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6820 <!-- end of entry --> 6821 6822 6823 <tr class="entry" id="dynamic_android.control.afState"> 6824 <td class="entry_name 6825 " rowspan="3"> 6826 android.<wbr/>control.<wbr/>af<wbr/>State 6827 </td> 6828 <td class="entry_type"> 6829 <span class="entry_type_name entry_type_name_enum">byte</span> 6830 6831 <span class="entry_type_visibility"> [public]</span> 6832 6833 6834 <span class="entry_type_hwlevel">[legacy] </span> 6835 6836 6837 6838 <ul class="entry_type_enum"> 6839 <li> 6840 <span class="entry_type_enum_name">INACTIVE</span> 6841 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked 6842to scan.<wbr/></p> 6843<p>When a camera device is opened,<wbr/> it starts in this 6844state.<wbr/> This is a transient state,<wbr/> the camera device may 6845skip reporting this state in capture 6846result.<wbr/></p></span> 6847 </li> 6848 <li> 6849 <span class="entry_type_enum_name">PASSIVE_SCAN</span> 6850 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the 6851camera device in a continuous autofocus mode.<wbr/></p> 6852<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 6853state,<wbr/> the camera device may skip reporting this state in 6854capture result.<wbr/></p></span> 6855 </li> 6856 <li> 6857 <span class="entry_type_enum_name">PASSIVE_FOCUSED</span> 6858 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may 6859restart scanning at any time.<wbr/></p> 6860<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 6861state,<wbr/> the camera device may skip reporting this state in 6862capture result.<wbr/></p></span> 6863 </li> 6864 <li> 6865 <span class="entry_type_enum_name">ACTIVE_SCAN</span> 6866 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was 6867triggered by AF trigger.<wbr/></p> 6868<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient 6869state,<wbr/> the camera device may skip reporting this state in 6870capture result.<wbr/></p></span> 6871 </li> 6872 <li> 6873 <span class="entry_type_enum_name">FOCUSED_LOCKED</span> 6874 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked 6875focus.<wbr/></p> 6876<p>This state is reached only after an explicit START AF trigger has been 6877sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p> 6878<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 6879a 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> 6880 </li> 6881 <li> 6882 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span> 6883 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked 6884focus.<wbr/></p> 6885<p>This state is reached only after an explicit START AF trigger has been 6886sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p> 6887<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 6888a 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> 6889 </li> 6890 <li> 6891 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span> 6892 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/> 6893and may restart scanning at any time.<wbr/></p> 6894<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera 6895device may skip reporting this state in capture result.<wbr/></p> 6896<p>LEGACY camera devices do not support this state.<wbr/> When a passive 6897scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span> 6898 </li> 6899 </ul> 6900 6901 </td> <!-- entry_type --> 6902 6903 <td class="entry_description"> 6904 <p>Current state of auto-focus (AF) algorithm.<wbr/></p> 6905 </td> 6906 6907 <td class="entry_units"> 6908 </td> 6909 6910 <td class="entry_range"> 6911 </td> 6912 6913 <td class="entry_tags"> 6914 </td> 6915 6916 </tr> 6917 <tr class="entries_header"> 6918 <th class="th_details" colspan="5">Details</th> 6919 </tr> 6920 <tr class="entry_cont"> 6921 <td class="entry_details" colspan="5"> 6922 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always 6923resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 6924or <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 6925the algorithm states to INACTIVE.<wbr/></p> 6926<p>The camera device can do several state transitions between two results,<wbr/> if it is 6927allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 6928seen in a result.<wbr/></p> 6929<p>The state in the result is the state for this image (in sync with this image): if 6930AF state becomes FOCUSED,<wbr/> then the image data associated with this result should 6931be sharp.<wbr/></p> 6932<p>Below are state transition tables for different AF modes.<wbr/></p> 6933<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> 6934<table> 6935<thead> 6936<tr> 6937<th align="center">State</th> 6938<th align="center">Transition Cause</th> 6939<th align="center">New State</th> 6940<th align="center">Notes</th> 6941</tr> 6942</thead> 6943<tbody> 6944<tr> 6945<td align="center">INACTIVE</td> 6946<td align="center"></td> 6947<td align="center">INACTIVE</td> 6948<td align="center">Never changes</td> 6949</tr> 6950</tbody> 6951</table> 6952<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> 6953<table> 6954<thead> 6955<tr> 6956<th align="center">State</th> 6957<th align="center">Transition Cause</th> 6958<th align="center">New State</th> 6959<th align="center">Notes</th> 6960</tr> 6961</thead> 6962<tbody> 6963<tr> 6964<td align="center">INACTIVE</td> 6965<td align="center">AF_<wbr/>TRIGGER</td> 6966<td align="center">ACTIVE_<wbr/>SCAN</td> 6967<td align="center">Start AF sweep,<wbr/> Lens now moving</td> 6968</tr> 6969<tr> 6970<td align="center">ACTIVE_<wbr/>SCAN</td> 6971<td align="center">AF sweep done</td> 6972<td align="center">FOCUSED_<wbr/>LOCKED</td> 6973<td align="center">Focused,<wbr/> Lens now locked</td> 6974</tr> 6975<tr> 6976<td align="center">ACTIVE_<wbr/>SCAN</td> 6977<td align="center">AF sweep done</td> 6978<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 6979<td align="center">Not focused,<wbr/> Lens now locked</td> 6980</tr> 6981<tr> 6982<td align="center">ACTIVE_<wbr/>SCAN</td> 6983<td align="center">AF_<wbr/>CANCEL</td> 6984<td align="center">INACTIVE</td> 6985<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> 6986</tr> 6987<tr> 6988<td align="center">FOCUSED_<wbr/>LOCKED</td> 6989<td align="center">AF_<wbr/>CANCEL</td> 6990<td align="center">INACTIVE</td> 6991<td align="center">Cancel/<wbr/>reset AF</td> 6992</tr> 6993<tr> 6994<td align="center">FOCUSED_<wbr/>LOCKED</td> 6995<td align="center">AF_<wbr/>TRIGGER</td> 6996<td align="center">ACTIVE_<wbr/>SCAN</td> 6997<td align="center">Start new sweep,<wbr/> Lens now moving</td> 6998</tr> 6999<tr> 7000<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7001<td align="center">AF_<wbr/>CANCEL</td> 7002<td align="center">INACTIVE</td> 7003<td align="center">Cancel/<wbr/>reset AF</td> 7004</tr> 7005<tr> 7006<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7007<td align="center">AF_<wbr/>TRIGGER</td> 7008<td align="center">ACTIVE_<wbr/>SCAN</td> 7009<td align="center">Start new sweep,<wbr/> Lens now moving</td> 7010</tr> 7011<tr> 7012<td align="center">Any state</td> 7013<td align="center">Mode change</td> 7014<td align="center">INACTIVE</td> 7015<td align="center"></td> 7016</tr> 7017</tbody> 7018</table> 7019<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 7020without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 7021can be skipped in that manner is called a transient state.<wbr/></p> 7022<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the 7023state transitions listed in above table,<wbr/> it is also legal for the camera device to skip 7024one or more transient states between two results.<wbr/> See below table for examples:</p> 7025<table> 7026<thead> 7027<tr> 7028<th align="center">State</th> 7029<th align="center">Transition Cause</th> 7030<th align="center">New State</th> 7031<th align="center">Notes</th> 7032</tr> 7033</thead> 7034<tbody> 7035<tr> 7036<td align="center">INACTIVE</td> 7037<td align="center">AF_<wbr/>TRIGGER</td> 7038<td align="center">FOCUSED_<wbr/>LOCKED</td> 7039<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 7040</tr> 7041<tr> 7042<td align="center">INACTIVE</td> 7043<td align="center">AF_<wbr/>TRIGGER</td> 7044<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7045<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td> 7046</tr> 7047<tr> 7048<td align="center">FOCUSED_<wbr/>LOCKED</td> 7049<td align="center">AF_<wbr/>TRIGGER</td> 7050<td align="center">FOCUSED_<wbr/>LOCKED</td> 7051<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 7052</tr> 7053<tr> 7054<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7055<td align="center">AF_<wbr/>TRIGGER</td> 7056<td align="center">FOCUSED_<wbr/>LOCKED</td> 7057<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td> 7058</tr> 7059</tbody> 7060</table> 7061<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> 7062<table> 7063<thead> 7064<tr> 7065<th align="center">State</th> 7066<th align="center">Transition Cause</th> 7067<th align="center">New State</th> 7068<th align="center">Notes</th> 7069</tr> 7070</thead> 7071<tbody> 7072<tr> 7073<td align="center">INACTIVE</td> 7074<td align="center">Camera device initiates new scan</td> 7075<td align="center">PASSIVE_<wbr/>SCAN</td> 7076<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7077</tr> 7078<tr> 7079<td align="center">INACTIVE</td> 7080<td align="center">AF_<wbr/>TRIGGER</td> 7081<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7082<td align="center">AF state query,<wbr/> Lens now locked</td> 7083</tr> 7084<tr> 7085<td align="center">PASSIVE_<wbr/>SCAN</td> 7086<td align="center">Camera device completes current scan</td> 7087<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7088<td align="center">End AF scan,<wbr/> Lens now locked</td> 7089</tr> 7090<tr> 7091<td align="center">PASSIVE_<wbr/>SCAN</td> 7092<td align="center">Camera device fails current scan</td> 7093<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7094<td align="center">End AF scan,<wbr/> Lens now locked</td> 7095</tr> 7096<tr> 7097<td align="center">PASSIVE_<wbr/>SCAN</td> 7098<td align="center">AF_<wbr/>TRIGGER</td> 7099<td align="center">FOCUSED_<wbr/>LOCKED</td> 7100<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td> 7101</tr> 7102<tr> 7103<td align="center">PASSIVE_<wbr/>SCAN</td> 7104<td align="center">AF_<wbr/>TRIGGER</td> 7105<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7106<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td> 7107</tr> 7108<tr> 7109<td align="center">PASSIVE_<wbr/>SCAN</td> 7110<td align="center">AF_<wbr/>CANCEL</td> 7111<td align="center">INACTIVE</td> 7112<td align="center">Reset lens position,<wbr/> Lens now locked</td> 7113</tr> 7114<tr> 7115<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7116<td align="center">Camera device initiates new scan</td> 7117<td align="center">PASSIVE_<wbr/>SCAN</td> 7118<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7119</tr> 7120<tr> 7121<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7122<td align="center">Camera device initiates new scan</td> 7123<td align="center">PASSIVE_<wbr/>SCAN</td> 7124<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7125</tr> 7126<tr> 7127<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7128<td align="center">AF_<wbr/>TRIGGER</td> 7129<td align="center">FOCUSED_<wbr/>LOCKED</td> 7130<td align="center">Immediate transition,<wbr/> lens now locked</td> 7131</tr> 7132<tr> 7133<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7134<td align="center">AF_<wbr/>TRIGGER</td> 7135<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7136<td align="center">Immediate transition,<wbr/> lens now locked</td> 7137</tr> 7138<tr> 7139<td align="center">FOCUSED_<wbr/>LOCKED</td> 7140<td align="center">AF_<wbr/>TRIGGER</td> 7141<td align="center">FOCUSED_<wbr/>LOCKED</td> 7142<td align="center">No effect</td> 7143</tr> 7144<tr> 7145<td align="center">FOCUSED_<wbr/>LOCKED</td> 7146<td align="center">AF_<wbr/>CANCEL</td> 7147<td align="center">INACTIVE</td> 7148<td align="center">Restart AF scan</td> 7149</tr> 7150<tr> 7151<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7152<td align="center">AF_<wbr/>TRIGGER</td> 7153<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7154<td align="center">No effect</td> 7155</tr> 7156<tr> 7157<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7158<td align="center">AF_<wbr/>CANCEL</td> 7159<td align="center">INACTIVE</td> 7160<td align="center">Restart AF scan</td> 7161</tr> 7162</tbody> 7163</table> 7164<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> 7165<table> 7166<thead> 7167<tr> 7168<th align="center">State</th> 7169<th align="center">Transition Cause</th> 7170<th align="center">New State</th> 7171<th align="center">Notes</th> 7172</tr> 7173</thead> 7174<tbody> 7175<tr> 7176<td align="center">INACTIVE</td> 7177<td align="center">Camera device initiates new scan</td> 7178<td align="center">PASSIVE_<wbr/>SCAN</td> 7179<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7180</tr> 7181<tr> 7182<td align="center">INACTIVE</td> 7183<td align="center">AF_<wbr/>TRIGGER</td> 7184<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7185<td align="center">AF state query,<wbr/> Lens now locked</td> 7186</tr> 7187<tr> 7188<td align="center">PASSIVE_<wbr/>SCAN</td> 7189<td align="center">Camera device completes current scan</td> 7190<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7191<td align="center">End AF scan,<wbr/> Lens now locked</td> 7192</tr> 7193<tr> 7194<td align="center">PASSIVE_<wbr/>SCAN</td> 7195<td align="center">Camera device fails current scan</td> 7196<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7197<td align="center">End AF scan,<wbr/> Lens now locked</td> 7198</tr> 7199<tr> 7200<td align="center">PASSIVE_<wbr/>SCAN</td> 7201<td align="center">AF_<wbr/>TRIGGER</td> 7202<td align="center">FOCUSED_<wbr/>LOCKED</td> 7203<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td> 7204</tr> 7205<tr> 7206<td align="center">PASSIVE_<wbr/>SCAN</td> 7207<td align="center">AF_<wbr/>TRIGGER</td> 7208<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7209<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td> 7210</tr> 7211<tr> 7212<td align="center">PASSIVE_<wbr/>SCAN</td> 7213<td align="center">AF_<wbr/>CANCEL</td> 7214<td align="center">INACTIVE</td> 7215<td align="center">Reset lens position,<wbr/> Lens now locked</td> 7216</tr> 7217<tr> 7218<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7219<td align="center">Camera device initiates new scan</td> 7220<td align="center">PASSIVE_<wbr/>SCAN</td> 7221<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7222</tr> 7223<tr> 7224<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7225<td align="center">Camera device initiates new scan</td> 7226<td align="center">PASSIVE_<wbr/>SCAN</td> 7227<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7228</tr> 7229<tr> 7230<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7231<td align="center">AF_<wbr/>TRIGGER</td> 7232<td align="center">FOCUSED_<wbr/>LOCKED</td> 7233<td align="center">Immediate trans.<wbr/> Lens now locked</td> 7234</tr> 7235<tr> 7236<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7237<td align="center">AF_<wbr/>TRIGGER</td> 7238<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7239<td align="center">Immediate trans.<wbr/> Lens now locked</td> 7240</tr> 7241<tr> 7242<td align="center">FOCUSED_<wbr/>LOCKED</td> 7243<td align="center">AF_<wbr/>TRIGGER</td> 7244<td align="center">FOCUSED_<wbr/>LOCKED</td> 7245<td align="center">No effect</td> 7246</tr> 7247<tr> 7248<td align="center">FOCUSED_<wbr/>LOCKED</td> 7249<td align="center">AF_<wbr/>CANCEL</td> 7250<td align="center">INACTIVE</td> 7251<td align="center">Restart AF scan</td> 7252</tr> 7253<tr> 7254<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7255<td align="center">AF_<wbr/>TRIGGER</td> 7256<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7257<td align="center">No effect</td> 7258</tr> 7259<tr> 7260<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7261<td align="center">AF_<wbr/>CANCEL</td> 7262<td align="center">INACTIVE</td> 7263<td align="center">Restart AF scan</td> 7264</tr> 7265</tbody> 7266</table> 7267<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO 7268(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the 7269camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger 7270will be evaluated in the context of the new mode in the request.<wbr/> 7271See below table for examples:</p> 7272<table> 7273<thead> 7274<tr> 7275<th align="center">State</th> 7276<th align="center">Transition Cause</th> 7277<th align="center">New State</th> 7278<th align="center">Notes</th> 7279</tr> 7280</thead> 7281<tbody> 7282<tr> 7283<td align="center">any state</td> 7284<td align="center">CAF-->AUTO mode switch</td> 7285<td align="center">INACTIVE</td> 7286<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td> 7287</tr> 7288<tr> 7289<td align="center">any state</td> 7290<td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td> 7291<td align="center">trigger-reachable states from INACTIVE</td> 7292<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td> 7293</tr> 7294<tr> 7295<td align="center">any state</td> 7296<td align="center">AUTO-->CAF mode switch</td> 7297<td align="center">passively reachable states from INACTIVE</td> 7298<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td> 7299</tr> 7300</tbody> 7301</table> 7302 </td> 7303 </tr> 7304 7305 7306 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7307 <!-- end of entry --> 7308 7309 7310 <tr class="entry" id="dynamic_android.control.afTriggerId"> 7311 <td class="entry_name 7312 entry_name_deprecated 7313 " rowspan="3"> 7314 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id 7315 </td> 7316 <td class="entry_type"> 7317 <span class="entry_type_name">int32</span> 7318 7319 <span class="entry_type_visibility"> [system]</span> 7320 7321 7322 7323 <span class="entry_type_deprecated">[deprecated] </span> 7324 7325 7326 7327 </td> <!-- entry_type --> 7328 7329 <td class="entry_description"> 7330 <p>The ID sent with the latest 7331CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p> 7332 </td> 7333 7334 <td class="entry_units"> 7335 </td> 7336 7337 <td class="entry_range"> 7338 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 7339 </td> 7340 7341 <td class="entry_tags"> 7342 </td> 7343 7344 </tr> 7345 <tr class="entries_header"> 7346 <th class="th_details" colspan="5">Details</th> 7347 </tr> 7348 <tr class="entry_cont"> 7349 <td class="entry_details" colspan="5"> 7350 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger 7351received yet by HAL.<wbr/> Always updated even if AF algorithm 7352ignores the trigger</p> 7353 </td> 7354 </tr> 7355 7356 7357 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7358 <!-- end of entry --> 7359 7360 7361 <tr class="entry" id="dynamic_android.control.awbLock"> 7362 <td class="entry_name 7363 " rowspan="3"> 7364 android.<wbr/>control.<wbr/>awb<wbr/>Lock 7365 </td> 7366 <td class="entry_type"> 7367 <span class="entry_type_name entry_type_name_enum">byte</span> 7368 7369 <span class="entry_type_visibility"> [public as boolean]</span> 7370 7371 7372 <span class="entry_type_hwlevel">[legacy] </span> 7373 7374 7375 7376 <ul class="entry_type_enum"> 7377 <li> 7378 <span class="entry_type_enum_name">OFF</span> 7379 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 7380algorithm is free to update its parameters if in AUTO 7381mode.<wbr/></p></span> 7382 </li> 7383 <li> 7384 <span class="entry_type_enum_name">ON</span> 7385 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 7386algorithm will not update its parameters while the lock 7387is active.<wbr/></p></span> 7388 </li> 7389 </ul> 7390 7391 </td> <!-- entry_type --> 7392 7393 <td class="entry_description"> 7394 <p>Whether auto-white balance (AWB) is currently locked to its 7395latest calculated values.<wbr/></p> 7396 </td> 7397 7398 <td class="entry_units"> 7399 </td> 7400 7401 <td class="entry_range"> 7402 </td> 7403 7404 <td class="entry_tags"> 7405 <ul class="entry_tags"> 7406 <li><a href="#tag_BC">BC</a></li> 7407 </ul> 7408 </td> 7409 7410 </tr> 7411 <tr class="entries_header"> 7412 <th class="th_details" colspan="5">Details</th> 7413 </tr> 7414 <tr class="entry_cont"> 7415 <td class="entry_details" colspan="5"> 7416 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 7417and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 7418<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 7419get locked do not necessarily correspond to the settings that were present in the 7420latest capture result received from the camera device,<wbr/> since additional captures 7421and AWB updates may have occurred even before the result was sent out.<wbr/> If an 7422application is switching between automatic and manual control and wishes to eliminate 7423any flicker during the switch,<wbr/> the following procedure is recommended:</p> 7424<ol> 7425<li>Starting in auto-AWB mode:</li> 7426<li>Lock AWB</li> 7427<li>Wait for the first result to be output that has the AWB locked</li> 7428<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 7429<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 7430</ol> 7431<p>Note that AWB lock is only meaningful when 7432<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 7433AWB is already fixed to a specific setting.<wbr/></p> 7434<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 7435 </td> 7436 </tr> 7437 7438 7439 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7440 <!-- end of entry --> 7441 7442 7443 <tr class="entry" id="dynamic_android.control.awbMode"> 7444 <td class="entry_name 7445 " rowspan="3"> 7446 android.<wbr/>control.<wbr/>awb<wbr/>Mode 7447 </td> 7448 <td class="entry_type"> 7449 <span class="entry_type_name entry_type_name_enum">byte</span> 7450 7451 <span class="entry_type_visibility"> [public]</span> 7452 7453 7454 <span class="entry_type_hwlevel">[legacy] </span> 7455 7456 7457 7458 <ul class="entry_type_enum"> 7459 <li> 7460 <span class="entry_type_enum_name">OFF</span> 7461 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 7462<p>The application-selected color transform matrix 7463(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 7464(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 7465device for manual white balance control.<wbr/></p></span> 7466 </li> 7467 <li> 7468 <span class="entry_type_enum_name">AUTO</span> 7469 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 7470<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7471and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7472For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7473values used by the camera device for the transform and gains 7474will be available in the capture result for this request.<wbr/></p></span> 7475 </li> 7476 <li> 7477 <span class="entry_type_enum_name">INCANDESCENT</span> 7478 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7479the camera device uses incandescent light as the assumed scene 7480illumination for white balance.<wbr/></p> 7481<p>While the exact white balance transforms are up to the 7482camera device,<wbr/> they will approximately match the CIE 7483standard illuminant A.<wbr/></p> 7484<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7485and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7486For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7487values used by the camera device for the transform and gains 7488will be available in the capture result for this request.<wbr/></p></span> 7489 </li> 7490 <li> 7491 <span class="entry_type_enum_name">FLUORESCENT</span> 7492 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7493the camera device uses fluorescent light as the assumed scene 7494illumination for white balance.<wbr/></p> 7495<p>While the exact white balance transforms are up to the 7496camera device,<wbr/> they will approximately match the CIE 7497standard illuminant F2.<wbr/></p> 7498<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7499and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7500For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7501values used by the camera device for the transform and gains 7502will be available in the capture result for this request.<wbr/></p></span> 7503 </li> 7504 <li> 7505 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 7506 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7507the camera device uses warm fluorescent light as the assumed scene 7508illumination for white balance.<wbr/></p> 7509<p>While the exact white balance transforms are up to the 7510camera device,<wbr/> they will approximately match the CIE 7511standard illuminant F4.<wbr/></p> 7512<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7513and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7514For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7515values used by the camera device for the transform and gains 7516will be available in the capture result for this request.<wbr/></p></span> 7517 </li> 7518 <li> 7519 <span class="entry_type_enum_name">DAYLIGHT</span> 7520 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7521the camera device uses daylight light as the assumed scene 7522illumination for white balance.<wbr/></p> 7523<p>While the exact white balance transforms are up to the 7524camera device,<wbr/> they will approximately match the CIE 7525standard illuminant D65.<wbr/></p> 7526<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7527and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7528For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7529values used by the camera device for the transform and gains 7530will be available in the capture result for this request.<wbr/></p></span> 7531 </li> 7532 <li> 7533 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 7534 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7535the camera device uses cloudy daylight light as the assumed scene 7536illumination for white balance.<wbr/></p> 7537<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7538and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7539For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7540values used by the camera device for the transform and gains 7541will be available in the capture result for this request.<wbr/></p></span> 7542 </li> 7543 <li> 7544 <span class="entry_type_enum_name">TWILIGHT</span> 7545 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7546the camera device uses twilight light as the assumed scene 7547illumination for white balance.<wbr/></p> 7548<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7549and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7550For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7551values used by the camera device for the transform and gains 7552will be available in the capture result for this request.<wbr/></p></span> 7553 </li> 7554 <li> 7555 <span class="entry_type_enum_name">SHADE</span> 7556 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7557the camera device uses shade light as the assumed scene 7558illumination for white balance.<wbr/></p> 7559<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7560and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7561For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7562values used by the camera device for the transform and gains 7563will be available in the capture result for this request.<wbr/></p></span> 7564 </li> 7565 </ul> 7566 7567 </td> <!-- entry_type --> 7568 7569 <td class="entry_description"> 7570 <p>Whether auto-white balance (AWB) is currently setting the color 7571transform fields,<wbr/> and what its illumination target 7572is.<wbr/></p> 7573 </td> 7574 7575 <td class="entry_units"> 7576 </td> 7577 7578 <td class="entry_range"> 7579 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 7580 </td> 7581 7582 <td class="entry_tags"> 7583 <ul class="entry_tags"> 7584 <li><a href="#tag_BC">BC</a></li> 7585 </ul> 7586 </td> 7587 7588 </tr> 7589 <tr class="entries_header"> 7590 <th class="th_details" colspan="5">Details</th> 7591 </tr> 7592 <tr class="entry_cont"> 7593 <td class="entry_details" colspan="5"> 7594 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 7595<p>When set to the ON mode,<wbr/> the camera device's auto-white balance 7596routine is enabled,<wbr/> overriding the application's selected 7597<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 7598<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> 7599is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 7600also 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 7601setting AE mode to OFF.<wbr/></p> 7602<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 7603routine is disabled.<wbr/> The application manually controls the white 7604balance 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> 7605and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 7606<p>When set to any other modes,<wbr/> the camera device's auto-white 7607balance routine is disabled.<wbr/> The camera device uses each 7608particular illumination target for white balance 7609adjustment.<wbr/> The application's values for 7610<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 7611<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 7612<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 7613 </td> 7614 </tr> 7615 7616 7617 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7618 <!-- end of entry --> 7619 7620 7621 <tr class="entry" id="dynamic_android.control.awbRegions"> 7622 <td class="entry_name 7623 " rowspan="5"> 7624 android.<wbr/>control.<wbr/>awb<wbr/>Regions 7625 </td> 7626 <td class="entry_type"> 7627 <span class="entry_type_name">int32</span> 7628 <span class="entry_type_container">x</span> 7629 7630 <span class="entry_type_array"> 7631 5 x area_count 7632 </span> 7633 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 7634 7635 7636 7637 7638 7639 7640 </td> <!-- entry_type --> 7641 7642 <td class="entry_description"> 7643 <p>List of metering areas to use for auto-white-balance illuminant 7644estimation.<wbr/></p> 7645 </td> 7646 7647 <td class="entry_units"> 7648 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 7649 </td> 7650 7651 <td class="entry_range"> 7652 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 7653<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 7654 </td> 7655 7656 <td class="entry_tags"> 7657 <ul class="entry_tags"> 7658 <li><a href="#tag_BC">BC</a></li> 7659 </ul> 7660 </td> 7661 7662 </tr> 7663 <tr class="entries_header"> 7664 <th class="th_details" colspan="5">Details</th> 7665 </tr> 7666 <tr class="entry_cont"> 7667 <td class="entry_details" colspan="5"> 7668 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 7669Otherwise will always be present.<wbr/></p> 7670<p>The maximum number of regions supported by the device is determined by the value 7671of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 7672<p>The coordinate system is based on the active pixel array,<wbr/> 7673with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 7674(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 7675<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 7676bottom-right pixel in the active pixel array.<wbr/></p> 7677<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 7678for every pixel in the area.<wbr/> This means that a large metering area 7679with the same weight as a smaller area will have more effect in 7680the metering result.<wbr/> Metering areas can partially overlap and the 7681camera device will add the weights in the overlap region.<wbr/></p> 7682<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 7683only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 76840 weight is ignored.<wbr/></p> 7685<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 7686camera device.<wbr/></p> 7687<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 7688capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 7689region and output only the intersection rectangle as the metering region in the result 7690metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 7691not reported in the result metadata.<wbr/></p> 7692 </td> 7693 </tr> 7694 7695 <tr class="entries_header"> 7696 <th class="th_details" colspan="5">HAL Implementation Details</th> 7697 </tr> 7698 <tr class="entry_cont"> 7699 <td class="entry_details" colspan="5"> 7700 <p>The HAL level representation of MeteringRectangle[] is a 7701int[5 * area_<wbr/>count].<wbr/> 7702Every five elements represent a metering region of 7703(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 7704The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 7705exclusive on xmax and ymax.<wbr/></p> 7706 </td> 7707 </tr> 7708 7709 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7710 <!-- end of entry --> 7711 7712 7713 <tr class="entry" id="dynamic_android.control.captureIntent"> 7714 <td class="entry_name 7715 " rowspan="3"> 7716 android.<wbr/>control.<wbr/>capture<wbr/>Intent 7717 </td> 7718 <td class="entry_type"> 7719 <span class="entry_type_name entry_type_name_enum">byte</span> 7720 7721 <span class="entry_type_visibility"> [public]</span> 7722 7723 7724 <span class="entry_type_hwlevel">[legacy] </span> 7725 7726 7727 7728 <ul class="entry_type_enum"> 7729 <li> 7730 <span class="entry_type_enum_name">CUSTOM</span> 7731 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 7732categories.<wbr/> The camera device will default to preview-like 7733behavior.<wbr/></p></span> 7734 </li> 7735 <li> 7736 <span class="entry_type_enum_name">PREVIEW</span> 7737 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 7738<p>The precapture trigger may be used to start off a metering 7739w/<wbr/>flash sequence.<wbr/></p></span> 7740 </li> 7741 <li> 7742 <span class="entry_type_enum_name">STILL_CAPTURE</span> 7743 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 7744use case.<wbr/></p> 7745<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 7746 </li> 7747 <li> 7748 <span class="entry_type_enum_name">VIDEO_RECORD</span> 7749 <span class="entry_type_enum_notes"><p>This request is for a video recording 7750use case.<wbr/></p></span> 7751 </li> 7752 <li> 7753 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 7754 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 7755image while recording video) use case.<wbr/></p> 7756<p>The camera device should take the highest-quality image 7757possible (given the other settings) without disrupting the 7758frame rate of video recording.<wbr/> </p></span> 7759 </li> 7760 <li> 7761 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 7762 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 7763application will stream full-resolution images and 7764reprocess one or several later for a final 7765capture.<wbr/></p></span> 7766 </li> 7767 <li> 7768 <span class="entry_type_enum_name">MANUAL</span> 7769 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 7770the applications want to directly control the capture parameters.<wbr/></p> 7771<p>For example,<wbr/> the application may wish to manually control 7772<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> 7773 </li> 7774 </ul> 7775 7776 </td> <!-- entry_type --> 7777 7778 <td class="entry_description"> 7779 <p>Information to the camera device 3A (auto-exposure,<wbr/> 7780auto-focus,<wbr/> auto-white balance) routines about the purpose 7781of this capture,<wbr/> to help the camera device to decide optimal 3A 7782strategy.<wbr/></p> 7783 </td> 7784 7785 <td class="entry_units"> 7786 </td> 7787 7788 <td class="entry_range"> 7789 </td> 7790 7791 <td class="entry_tags"> 7792 <ul class="entry_tags"> 7793 <li><a href="#tag_BC">BC</a></li> 7794 </ul> 7795 </td> 7796 7797 </tr> 7798 <tr class="entries_header"> 7799 <th class="th_details" colspan="5">Details</th> 7800 </tr> 7801 <tr class="entry_cont"> 7802 <td class="entry_details" colspan="5"> 7803 <p>This control (except for MANUAL) is only effective if 7804<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 7805<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 7806contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if 7807<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are 7808always supported.<wbr/></p> 7809 </td> 7810 </tr> 7811 7812 7813 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7814 <!-- end of entry --> 7815 7816 7817 <tr class="entry" id="dynamic_android.control.awbState"> 7818 <td class="entry_name 7819 " rowspan="3"> 7820 android.<wbr/>control.<wbr/>awb<wbr/>State 7821 </td> 7822 <td class="entry_type"> 7823 <span class="entry_type_name entry_type_name_enum">byte</span> 7824 7825 <span class="entry_type_visibility"> [public]</span> 7826 7827 7828 <span class="entry_type_hwlevel">[limited] </span> 7829 7830 7831 7832 <ul class="entry_type_enum"> 7833 <li> 7834 <span class="entry_type_enum_name">INACTIVE</span> 7835 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p> 7836<p>When a camera device is opened,<wbr/> it starts in this 7837state.<wbr/> This is a transient state,<wbr/> the camera device may 7838skip reporting this state in capture 7839result.<wbr/></p></span> 7840 </li> 7841 <li> 7842 <span class="entry_type_enum_name">SEARCHING</span> 7843 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control 7844values for the current scene.<wbr/></p> 7845<p>This is a transient state,<wbr/> the camera device 7846may skip reporting this state in capture result.<wbr/></p></span> 7847 </li> 7848 <li> 7849 <span class="entry_type_enum_name">CONVERGED</span> 7850 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the 7851current scene.<wbr/></p></span> 7852 </li> 7853 <li> 7854 <span class="entry_type_enum_name">LOCKED</span> 7855 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span> 7856 </li> 7857 </ul> 7858 7859 </td> <!-- entry_type --> 7860 7861 <td class="entry_description"> 7862 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p> 7863 </td> 7864 7865 <td class="entry_units"> 7866 </td> 7867 7868 <td class="entry_range"> 7869 </td> 7870 7871 <td class="entry_tags"> 7872 </td> 7873 7874 </tr> 7875 <tr class="entries_header"> 7876 <th class="th_details" colspan="5">Details</th> 7877 </tr> 7878 <tr class="entry_cont"> 7879 <td class="entry_details" colspan="5"> 7880 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always 7881resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 7882or <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 7883the algorithm states to INACTIVE.<wbr/></p> 7884<p>The camera device can do several state transitions between two results,<wbr/> if it is 7885allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in 7886a result.<wbr/></p> 7887<p>The state in the result is the state for this image (in sync with this image): if 7888AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should 7889be good to use.<wbr/></p> 7890<p>Below are state transition tables for different AWB modes.<wbr/></p> 7891<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p> 7892<table> 7893<thead> 7894<tr> 7895<th align="center">State</th> 7896<th align="center">Transition Cause</th> 7897<th align="center">New State</th> 7898<th align="center">Notes</th> 7899</tr> 7900</thead> 7901<tbody> 7902<tr> 7903<td align="center">INACTIVE</td> 7904<td align="center"></td> 7905<td align="center">INACTIVE</td> 7906<td align="center">Camera device auto white balance algorithm is disabled</td> 7907</tr> 7908</tbody> 7909</table> 7910<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p> 7911<table> 7912<thead> 7913<tr> 7914<th align="center">State</th> 7915<th align="center">Transition Cause</th> 7916<th align="center">New State</th> 7917<th align="center">Notes</th> 7918</tr> 7919</thead> 7920<tbody> 7921<tr> 7922<td align="center">INACTIVE</td> 7923<td align="center">Camera device initiates AWB scan</td> 7924<td align="center">SEARCHING</td> 7925<td align="center">Values changing</td> 7926</tr> 7927<tr> 7928<td align="center">INACTIVE</td> 7929<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7930<td align="center">LOCKED</td> 7931<td align="center">Values locked</td> 7932</tr> 7933<tr> 7934<td align="center">SEARCHING</td> 7935<td align="center">Camera device finishes AWB scan</td> 7936<td align="center">CONVERGED</td> 7937<td align="center">Good values,<wbr/> not changing</td> 7938</tr> 7939<tr> 7940<td align="center">SEARCHING</td> 7941<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7942<td align="center">LOCKED</td> 7943<td align="center">Values locked</td> 7944</tr> 7945<tr> 7946<td align="center">CONVERGED</td> 7947<td align="center">Camera device initiates AWB scan</td> 7948<td align="center">SEARCHING</td> 7949<td align="center">Values changing</td> 7950</tr> 7951<tr> 7952<td align="center">CONVERGED</td> 7953<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 7954<td align="center">LOCKED</td> 7955<td align="center">Values locked</td> 7956</tr> 7957<tr> 7958<td align="center">LOCKED</td> 7959<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 7960<td align="center">SEARCHING</td> 7961<td align="center">Values not good after unlock</td> 7962</tr> 7963</tbody> 7964</table> 7965<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 7966without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 7967can be skipped in that manner is called a transient state.<wbr/></p> 7968<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions 7969listed in above table,<wbr/> it is also legal for the camera device to skip one or more 7970transient states between two results.<wbr/> See below table for examples:</p> 7971<table> 7972<thead> 7973<tr> 7974<th align="center">State</th> 7975<th align="center">Transition Cause</th> 7976<th align="center">New State</th> 7977<th align="center">Notes</th> 7978</tr> 7979</thead> 7980<tbody> 7981<tr> 7982<td align="center">INACTIVE</td> 7983<td align="center">Camera device finished AWB scan</td> 7984<td align="center">CONVERGED</td> 7985<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 7986</tr> 7987<tr> 7988<td align="center">LOCKED</td> 7989<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 7990<td align="center">CONVERGED</td> 7991<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td> 7992</tr> 7993</tbody> 7994</table> 7995 </td> 7996 </tr> 7997 7998 7999 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8000 <!-- end of entry --> 8001 8002 8003 <tr class="entry" id="dynamic_android.control.effectMode"> 8004 <td class="entry_name 8005 " rowspan="3"> 8006 android.<wbr/>control.<wbr/>effect<wbr/>Mode 8007 </td> 8008 <td class="entry_type"> 8009 <span class="entry_type_name entry_type_name_enum">byte</span> 8010 8011 <span class="entry_type_visibility"> [public]</span> 8012 8013 8014 <span class="entry_type_hwlevel">[legacy] </span> 8015 8016 8017 8018 <ul class="entry_type_enum"> 8019 <li> 8020 <span class="entry_type_enum_name">OFF</span> 8021 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 8022 </li> 8023 <li> 8024 <span class="entry_type_enum_name">MONO</span> 8025 <span class="entry_type_enum_optional">[optional]</span> 8026 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 8027a single color.<wbr/></p> 8028<p>This will typically be grayscale.<wbr/></p></span> 8029 </li> 8030 <li> 8031 <span class="entry_type_enum_name">NEGATIVE</span> 8032 <span class="entry_type_enum_optional">[optional]</span> 8033 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 8034are inverted.<wbr/></p></span> 8035 </li> 8036 <li> 8037 <span class="entry_type_enum_name">SOLARIZE</span> 8038 <span class="entry_type_enum_optional">[optional]</span> 8039 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 8040image is wholly or partially reversed in 8041tone.<wbr/></p></span> 8042 </li> 8043 <li> 8044 <span class="entry_type_enum_name">SEPIA</span> 8045 <span class="entry_type_enum_optional">[optional]</span> 8046 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 8047gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 8048 </li> 8049 <li> 8050 <span class="entry_type_enum_name">POSTERIZE</span> 8051 <span class="entry_type_enum_optional">[optional]</span> 8052 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 8053discrete regions of tone rather than a continuous 8054gradient of tones.<wbr/></p></span> 8055 </li> 8056 <li> 8057 <span class="entry_type_enum_name">WHITEBOARD</span> 8058 <span class="entry_type_enum_optional">[optional]</span> 8059 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 8060as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 8061 </li> 8062 <li> 8063 <span class="entry_type_enum_name">BLACKBOARD</span> 8064 <span class="entry_type_enum_optional">[optional]</span> 8065 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 8066as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 8067 </li> 8068 <li> 8069 <span class="entry_type_enum_name">AQUA</span> 8070 <span class="entry_type_enum_optional">[optional]</span> 8071 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 8072 </li> 8073 </ul> 8074 8075 </td> <!-- entry_type --> 8076 8077 <td class="entry_description"> 8078 <p>A special color effect to apply.<wbr/></p> 8079 </td> 8080 8081 <td class="entry_units"> 8082 </td> 8083 8084 <td class="entry_range"> 8085 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 8086 </td> 8087 8088 <td class="entry_tags"> 8089 <ul class="entry_tags"> 8090 <li><a href="#tag_BC">BC</a></li> 8091 </ul> 8092 </td> 8093 8094 </tr> 8095 <tr class="entries_header"> 8096 <th class="th_details" colspan="5">Details</th> 8097 </tr> 8098 <tr class="entry_cont"> 8099 <td class="entry_details" colspan="5"> 8100 <p>When this mode is set,<wbr/> a color effect will be applied 8101to images produced by the camera device.<wbr/> The interpretation 8102and implementation of these color effects is left to the 8103implementor of the camera device,<wbr/> and should not be 8104depended on to be consistent (or present) across all 8105devices.<wbr/></p> 8106 </td> 8107 </tr> 8108 8109 8110 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8111 <!-- end of entry --> 8112 8113 8114 <tr class="entry" id="dynamic_android.control.mode"> 8115 <td class="entry_name 8116 " rowspan="3"> 8117 android.<wbr/>control.<wbr/>mode 8118 </td> 8119 <td class="entry_type"> 8120 <span class="entry_type_name entry_type_name_enum">byte</span> 8121 8122 <span class="entry_type_visibility"> [public]</span> 8123 8124 8125 <span class="entry_type_hwlevel">[legacy] </span> 8126 8127 8128 8129 <ul class="entry_type_enum"> 8130 <li> 8131 <span class="entry_type_enum_name">OFF</span> 8132 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 8133<p>All control by the device's metering and focusing (3A) 8134routines is disabled,<wbr/> and no other settings in 8135android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 8136<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 8137device to select post-processing values for processing 8138blocks that do not allow for manual control,<wbr/> or are not 8139exposed by the camera API.<wbr/></p> 8140<p>However,<wbr/> the camera device's 3A routines may continue to 8141collect statistics and update their internal state so that 8142when control is switched to AUTO mode,<wbr/> good control values 8143can be immediately applied.<wbr/></p></span> 8144 </li> 8145 <li> 8146 <span class="entry_type_enum_name">AUTO</span> 8147 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 8148<p>Manual control of capture parameters is disabled.<wbr/> All 8149controls in android.<wbr/>control.<wbr/>* besides sceneMode take 8150effect.<wbr/></p></span> 8151 </li> 8152 <li> 8153 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 8154 <span class="entry_type_enum_optional">[optional]</span> 8155 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 8156<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 8157control.<wbr/>afMode controls; the camera device will ignore 8158those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 8159FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 8160This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 8161<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 8162contain some modes other than DISABLED).<wbr/></p></span> 8163 </li> 8164 <li> 8165 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 8166 <span class="entry_type_enum_optional">[optional]</span> 8167 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 8168used by camera device background auto-exposure,<wbr/> auto-white balance and 8169auto-focus algorithms (3A) to update their statistics.<wbr/></p> 8170<p>Specifically,<wbr/> the 3A routines are locked to the last 8171values set from a request with AUTO,<wbr/> OFF,<wbr/> or 8172USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 8173collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 8174discarded by the camera device.<wbr/></p></span> 8175 </li> 8176 </ul> 8177 8178 </td> <!-- entry_type --> 8179 8180 <td class="entry_description"> 8181 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 8182routines.<wbr/></p> 8183 </td> 8184 8185 <td class="entry_units"> 8186 </td> 8187 8188 <td class="entry_range"> 8189 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 8190 </td> 8191 8192 <td class="entry_tags"> 8193 <ul class="entry_tags"> 8194 <li><a href="#tag_BC">BC</a></li> 8195 </ul> 8196 </td> 8197 8198 </tr> 8199 <tr class="entries_header"> 8200 <th class="th_details" colspan="5">Details</th> 8201 </tr> 8202 <tr class="entry_cont"> 8203 <td class="entry_details" colspan="5"> 8204 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 8205by the camera device is disabled.<wbr/> The application must set the fields for 8206capture parameters itself.<wbr/></p> 8207<p>When set to AUTO,<wbr/> the individual algorithm controls in 8208android.<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> 8209<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 8210android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 8211one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 8212as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 8213<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 8214<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 8215is that this frame will not be used by camera device background 3A statistics 8216update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 8217where the application doesn't want a 3A manual control capture to affect 8218the subsequent auto 3A capture results.<wbr/></p> 8219 </td> 8220 </tr> 8221 8222 8223 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8224 <!-- end of entry --> 8225 8226 8227 <tr class="entry" id="dynamic_android.control.sceneMode"> 8228 <td class="entry_name 8229 " rowspan="5"> 8230 android.<wbr/>control.<wbr/>scene<wbr/>Mode 8231 </td> 8232 <td class="entry_type"> 8233 <span class="entry_type_name entry_type_name_enum">byte</span> 8234 8235 <span class="entry_type_visibility"> [public]</span> 8236 8237 8238 <span class="entry_type_hwlevel">[legacy] </span> 8239 8240 8241 8242 <ul class="entry_type_enum"> 8243 <li> 8244 <span class="entry_type_enum_name">DISABLED</span> 8245 <span class="entry_type_enum_value">0</span> 8246 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 8247 </li> 8248 <li> 8249 <span class="entry_type_enum_name">FACE_PRIORITY</span> 8250 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 8251detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 8252auto-exposure routines.<wbr/></p> 8253<p>If face detection statistics are disabled 8254(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/> 8255this should still operate correctly (but will not return 8256face detection statistics to the framework).<wbr/></p> 8257<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8258<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> 8259remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 8260 </li> 8261 <li> 8262 <span class="entry_type_enum_name">ACTION</span> 8263 <span class="entry_type_enum_optional">[optional]</span> 8264 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 8265<p>Similar to SPORTS.<wbr/></p></span> 8266 </li> 8267 <li> 8268 <span class="entry_type_enum_name">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.<wbr/></p></span> 8271 </li> 8272 <li> 8273 <span class="entry_type_enum_name">LANDSCAPE</span> 8274 <span class="entry_type_enum_optional">[optional]</span> 8275 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 8276 </li> 8277 <li> 8278 <span class="entry_type_enum_name">NIGHT</span> 8279 <span class="entry_type_enum_optional">[optional]</span> 8280 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 8281 </li> 8282 <li> 8283 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 8284 <span class="entry_type_enum_optional">[optional]</span> 8285 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 8286settings.<wbr/></p></span> 8287 </li> 8288 <li> 8289 <span class="entry_type_enum_name">THEATRE</span> 8290 <span class="entry_type_enum_optional">[optional]</span> 8291 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 8292remain off.<wbr/></p></span> 8293 </li> 8294 <li> 8295 <span class="entry_type_enum_name">BEACH</span> 8296 <span class="entry_type_enum_optional">[optional]</span> 8297 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 8298 </li> 8299 <li> 8300 <span class="entry_type_enum_name">SNOW</span> 8301 <span class="entry_type_enum_optional">[optional]</span> 8302 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 8303 </li> 8304 <li> 8305 <span class="entry_type_enum_name">SUNSET</span> 8306 <span class="entry_type_enum_optional">[optional]</span> 8307 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 8308 </li> 8309 <li> 8310 <span class="entry_type_enum_name">STEADYPHOTO</span> 8311 <span class="entry_type_enum_optional">[optional]</span> 8312 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 8313device motion (for example: due to hand shake).<wbr/></p></span> 8314 </li> 8315 <li> 8316 <span class="entry_type_enum_name">FIREWORKS</span> 8317 <span class="entry_type_enum_optional">[optional]</span> 8318 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 8319 </li> 8320 <li> 8321 <span class="entry_type_enum_name">SPORTS</span> 8322 <span class="entry_type_enum_optional">[optional]</span> 8323 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 8324<p>Similar to ACTION.<wbr/></p></span> 8325 </li> 8326 <li> 8327 <span class="entry_type_enum_name">PARTY</span> 8328 <span class="entry_type_enum_optional">[optional]</span> 8329 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 8330people.<wbr/></p></span> 8331 </li> 8332 <li> 8333 <span class="entry_type_enum_name">CANDLELIGHT</span> 8334 <span class="entry_type_enum_optional">[optional]</span> 8335 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 8336is a flame.<wbr/></p></span> 8337 </li> 8338 <li> 8339 <span class="entry_type_enum_name">BARCODE</span> 8340 <span class="entry_type_enum_optional">[optional]</span> 8341 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 8342for use by camera applications that wish to read the 8343barcode value.<wbr/></p></span> 8344 </li> 8345 <li> 8346 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span> 8347 <span class="entry_type_enum_deprecated">[deprecated]</span> 8348 <span class="entry_type_enum_optional">[optional]</span> 8349 <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> 8350and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 8351for high speed video recording.<wbr/></p> 8352<p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 8353<p>The supported high speed video sizes and fps ranges are specified in 8354<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 8355output frame rates,<wbr/> the application is only allowed to select video size 8356and fps range combinations listed in this static metadata.<wbr/> The fps range 8357can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 8358<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 8359ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 8360controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 8361and post-processing parameters is possible.<wbr/> All other controls operate the 8362same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 8363android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 8364<ul> 8365<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 8366<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 8367<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 8368<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 8369<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 8370<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 8371<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 8372<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 8373<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 8374<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 8375</ul> 8376<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 8377<ul> 8378<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> 8379<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 8380<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 8381<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 8382</ul> 8383<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 8384be lower than what camera can output,<wbr/> depending on the destination Surfaces for 8385the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 8386the application need check if the video encoder is capable of supporting the 8387high frame rate for a given video size,<wbr/> or it will end up with lower recording 8388frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 8389rate will be bounded by the screen refresh rate.<wbr/></p> 8390<p>The camera device will only support up to 2 output high speed streams 8391(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 8392in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 8393<ul> 8394<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 8395format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 8396min(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> 8397<li>The stream sizes are selected from the sizes reported by 8398<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 8399<li>No processed non-stalling or raw streams are configured.<wbr/></li> 8400</ul> 8401<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 8402<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/> 8403the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 8404and the returned capture result metadata will give the fps range choosen 8405by the camera device.<wbr/></p> 8406<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 8407reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 8408the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 8409 </li> 8410 <li> 8411 <span class="entry_type_enum_name">HDR</span> 8412 <span class="entry_type_enum_optional">[optional]</span> 8413 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 8414<p>In this scene mode,<wbr/> the camera device captures images 8415that keep a larger range of scene illumination levels 8416visible in the final image.<wbr/> For example,<wbr/> when taking a 8417picture of a object in front of a bright window,<wbr/> both 8418the object and the scene through the window may be 8419visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 8420one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 8421HDR mode generally takes much longer to capture a single 8422image,<wbr/> has no user control,<wbr/> and may have other artifacts 8423depending on the HDR method used.<wbr/></p> 8424<p>Therefore,<wbr/> HDR captures operate at a much slower rate 8425than regular captures.<wbr/></p> 8426<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 8427is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 8428STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 8429using a high dynamic range capture technique.<wbr/> On LEGACY 8430devices,<wbr/> captures that target a JPEG-format output will 8431be captured with HDR,<wbr/> and the capture intent is not 8432relevant.<wbr/></p> 8433<p>The HDR capture may involve the device capturing a burst 8434of images internally and combining them into one,<wbr/> or it 8435may involve the device using specialized high dynamic 8436range capture hardware.<wbr/> In all cases,<wbr/> a single image is 8437produced in response to a capture request submitted 8438while in HDR mode.<wbr/></p> 8439<p>Since substantial post-processing is generally needed to 8440produce an HDR image,<wbr/> only YUV and JPEG outputs are 8441supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only 8442JPEG outputs are supported for LEGACY HDR 8443captures.<wbr/> Using a RAW output for HDR capture is not 8444supported.<wbr/></p></span> 8445 </li> 8446 <li> 8447 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span> 8448 <span class="entry_type_enum_optional">[optional]</span> 8449 <span class="entry_type_enum_hidden">[hidden]</span> 8450 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 8451device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 8452under low light conditions.<wbr/></p> 8453<p>The camera device may be tuned to expose the images in a reduced 8454sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 8455if 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/> 8456the camera device auto-exposure routine tuning process may limit the actual 8457exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 8458exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 8459low light may be under-exposed when the sensor max exposure time (bounded by the 8460<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 8461ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 8462camera device auto-exposure routine to increase the sensitivity up to the max 8463sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 8464dark and the max exposure time is reached.<wbr/> The captured images may be noisier 8465compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 8466recommended that the application only use this scene mode when it is capable of 8467reducing the noise level of the captured images.<wbr/></p> 8468<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8469<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> 8470remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 8471 </li> 8472 </ul> 8473 8474 </td> <!-- entry_type --> 8475 8476 <td class="entry_description"> 8477 <p>Control for which scene mode is currently active.<wbr/></p> 8478 </td> 8479 8480 <td class="entry_units"> 8481 </td> 8482 8483 <td class="entry_range"> 8484 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 8485 </td> 8486 8487 <td class="entry_tags"> 8488 <ul class="entry_tags"> 8489 <li><a href="#tag_BC">BC</a></li> 8490 </ul> 8491 </td> 8492 8493 </tr> 8494 <tr class="entries_header"> 8495 <th class="th_details" colspan="5">Details</th> 8496 </tr> 8497 <tr class="entry_cont"> 8498 <td class="entry_details" colspan="5"> 8499 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 8500capture settings.<wbr/></p> 8501<p>This is the mode that that is active when 8502<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 8503disable <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> 8504while in use.<wbr/></p> 8505<p>The interpretation and implementation of these scene modes is left 8506to the implementor of the camera device.<wbr/> Their behavior will not be 8507consistent across all devices,<wbr/> and any given device may only implement 8508a subset of these modes.<wbr/></p> 8509 </td> 8510 </tr> 8511 8512 <tr class="entries_header"> 8513 <th class="th_details" colspan="5">HAL Implementation Details</th> 8514 </tr> 8515 <tr class="entry_cont"> 8516 <td class="entry_details" colspan="5"> 8517 <p>HAL implementations that include scene modes are expected to provide 8518the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8519<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 8520<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 8521<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/> 8522the HAL must list supported video size and fps range in 8523<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/> 85241280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming 8525mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture 8526requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/> 8527This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 8528<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 8529capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 8530 </td> 8531 </tr> 8532 8533 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8534 <!-- end of entry --> 8535 8536 8537 <tr class="entry" id="dynamic_android.control.videoStabilizationMode"> 8538 <td class="entry_name 8539 " rowspan="3"> 8540 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 8541 </td> 8542 <td class="entry_type"> 8543 <span class="entry_type_name entry_type_name_enum">byte</span> 8544 8545 <span class="entry_type_visibility"> [public]</span> 8546 8547 8548 <span class="entry_type_hwlevel">[legacy] </span> 8549 8550 8551 8552 <ul class="entry_type_enum"> 8553 <li> 8554 <span class="entry_type_enum_name">OFF</span> 8555 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 8556 </li> 8557 <li> 8558 <span class="entry_type_enum_name">ON</span> 8559 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 8560 </li> 8561 </ul> 8562 8563 </td> <!-- entry_type --> 8564 8565 <td class="entry_description"> 8566 <p>Whether video stabilization is 8567active.<wbr/></p> 8568 </td> 8569 8570 <td class="entry_units"> 8571 </td> 8572 8573 <td class="entry_range"> 8574 </td> 8575 8576 <td class="entry_tags"> 8577 <ul class="entry_tags"> 8578 <li><a href="#tag_BC">BC</a></li> 8579 </ul> 8580 </td> 8581 8582 </tr> 8583 <tr class="entries_header"> 8584 <th class="th_details" colspan="5">Details</th> 8585 </tr> 8586 <tr class="entry_cont"> 8587 <td class="entry_details" colspan="5"> 8588 <p>Video stabilization automatically warps images from 8589the camera in order to stabilize motion between consecutive frames.<wbr/></p> 8590<p>If enabled,<wbr/> video stabilization can modify the 8591<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 8592<p>Switching between different video stabilization modes may take several 8593frames to initialize,<wbr/> the camera device will report the current mode 8594in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 8595the video stabilization modes in the first several capture results may 8596still be "OFF",<wbr/> and it will become "ON" when the initialization is 8597done.<wbr/></p> 8598<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 8599stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 8600that an output targeting a MediaRecorder or MediaCodec will be stabilized if 8601the recording resolution is less than or equal to 1920 x 1080 (width less than 8602or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 8603frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult 8604<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return 8605OFF if the recording output is not stabilized,<wbr/> or if there are no output 8606Surface types that can be stabilized.<wbr/></p> 8607<p>If a camera device supports both this mode and OIS 8608(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 8609produce undesirable interaction,<wbr/> so it is recommended not to enable 8610both at the same time.<wbr/></p> 8611 </td> 8612 </tr> 8613 8614 8615 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8616 <!-- end of entry --> 8617 8618 8619 8620 <!-- end of kind --> 8621 </tbody> 8622 8623 <!-- end of section --> 8624 <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr> 8625 8626 8627 <tr><td colspan="6" class="kind">controls</td></tr> 8628 8629 <thead class="entries_header"> 8630 <tr> 8631 <th class="th_name">Property Name</th> 8632 <th class="th_type">Type</th> 8633 <th class="th_description">Description</th> 8634 <th class="th_units">Units</th> 8635 <th class="th_range">Range</th> 8636 <th class="th_tags">Tags</th> 8637 </tr> 8638 </thead> 8639 8640 <tbody> 8641 8642 8643 8644 8645 8646 8647 8648 8649 8650 8651 <tr class="entry" id="controls_android.demosaic.mode"> 8652 <td class="entry_name 8653 " rowspan="1"> 8654 android.<wbr/>demosaic.<wbr/>mode 8655 </td> 8656 <td class="entry_type"> 8657 <span class="entry_type_name entry_type_name_enum">byte</span> 8658 8659 <span class="entry_type_visibility"> [system]</span> 8660 8661 8662 8663 8664 8665 <ul class="entry_type_enum"> 8666 <li> 8667 <span class="entry_type_enum_name">FAST</span> 8668 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to 8669Bayer RAW output.<wbr/></p></span> 8670 </li> 8671 <li> 8672 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8673 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down 8674relative to raw output.<wbr/></p></span> 8675 </li> 8676 </ul> 8677 8678 </td> <!-- entry_type --> 8679 8680 <td class="entry_description"> 8681 <p>Controls the quality of the demosaicing 8682processing.<wbr/></p> 8683 </td> 8684 8685 <td class="entry_units"> 8686 </td> 8687 8688 <td class="entry_range"> 8689 </td> 8690 8691 <td class="entry_tags"> 8692 <ul class="entry_tags"> 8693 <li><a href="#tag_FUTURE">FUTURE</a></li> 8694 </ul> 8695 </td> 8696 8697 </tr> 8698 8699 8700 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8701 <!-- end of entry --> 8702 8703 8704 8705 <!-- end of kind --> 8706 </tbody> 8707 8708 <!-- end of section --> 8709 <tr><td colspan="6" id="section_edge" class="section">edge</td></tr> 8710 8711 8712 <tr><td colspan="6" class="kind">controls</td></tr> 8713 8714 <thead class="entries_header"> 8715 <tr> 8716 <th class="th_name">Property Name</th> 8717 <th class="th_type">Type</th> 8718 <th class="th_description">Description</th> 8719 <th class="th_units">Units</th> 8720 <th class="th_range">Range</th> 8721 <th class="th_tags">Tags</th> 8722 </tr> 8723 </thead> 8724 8725 <tbody> 8726 8727 8728 8729 8730 8731 8732 8733 8734 8735 8736 <tr class="entry" id="controls_android.edge.mode"> 8737 <td class="entry_name 8738 " rowspan="5"> 8739 android.<wbr/>edge.<wbr/>mode 8740 </td> 8741 <td class="entry_type"> 8742 <span class="entry_type_name entry_type_name_enum">byte</span> 8743 8744 <span class="entry_type_visibility"> [public]</span> 8745 8746 8747 <span class="entry_type_hwlevel">[full] </span> 8748 8749 8750 8751 <ul class="entry_type_enum"> 8752 <li> 8753 <span class="entry_type_enum_name">OFF</span> 8754 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 8755 </li> 8756 <li> 8757 <span class="entry_type_enum_name">FAST</span> 8758 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 8759relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 8760slow down frame rate relative to sensor.<wbr/></p></span> 8761 </li> 8762 <li> 8763 <span class="entry_type_enum_name">HIGH_QUALITY</span> 8764 <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> 8765 </li> 8766 <li> 8767 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 8768 <span class="entry_type_enum_optional">[optional]</span> 8769 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/> 8770based 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 8771edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement 8772applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that 8773frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it 8774is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 8775<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 8776with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 8777high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 8778produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 8779high-resolution buffers must not have edge enhancement applied to maximize efficiency of 8780preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 8781buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 8782reasonable preview quality.<wbr/></p> 8783<p>This mode is guaranteed to be supported by devices that support either the 8784YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 8785(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 8786be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 8787 </li> 8788 </ul> 8789 8790 </td> <!-- entry_type --> 8791 8792 <td class="entry_description"> 8793 <p>Operation mode for edge 8794enhancement.<wbr/></p> 8795 </td> 8796 8797 <td class="entry_units"> 8798 </td> 8799 8800 <td class="entry_range"> 8801 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 8802 </td> 8803 8804 <td class="entry_tags"> 8805 <ul class="entry_tags"> 8806 <li><a href="#tag_V1">V1</a></li> 8807 <li><a href="#tag_REPROC">REPROC</a></li> 8808 </ul> 8809 </td> 8810 8811 </tr> 8812 <tr class="entries_header"> 8813 <th class="th_details" colspan="5">Details</th> 8814 </tr> 8815 <tr class="entry_cont"> 8816 <td class="entry_details" colspan="5"> 8817 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 8818no enhancement will be applied by the camera device.<wbr/></p> 8819<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 8820will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 8821camera device will use the highest-quality enhancement algorithms,<wbr/> 8822even if it slows down capture rate.<wbr/> FAST means the camera device will 8823not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 8824edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 8825amount of enhancement applied.<wbr/></p> 8826<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 8827buffer of high-resolution images during preview and reprocess image(s) from that buffer 8828into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 8829edge enhancement to low-resolution streams (below maximum recording resolution) to 8830maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 8831since those will be reprocessed later if necessary.<wbr/></p> 8832<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 8833device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 8834The camera device may adjust its internal edge enhancement parameters for best 8835image 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> 8836 </td> 8837 </tr> 8838 8839 <tr class="entries_header"> 8840 <th class="th_details" colspan="5">HAL Implementation Details</th> 8841 </tr> 8842 <tr class="entry_cont"> 8843 <td class="entry_details" colspan="5"> 8844 <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 8845adjust the internal edge enhancement reduction parameters appropriately to get the best 8846quality images.<wbr/></p> 8847 </td> 8848 </tr> 8849 8850 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8851 <!-- end of entry --> 8852 8853 8854 <tr class="entry" id="controls_android.edge.strength"> 8855 <td class="entry_name 8856 " rowspan="1"> 8857 android.<wbr/>edge.<wbr/>strength 8858 </td> 8859 <td class="entry_type"> 8860 <span class="entry_type_name">byte</span> 8861 8862 <span class="entry_type_visibility"> [system]</span> 8863 8864 8865 8866 8867 8868 8869 </td> <!-- entry_type --> 8870 8871 <td class="entry_description"> 8872 <p>Control the amount of edge enhancement 8873applied to the images</p> 8874 </td> 8875 8876 <td class="entry_units"> 8877 1-10; 10 is maximum sharpening 8878 </td> 8879 8880 <td class="entry_range"> 8881 </td> 8882 8883 <td class="entry_tags"> 8884 <ul class="entry_tags"> 8885 <li><a href="#tag_FUTURE">FUTURE</a></li> 8886 </ul> 8887 </td> 8888 8889 </tr> 8890 8891 8892 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8893 <!-- end of entry --> 8894 8895 8896 8897 <!-- end of kind --> 8898 </tbody> 8899 <tr><td colspan="6" class="kind">static</td></tr> 8900 8901 <thead class="entries_header"> 8902 <tr> 8903 <th class="th_name">Property Name</th> 8904 <th class="th_type">Type</th> 8905 <th class="th_description">Description</th> 8906 <th class="th_units">Units</th> 8907 <th class="th_range">Range</th> 8908 <th class="th_tags">Tags</th> 8909 </tr> 8910 </thead> 8911 8912 <tbody> 8913 8914 8915 8916 8917 8918 8919 8920 8921 8922 8923 <tr class="entry" id="static_android.edge.availableEdgeModes"> 8924 <td class="entry_name 8925 " rowspan="5"> 8926 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes 8927 </td> 8928 <td class="entry_type"> 8929 <span class="entry_type_name">byte</span> 8930 <span class="entry_type_container">x</span> 8931 8932 <span class="entry_type_array"> 8933 n 8934 </span> 8935 <span class="entry_type_visibility"> [public as enumList]</span> 8936 8937 8938 <span class="entry_type_hwlevel">[full] </span> 8939 8940 8941 <div class="entry_type_notes">list of enums</div> 8942 8943 8944 </td> <!-- entry_type --> 8945 8946 <td class="entry_description"> 8947 <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 8948device.<wbr/></p> 8949 </td> 8950 8951 <td class="entry_units"> 8952 </td> 8953 8954 <td class="entry_range"> 8955 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p> 8956 </td> 8957 8958 <td class="entry_tags"> 8959 <ul class="entry_tags"> 8960 <li><a href="#tag_V1">V1</a></li> 8961 <li><a href="#tag_REPROC">REPROC</a></li> 8962 </ul> 8963 </td> 8964 8965 </tr> 8966 <tr class="entries_header"> 8967 <th class="th_details" colspan="5">Details</th> 8968 </tr> 8969 <tr class="entry_cont"> 8970 <td class="entry_details" colspan="5"> 8971 <p>Full-capability camera devices must always support OFF; camera devices that support 8972YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will 8973list FAST.<wbr/></p> 8974 </td> 8975 </tr> 8976 8977 <tr class="entries_header"> 8978 <th class="th_details" colspan="5">HAL Implementation Details</th> 8979 </tr> 8980 <tr class="entry_cont"> 8981 <td class="entry_details" colspan="5"> 8982 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available 8983on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 8984That is,<wbr/> if the highest quality implementation on the camera device does not slow down 8985capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 8986 </td> 8987 </tr> 8988 8989 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8990 <!-- end of entry --> 8991 8992 8993 8994 <!-- end of kind --> 8995 </tbody> 8996 <tr><td colspan="6" class="kind">dynamic</td></tr> 8997 8998 <thead class="entries_header"> 8999 <tr> 9000 <th class="th_name">Property Name</th> 9001 <th class="th_type">Type</th> 9002 <th class="th_description">Description</th> 9003 <th class="th_units">Units</th> 9004 <th class="th_range">Range</th> 9005 <th class="th_tags">Tags</th> 9006 </tr> 9007 </thead> 9008 9009 <tbody> 9010 9011 9012 9013 9014 9015 9016 9017 9018 9019 9020 <tr class="entry" id="dynamic_android.edge.mode"> 9021 <td class="entry_name 9022 " rowspan="5"> 9023 android.<wbr/>edge.<wbr/>mode 9024 </td> 9025 <td class="entry_type"> 9026 <span class="entry_type_name entry_type_name_enum">byte</span> 9027 9028 <span class="entry_type_visibility"> [public]</span> 9029 9030 9031 <span class="entry_type_hwlevel">[full] </span> 9032 9033 9034 9035 <ul class="entry_type_enum"> 9036 <li> 9037 <span class="entry_type_enum_name">OFF</span> 9038 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 9039 </li> 9040 <li> 9041 <span class="entry_type_enum_name">FAST</span> 9042 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 9043relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 9044slow down frame rate relative to sensor.<wbr/></p></span> 9045 </li> 9046 <li> 9047 <span class="entry_type_enum_name">HIGH_QUALITY</span> 9048 <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> 9049 </li> 9050 <li> 9051 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 9052 <span class="entry_type_enum_optional">[optional]</span> 9053 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/> 9054based 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 9055edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement 9056applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that 9057frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it 9058is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 9059<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 9060with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 9061high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 9062produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 9063high-resolution buffers must not have edge enhancement applied to maximize efficiency of 9064preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 9065buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 9066reasonable preview quality.<wbr/></p> 9067<p>This mode is guaranteed to be supported by devices that support either the 9068YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 9069(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 9070be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 9071 </li> 9072 </ul> 9073 9074 </td> <!-- entry_type --> 9075 9076 <td class="entry_description"> 9077 <p>Operation mode for edge 9078enhancement.<wbr/></p> 9079 </td> 9080 9081 <td class="entry_units"> 9082 </td> 9083 9084 <td class="entry_range"> 9085 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 9086 </td> 9087 9088 <td class="entry_tags"> 9089 <ul class="entry_tags"> 9090 <li><a href="#tag_V1">V1</a></li> 9091 <li><a href="#tag_REPROC">REPROC</a></li> 9092 </ul> 9093 </td> 9094 9095 </tr> 9096 <tr class="entries_header"> 9097 <th class="th_details" colspan="5">Details</th> 9098 </tr> 9099 <tr class="entry_cont"> 9100 <td class="entry_details" colspan="5"> 9101 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 9102no enhancement will be applied by the camera device.<wbr/></p> 9103<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 9104will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 9105camera device will use the highest-quality enhancement algorithms,<wbr/> 9106even if it slows down capture rate.<wbr/> FAST means the camera device will 9107not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 9108edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 9109amount of enhancement applied.<wbr/></p> 9110<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 9111buffer of high-resolution images during preview and reprocess image(s) from that buffer 9112into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 9113edge enhancement to low-resolution streams (below maximum recording resolution) to 9114maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 9115since those will be reprocessed later if necessary.<wbr/></p> 9116<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 9117device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 9118The camera device may adjust its internal edge enhancement parameters for best 9119image 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> 9120 </td> 9121 </tr> 9122 9123 <tr class="entries_header"> 9124 <th class="th_details" colspan="5">HAL Implementation Details</th> 9125 </tr> 9126 <tr class="entry_cont"> 9127 <td class="entry_details" colspan="5"> 9128 <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 9129adjust the internal edge enhancement reduction parameters appropriately to get the best 9130quality images.<wbr/></p> 9131 </td> 9132 </tr> 9133 9134 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9135 <!-- end of entry --> 9136 9137 9138 9139 <!-- end of kind --> 9140 </tbody> 9141 9142 <!-- end of section --> 9143 <tr><td colspan="6" id="section_flash" class="section">flash</td></tr> 9144 9145 9146 <tr><td colspan="6" class="kind">controls</td></tr> 9147 9148 <thead class="entries_header"> 9149 <tr> 9150 <th class="th_name">Property Name</th> 9151 <th class="th_type">Type</th> 9152 <th class="th_description">Description</th> 9153 <th class="th_units">Units</th> 9154 <th class="th_range">Range</th> 9155 <th class="th_tags">Tags</th> 9156 </tr> 9157 </thead> 9158 9159 <tbody> 9160 9161 9162 9163 9164 9165 9166 9167 9168 9169 9170 <tr class="entry" id="controls_android.flash.firingPower"> 9171 <td class="entry_name 9172 " rowspan="3"> 9173 android.<wbr/>flash.<wbr/>firing<wbr/>Power 9174 </td> 9175 <td class="entry_type"> 9176 <span class="entry_type_name">byte</span> 9177 9178 <span class="entry_type_visibility"> [system]</span> 9179 9180 9181 9182 9183 9184 9185 </td> <!-- entry_type --> 9186 9187 <td class="entry_description"> 9188 <p>Power for flash firing/<wbr/>torch</p> 9189 </td> 9190 9191 <td class="entry_units"> 9192 10 is max power; 0 is no flash.<wbr/> Linear 9193 </td> 9194 9195 <td class="entry_range"> 9196 <p>0 - 10</p> 9197 </td> 9198 9199 <td class="entry_tags"> 9200 <ul class="entry_tags"> 9201 <li><a href="#tag_FUTURE">FUTURE</a></li> 9202 </ul> 9203 </td> 9204 9205 </tr> 9206 <tr class="entries_header"> 9207 <th class="th_details" colspan="5">Details</th> 9208 </tr> 9209 <tr class="entry_cont"> 9210 <td class="entry_details" colspan="5"> 9211 <p>Power for snapshot may use a different scale than 9212for torch mode.<wbr/> Only one entry for torch mode will be 9213used</p> 9214 </td> 9215 </tr> 9216 9217 9218 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9219 <!-- end of entry --> 9220 9221 9222 <tr class="entry" id="controls_android.flash.firingTime"> 9223 <td class="entry_name 9224 " rowspan="3"> 9225 android.<wbr/>flash.<wbr/>firing<wbr/>Time 9226 </td> 9227 <td class="entry_type"> 9228 <span class="entry_type_name">int64</span> 9229 9230 <span class="entry_type_visibility"> [system]</span> 9231 9232 9233 9234 9235 9236 9237 </td> <!-- entry_type --> 9238 9239 <td class="entry_description"> 9240 <p>Firing time of flash relative to start of 9241exposure</p> 9242 </td> 9243 9244 <td class="entry_units"> 9245 nanoseconds 9246 </td> 9247 9248 <td class="entry_range"> 9249 <p>0-(exposure time-flash duration)</p> 9250 </td> 9251 9252 <td class="entry_tags"> 9253 <ul class="entry_tags"> 9254 <li><a href="#tag_FUTURE">FUTURE</a></li> 9255 </ul> 9256 </td> 9257 9258 </tr> 9259 <tr class="entries_header"> 9260 <th class="th_details" colspan="5">Details</th> 9261 </tr> 9262 <tr class="entry_cont"> 9263 <td class="entry_details" colspan="5"> 9264 <p>Clamped to (0,<wbr/> exposure time - flash 9265duration).<wbr/></p> 9266 </td> 9267 </tr> 9268 9269 9270 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9271 <!-- end of entry --> 9272 9273 9274 <tr class="entry" id="controls_android.flash.mode"> 9275 <td class="entry_name 9276 " rowspan="3"> 9277 android.<wbr/>flash.<wbr/>mode 9278 </td> 9279 <td class="entry_type"> 9280 <span class="entry_type_name entry_type_name_enum">byte</span> 9281 9282 <span class="entry_type_visibility"> [public]</span> 9283 9284 9285 <span class="entry_type_hwlevel">[legacy] </span> 9286 9287 9288 9289 <ul class="entry_type_enum"> 9290 <li> 9291 <span class="entry_type_enum_name">OFF</span> 9292 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 9293 </li> 9294 <li> 9295 <span class="entry_type_enum_name">SINGLE</span> 9296 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 9297for this capture.<wbr/></p></span> 9298 </li> 9299 <li> 9300 <span class="entry_type_enum_name">TORCH</span> 9301 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 9302 </li> 9303 </ul> 9304 9305 </td> <!-- entry_type --> 9306 9307 <td class="entry_description"> 9308 <p>The desired mode for for the camera device's flash control.<wbr/></p> 9309 </td> 9310 9311 <td class="entry_units"> 9312 </td> 9313 9314 <td class="entry_range"> 9315 </td> 9316 9317 <td class="entry_tags"> 9318 <ul class="entry_tags"> 9319 <li><a href="#tag_BC">BC</a></li> 9320 </ul> 9321 </td> 9322 9323 </tr> 9324 <tr class="entries_header"> 9325 <th class="th_details" colspan="5">Details</th> 9326 </tr> 9327 <tr class="entry_cont"> 9328 <td class="entry_details" colspan="5"> 9329 <p>This control is only effective when flash unit is available 9330(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 9331<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/> 9332Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 9333ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 9334<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 9335<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 9336device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 9337control should be used along with auto-exposure (AE) precapture metering sequence 9338(<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> 9339<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 9340for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 9341<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> 9342 </td> 9343 </tr> 9344 9345 9346 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9347 <!-- end of entry --> 9348 9349 9350 9351 <!-- end of kind --> 9352 </tbody> 9353 <tr><td colspan="6" class="kind">static</td></tr> 9354 9355 <thead class="entries_header"> 9356 <tr> 9357 <th class="th_name">Property Name</th> 9358 <th class="th_type">Type</th> 9359 <th class="th_description">Description</th> 9360 <th class="th_units">Units</th> 9361 <th class="th_range">Range</th> 9362 <th class="th_tags">Tags</th> 9363 </tr> 9364 </thead> 9365 9366 <tbody> 9367 9368 9369 9370 9371 9372 9373 9374 9375 9376 9377 9378 9379 <tr class="entry" id="static_android.flash.info.available"> 9380 <td class="entry_name 9381 " rowspan="3"> 9382 android.<wbr/>flash.<wbr/>info.<wbr/>available 9383 </td> 9384 <td class="entry_type"> 9385 <span class="entry_type_name entry_type_name_enum">byte</span> 9386 9387 <span class="entry_type_visibility"> [public as boolean]</span> 9388 9389 9390 <span class="entry_type_hwlevel">[legacy] </span> 9391 9392 9393 9394 <ul class="entry_type_enum"> 9395 <li> 9396 <span class="entry_type_enum_name">FALSE</span> 9397 </li> 9398 <li> 9399 <span class="entry_type_enum_name">TRUE</span> 9400 </li> 9401 </ul> 9402 9403 </td> <!-- entry_type --> 9404 9405 <td class="entry_description"> 9406 <p>Whether this camera device has a 9407flash unit.<wbr/></p> 9408 </td> 9409 9410 <td class="entry_units"> 9411 </td> 9412 9413 <td class="entry_range"> 9414 </td> 9415 9416 <td class="entry_tags"> 9417 <ul class="entry_tags"> 9418 <li><a href="#tag_BC">BC</a></li> 9419 </ul> 9420 </td> 9421 9422 </tr> 9423 <tr class="entries_header"> 9424 <th class="th_details" colspan="5">Details</th> 9425 </tr> 9426 <tr class="entry_cont"> 9427 <td class="entry_details" colspan="5"> 9428 <p>Will be <code>false</code> if no flash is available.<wbr/></p> 9429<p>If there is no flash unit,<wbr/> none of the flash controls do 9430anything.<wbr/></p> 9431 </td> 9432 </tr> 9433 9434 9435 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9436 <!-- end of entry --> 9437 9438 9439 <tr class="entry" id="static_android.flash.info.chargeDuration"> 9440 <td class="entry_name 9441 " rowspan="3"> 9442 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration 9443 </td> 9444 <td class="entry_type"> 9445 <span class="entry_type_name">int64</span> 9446 9447 <span class="entry_type_visibility"> [system]</span> 9448 9449 9450 9451 9452 9453 9454 </td> <!-- entry_type --> 9455 9456 <td class="entry_description"> 9457 <p>Time taken before flash can fire 9458again</p> 9459 </td> 9460 9461 <td class="entry_units"> 9462 nanoseconds 9463 </td> 9464 9465 <td class="entry_range"> 9466 <p>0-1e9</p> 9467 </td> 9468 9469 <td class="entry_tags"> 9470 <ul class="entry_tags"> 9471 <li><a href="#tag_FUTURE">FUTURE</a></li> 9472 </ul> 9473 </td> 9474 9475 </tr> 9476 <tr class="entries_header"> 9477 <th class="th_details" colspan="5">Details</th> 9478 </tr> 9479 <tr class="entry_cont"> 9480 <td class="entry_details" colspan="5"> 9481 <p>1 second too long/<wbr/>too short for recharge? Should 9482this be power-dependent?</p> 9483 </td> 9484 </tr> 9485 9486 9487 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9488 <!-- end of entry --> 9489 9490 9491 9492 9493 9494 <tr class="entry" id="static_android.flash.colorTemperature"> 9495 <td class="entry_name 9496 " rowspan="1"> 9497 android.<wbr/>flash.<wbr/>color<wbr/>Temperature 9498 </td> 9499 <td class="entry_type"> 9500 <span class="entry_type_name">byte</span> 9501 9502 <span class="entry_type_visibility"> [system]</span> 9503 9504 9505 9506 9507 9508 9509 </td> <!-- entry_type --> 9510 9511 <td class="entry_description"> 9512 <p>The x,<wbr/>y whitepoint of the 9513flash</p> 9514 </td> 9515 9516 <td class="entry_units"> 9517 pair of floats 9518 </td> 9519 9520 <td class="entry_range"> 9521 <p>0-1 for both</p> 9522 </td> 9523 9524 <td class="entry_tags"> 9525 <ul class="entry_tags"> 9526 <li><a href="#tag_FUTURE">FUTURE</a></li> 9527 </ul> 9528 </td> 9529 9530 </tr> 9531 9532 9533 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9534 <!-- end of entry --> 9535 9536 9537 <tr class="entry" id="static_android.flash.maxEnergy"> 9538 <td class="entry_name 9539 " rowspan="1"> 9540 android.<wbr/>flash.<wbr/>max<wbr/>Energy 9541 </td> 9542 <td class="entry_type"> 9543 <span class="entry_type_name">byte</span> 9544 9545 <span class="entry_type_visibility"> [system]</span> 9546 9547 9548 9549 9550 9551 9552 </td> <!-- entry_type --> 9553 9554 <td class="entry_description"> 9555 <p>Max energy output of the flash for a full 9556power single flash</p> 9557 </td> 9558 9559 <td class="entry_units"> 9560 lumen-seconds 9561 </td> 9562 9563 <td class="entry_range"> 9564 <p>>= 0</p> 9565 </td> 9566 9567 <td class="entry_tags"> 9568 <ul class="entry_tags"> 9569 <li><a href="#tag_FUTURE">FUTURE</a></li> 9570 </ul> 9571 </td> 9572 9573 </tr> 9574 9575 9576 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9577 <!-- end of entry --> 9578 9579 9580 9581 <!-- end of kind --> 9582 </tbody> 9583 <tr><td colspan="6" class="kind">dynamic</td></tr> 9584 9585 <thead class="entries_header"> 9586 <tr> 9587 <th class="th_name">Property Name</th> 9588 <th class="th_type">Type</th> 9589 <th class="th_description">Description</th> 9590 <th class="th_units">Units</th> 9591 <th class="th_range">Range</th> 9592 <th class="th_tags">Tags</th> 9593 </tr> 9594 </thead> 9595 9596 <tbody> 9597 9598 9599 9600 9601 9602 9603 9604 9605 9606 9607 <tr class="entry" id="dynamic_android.flash.firingPower"> 9608 <td class="entry_name 9609 " rowspan="3"> 9610 android.<wbr/>flash.<wbr/>firing<wbr/>Power 9611 </td> 9612 <td class="entry_type"> 9613 <span class="entry_type_name">byte</span> 9614 9615 <span class="entry_type_visibility"> [system]</span> 9616 9617 9618 9619 9620 9621 9622 </td> <!-- entry_type --> 9623 9624 <td class="entry_description"> 9625 <p>Power for flash firing/<wbr/>torch</p> 9626 </td> 9627 9628 <td class="entry_units"> 9629 10 is max power; 0 is no flash.<wbr/> Linear 9630 </td> 9631 9632 <td class="entry_range"> 9633 <p>0 - 10</p> 9634 </td> 9635 9636 <td class="entry_tags"> 9637 <ul class="entry_tags"> 9638 <li><a href="#tag_FUTURE">FUTURE</a></li> 9639 </ul> 9640 </td> 9641 9642 </tr> 9643 <tr class="entries_header"> 9644 <th class="th_details" colspan="5">Details</th> 9645 </tr> 9646 <tr class="entry_cont"> 9647 <td class="entry_details" colspan="5"> 9648 <p>Power for snapshot may use a different scale than 9649for torch mode.<wbr/> Only one entry for torch mode will be 9650used</p> 9651 </td> 9652 </tr> 9653 9654 9655 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9656 <!-- end of entry --> 9657 9658 9659 <tr class="entry" id="dynamic_android.flash.firingTime"> 9660 <td class="entry_name 9661 " rowspan="3"> 9662 android.<wbr/>flash.<wbr/>firing<wbr/>Time 9663 </td> 9664 <td class="entry_type"> 9665 <span class="entry_type_name">int64</span> 9666 9667 <span class="entry_type_visibility"> [system]</span> 9668 9669 9670 9671 9672 9673 9674 </td> <!-- entry_type --> 9675 9676 <td class="entry_description"> 9677 <p>Firing time of flash relative to start of 9678exposure</p> 9679 </td> 9680 9681 <td class="entry_units"> 9682 nanoseconds 9683 </td> 9684 9685 <td class="entry_range"> 9686 <p>0-(exposure time-flash duration)</p> 9687 </td> 9688 9689 <td class="entry_tags"> 9690 <ul class="entry_tags"> 9691 <li><a href="#tag_FUTURE">FUTURE</a></li> 9692 </ul> 9693 </td> 9694 9695 </tr> 9696 <tr class="entries_header"> 9697 <th class="th_details" colspan="5">Details</th> 9698 </tr> 9699 <tr class="entry_cont"> 9700 <td class="entry_details" colspan="5"> 9701 <p>Clamped to (0,<wbr/> exposure time - flash 9702duration).<wbr/></p> 9703 </td> 9704 </tr> 9705 9706 9707 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9708 <!-- end of entry --> 9709 9710 9711 <tr class="entry" id="dynamic_android.flash.mode"> 9712 <td class="entry_name 9713 " rowspan="3"> 9714 android.<wbr/>flash.<wbr/>mode 9715 </td> 9716 <td class="entry_type"> 9717 <span class="entry_type_name entry_type_name_enum">byte</span> 9718 9719 <span class="entry_type_visibility"> [public]</span> 9720 9721 9722 <span class="entry_type_hwlevel">[legacy] </span> 9723 9724 9725 9726 <ul class="entry_type_enum"> 9727 <li> 9728 <span class="entry_type_enum_name">OFF</span> 9729 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 9730 </li> 9731 <li> 9732 <span class="entry_type_enum_name">SINGLE</span> 9733 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 9734for this capture.<wbr/></p></span> 9735 </li> 9736 <li> 9737 <span class="entry_type_enum_name">TORCH</span> 9738 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 9739 </li> 9740 </ul> 9741 9742 </td> <!-- entry_type --> 9743 9744 <td class="entry_description"> 9745 <p>The desired mode for for the camera device's flash control.<wbr/></p> 9746 </td> 9747 9748 <td class="entry_units"> 9749 </td> 9750 9751 <td class="entry_range"> 9752 </td> 9753 9754 <td class="entry_tags"> 9755 <ul class="entry_tags"> 9756 <li><a href="#tag_BC">BC</a></li> 9757 </ul> 9758 </td> 9759 9760 </tr> 9761 <tr class="entries_header"> 9762 <th class="th_details" colspan="5">Details</th> 9763 </tr> 9764 <tr class="entry_cont"> 9765 <td class="entry_details" colspan="5"> 9766 <p>This control is only effective when flash unit is available 9767(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 9768<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/> 9769Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 9770ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 9771<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 9772<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 9773device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 9774control should be used along with auto-exposure (AE) precapture metering sequence 9775(<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> 9776<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 9777for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 9778<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> 9779 </td> 9780 </tr> 9781 9782 9783 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9784 <!-- end of entry --> 9785 9786 9787 <tr class="entry" id="dynamic_android.flash.state"> 9788 <td class="entry_name 9789 " rowspan="3"> 9790 android.<wbr/>flash.<wbr/>state 9791 </td> 9792 <td class="entry_type"> 9793 <span class="entry_type_name entry_type_name_enum">byte</span> 9794 9795 <span class="entry_type_visibility"> [public]</span> 9796 9797 9798 <span class="entry_type_hwlevel">[limited] </span> 9799 9800 9801 9802 <ul class="entry_type_enum"> 9803 <li> 9804 <span class="entry_type_enum_name">UNAVAILABLE</span> 9805 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span> 9806 </li> 9807 <li> 9808 <span class="entry_type_enum_name">CHARGING</span> 9809 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span> 9810 </li> 9811 <li> 9812 <span class="entry_type_enum_name">READY</span> 9813 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span> 9814 </li> 9815 <li> 9816 <span class="entry_type_enum_name">FIRED</span> 9817 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span> 9818 </li> 9819 <li> 9820 <span class="entry_type_enum_name">PARTIAL</span> 9821 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p> 9822<p>This is usually due to the next or previous frame having 9823the flash fire,<wbr/> and the flash spilling into this capture 9824due to hardware limitations.<wbr/></p></span> 9825 </li> 9826 </ul> 9827 9828 </td> <!-- entry_type --> 9829 9830 <td class="entry_description"> 9831 <p>Current state of the flash 9832unit.<wbr/></p> 9833 </td> 9834 9835 <td class="entry_units"> 9836 </td> 9837 9838 <td class="entry_range"> 9839 </td> 9840 9841 <td class="entry_tags"> 9842 </td> 9843 9844 </tr> 9845 <tr class="entries_header"> 9846 <th class="th_details" colspan="5">Details</th> 9847 </tr> 9848 <tr class="entry_cont"> 9849 <td class="entry_details" colspan="5"> 9850 <p>When the camera device doesn't have flash unit 9851(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/> 9852Other states indicate the current flash status.<wbr/></p> 9853<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p> 9854<ul> 9855<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li> 9856<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH 9857 will always return FIRED.<wbr/></li> 9858<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH 9859 will always return FIRED.<wbr/></li> 9860</ul> 9861<p>In all other conditions the state will not be available on 9862LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p> 9863 </td> 9864 </tr> 9865 9866 9867 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9868 <!-- end of entry --> 9869 9870 9871 9872 <!-- end of kind --> 9873 </tbody> 9874 9875 <!-- end of section --> 9876 <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr> 9877 9878 9879 <tr><td colspan="6" class="kind">controls</td></tr> 9880 9881 <thead class="entries_header"> 9882 <tr> 9883 <th class="th_name">Property Name</th> 9884 <th class="th_type">Type</th> 9885 <th class="th_description">Description</th> 9886 <th class="th_units">Units</th> 9887 <th class="th_range">Range</th> 9888 <th class="th_tags">Tags</th> 9889 </tr> 9890 </thead> 9891 9892 <tbody> 9893 9894 9895 9896 9897 9898 9899 9900 9901 9902 9903 <tr class="entry" id="controls_android.hotPixel.mode"> 9904 <td class="entry_name 9905 " rowspan="3"> 9906 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 9907 </td> 9908 <td class="entry_type"> 9909 <span class="entry_type_name entry_type_name_enum">byte</span> 9910 9911 <span class="entry_type_visibility"> [public]</span> 9912 9913 9914 9915 9916 9917 <ul class="entry_type_enum"> 9918 <li> 9919 <span class="entry_type_enum_name">OFF</span> 9920 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 9921<p>The frame rate must not be reduced relative to sensor raw output 9922for this option.<wbr/></p> 9923<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> 9924 </li> 9925 <li> 9926 <span class="entry_type_enum_name">FAST</span> 9927 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 9928rate relative to sensor raw output.<wbr/></p> 9929<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> 9930 </li> 9931 <li> 9932 <span class="entry_type_enum_name">HIGH_QUALITY</span> 9933 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 9934of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 9935<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> 9936 </li> 9937 </ul> 9938 9939 </td> <!-- entry_type --> 9940 9941 <td class="entry_description"> 9942 <p>Operational mode for hot pixel correction.<wbr/></p> 9943 </td> 9944 9945 <td class="entry_units"> 9946 </td> 9947 9948 <td class="entry_range"> 9949 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 9950 </td> 9951 9952 <td class="entry_tags"> 9953 <ul class="entry_tags"> 9954 <li><a href="#tag_V1">V1</a></li> 9955 <li><a href="#tag_RAW">RAW</a></li> 9956 </ul> 9957 </td> 9958 9959 </tr> 9960 <tr class="entries_header"> 9961 <th class="th_details" colspan="5">Details</th> 9962 </tr> 9963 <tr class="entry_cont"> 9964 <td class="entry_details" colspan="5"> 9965 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 9966that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 9967are stuck at an arbitrary value or are oversensitive).<wbr/></p> 9968 </td> 9969 </tr> 9970 9971 9972 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9973 <!-- end of entry --> 9974 9975 9976 9977 <!-- end of kind --> 9978 </tbody> 9979 <tr><td colspan="6" class="kind">static</td></tr> 9980 9981 <thead class="entries_header"> 9982 <tr> 9983 <th class="th_name">Property Name</th> 9984 <th class="th_type">Type</th> 9985 <th class="th_description">Description</th> 9986 <th class="th_units">Units</th> 9987 <th class="th_range">Range</th> 9988 <th class="th_tags">Tags</th> 9989 </tr> 9990 </thead> 9991 9992 <tbody> 9993 9994 9995 9996 9997 9998 9999 10000 10001 10002 10003 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes"> 10004 <td class="entry_name 10005 " rowspan="5"> 10006 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes 10007 </td> 10008 <td class="entry_type"> 10009 <span class="entry_type_name">byte</span> 10010 <span class="entry_type_container">x</span> 10011 10012 <span class="entry_type_array"> 10013 n 10014 </span> 10015 <span class="entry_type_visibility"> [public as enumList]</span> 10016 10017 10018 10019 10020 <div class="entry_type_notes">list of enums</div> 10021 10022 10023 </td> <!-- entry_type --> 10024 10025 <td class="entry_description"> 10026 <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 10027camera device.<wbr/></p> 10028 </td> 10029 10030 <td class="entry_units"> 10031 </td> 10032 10033 <td class="entry_range"> 10034 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p> 10035 </td> 10036 10037 <td class="entry_tags"> 10038 <ul class="entry_tags"> 10039 <li><a href="#tag_V1">V1</a></li> 10040 <li><a href="#tag_RAW">RAW</a></li> 10041 </ul> 10042 </td> 10043 10044 </tr> 10045 <tr class="entries_header"> 10046 <th class="th_details" colspan="5">Details</th> 10047 </tr> 10048 <tr class="entry_cont"> 10049 <td class="entry_details" colspan="5"> 10050 <p>FULL mode camera devices will always support FAST.<wbr/></p> 10051 </td> 10052 </tr> 10053 10054 <tr class="entries_header"> 10055 <th class="th_details" colspan="5">HAL Implementation Details</th> 10056 </tr> 10057 <tr class="entry_cont"> 10058 <td class="entry_details" colspan="5"> 10059 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot 10060pixels than actual pixels on the camera sensor.<wbr/> 10061HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available 10062on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 10063That is,<wbr/> if the highest quality implementation on the camera device does not slow down 10064capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 10065 </td> 10066 </tr> 10067 10068 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10069 <!-- end of entry --> 10070 10071 10072 10073 <!-- end of kind --> 10074 </tbody> 10075 <tr><td colspan="6" class="kind">dynamic</td></tr> 10076 10077 <thead class="entries_header"> 10078 <tr> 10079 <th class="th_name">Property Name</th> 10080 <th class="th_type">Type</th> 10081 <th class="th_description">Description</th> 10082 <th class="th_units">Units</th> 10083 <th class="th_range">Range</th> 10084 <th class="th_tags">Tags</th> 10085 </tr> 10086 </thead> 10087 10088 <tbody> 10089 10090 10091 10092 10093 10094 10095 10096 10097 10098 10099 <tr class="entry" id="dynamic_android.hotPixel.mode"> 10100 <td class="entry_name 10101 " rowspan="3"> 10102 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 10103 </td> 10104 <td class="entry_type"> 10105 <span class="entry_type_name entry_type_name_enum">byte</span> 10106 10107 <span class="entry_type_visibility"> [public]</span> 10108 10109 10110 10111 10112 10113 <ul class="entry_type_enum"> 10114 <li> 10115 <span class="entry_type_enum_name">OFF</span> 10116 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 10117<p>The frame rate must not be reduced relative to sensor raw output 10118for this option.<wbr/></p> 10119<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> 10120 </li> 10121 <li> 10122 <span class="entry_type_enum_name">FAST</span> 10123 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 10124rate relative to sensor raw output.<wbr/></p> 10125<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> 10126 </li> 10127 <li> 10128 <span class="entry_type_enum_name">HIGH_QUALITY</span> 10129 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 10130of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 10131<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> 10132 </li> 10133 </ul> 10134 10135 </td> <!-- entry_type --> 10136 10137 <td class="entry_description"> 10138 <p>Operational mode for hot pixel correction.<wbr/></p> 10139 </td> 10140 10141 <td class="entry_units"> 10142 </td> 10143 10144 <td class="entry_range"> 10145 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 10146 </td> 10147 10148 <td class="entry_tags"> 10149 <ul class="entry_tags"> 10150 <li><a href="#tag_V1">V1</a></li> 10151 <li><a href="#tag_RAW">RAW</a></li> 10152 </ul> 10153 </td> 10154 10155 </tr> 10156 <tr class="entries_header"> 10157 <th class="th_details" colspan="5">Details</th> 10158 </tr> 10159 <tr class="entry_cont"> 10160 <td class="entry_details" colspan="5"> 10161 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 10162that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 10163are stuck at an arbitrary value or are oversensitive).<wbr/></p> 10164 </td> 10165 </tr> 10166 10167 10168 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10169 <!-- end of entry --> 10170 10171 10172 10173 <!-- end of kind --> 10174 </tbody> 10175 10176 <!-- end of section --> 10177 <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr> 10178 10179 10180 <tr><td colspan="6" class="kind">controls</td></tr> 10181 10182 <thead class="entries_header"> 10183 <tr> 10184 <th class="th_name">Property Name</th> 10185 <th class="th_type">Type</th> 10186 <th class="th_description">Description</th> 10187 <th class="th_units">Units</th> 10188 <th class="th_range">Range</th> 10189 <th class="th_tags">Tags</th> 10190 </tr> 10191 </thead> 10192 10193 <tbody> 10194 10195 10196 10197 10198 10199 10200 10201 10202 10203 10204 <tr class="entry" id="controls_android.jpeg.gpsLocation"> 10205 <td class="entry_name 10206 " rowspan="3"> 10207 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 10208 </td> 10209 <td class="entry_type"> 10210 <span class="entry_type_name">byte</span> 10211 10212 <span class="entry_type_visibility"> [public as location]</span> 10213 10214 <span class="entry_type_synthetic">[synthetic] </span> 10215 10216 <span class="entry_type_hwlevel">[legacy] </span> 10217 10218 10219 10220 10221 </td> <!-- entry_type --> 10222 10223 <td class="entry_description"> 10224 <p>A location object to use when generating image GPS metadata.<wbr/></p> 10225 </td> 10226 10227 <td class="entry_units"> 10228 </td> 10229 10230 <td class="entry_range"> 10231 </td> 10232 10233 <td class="entry_tags"> 10234 </td> 10235 10236 </tr> 10237 <tr class="entries_header"> 10238 <th class="th_details" colspan="5">Details</th> 10239 </tr> 10240 <tr class="entry_cont"> 10241 <td class="entry_details" colspan="5"> 10242 <p>Setting a location object in a request will include the GPS coordinates of the location 10243into any JPEG images captured based on the request.<wbr/> These coordinates can then be 10244viewed by anyone who receives the JPEG image.<wbr/></p> 10245 </td> 10246 </tr> 10247 10248 10249 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10250 <!-- end of entry --> 10251 10252 10253 <tr class="entry" id="controls_android.jpeg.gpsCoordinates"> 10254 <td class="entry_name 10255 " rowspan="1"> 10256 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 10257 </td> 10258 <td class="entry_type"> 10259 <span class="entry_type_name">double</span> 10260 <span class="entry_type_container">x</span> 10261 10262 <span class="entry_type_array"> 10263 3 10264 </span> 10265 <span class="entry_type_visibility"> [hidden]</span> 10266 10267 10268 <span class="entry_type_hwlevel">[legacy] </span> 10269 10270 10271 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 10272 10273 10274 </td> <!-- entry_type --> 10275 10276 <td class="entry_description"> 10277 <p>GPS coordinates to include in output JPEG 10278EXIF.<wbr/></p> 10279 </td> 10280 10281 <td class="entry_units"> 10282 </td> 10283 10284 <td class="entry_range"> 10285 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 10286 </td> 10287 10288 <td class="entry_tags"> 10289 <ul class="entry_tags"> 10290 <li><a href="#tag_BC">BC</a></li> 10291 </ul> 10292 </td> 10293 10294 </tr> 10295 10296 10297 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10298 <!-- end of entry --> 10299 10300 10301 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod"> 10302 <td class="entry_name 10303 " rowspan="1"> 10304 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 10305 </td> 10306 <td class="entry_type"> 10307 <span class="entry_type_name">byte</span> 10308 10309 <span class="entry_type_visibility"> [hidden as string]</span> 10310 10311 10312 <span class="entry_type_hwlevel">[legacy] </span> 10313 10314 10315 10316 10317 </td> <!-- entry_type --> 10318 10319 <td class="entry_description"> 10320 <p>32 characters describing GPS algorithm to 10321include in EXIF.<wbr/></p> 10322 </td> 10323 10324 <td class="entry_units"> 10325 UTF-8 null-terminated string 10326 </td> 10327 10328 <td class="entry_range"> 10329 </td> 10330 10331 <td class="entry_tags"> 10332 <ul class="entry_tags"> 10333 <li><a href="#tag_BC">BC</a></li> 10334 </ul> 10335 </td> 10336 10337 </tr> 10338 10339 10340 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10341 <!-- end of entry --> 10342 10343 10344 <tr class="entry" id="controls_android.jpeg.gpsTimestamp"> 10345 <td class="entry_name 10346 " rowspan="1"> 10347 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 10348 </td> 10349 <td class="entry_type"> 10350 <span class="entry_type_name">int64</span> 10351 10352 <span class="entry_type_visibility"> [hidden]</span> 10353 10354 10355 <span class="entry_type_hwlevel">[legacy] </span> 10356 10357 10358 10359 10360 </td> <!-- entry_type --> 10361 10362 <td class="entry_description"> 10363 <p>Time GPS fix was made to include in 10364EXIF.<wbr/></p> 10365 </td> 10366 10367 <td class="entry_units"> 10368 UTC in seconds since January 1,<wbr/> 1970 10369 </td> 10370 10371 <td class="entry_range"> 10372 </td> 10373 10374 <td class="entry_tags"> 10375 <ul class="entry_tags"> 10376 <li><a href="#tag_BC">BC</a></li> 10377 </ul> 10378 </td> 10379 10380 </tr> 10381 10382 10383 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10384 <!-- end of entry --> 10385 10386 10387 <tr class="entry" id="controls_android.jpeg.orientation"> 10388 <td class="entry_name 10389 " rowspan="3"> 10390 android.<wbr/>jpeg.<wbr/>orientation 10391 </td> 10392 <td class="entry_type"> 10393 <span class="entry_type_name">int32</span> 10394 10395 <span class="entry_type_visibility"> [public]</span> 10396 10397 10398 <span class="entry_type_hwlevel">[legacy] </span> 10399 10400 10401 10402 10403 </td> <!-- entry_type --> 10404 10405 <td class="entry_description"> 10406 <p>The orientation for a JPEG image.<wbr/></p> 10407 </td> 10408 10409 <td class="entry_units"> 10410 Degrees in multiples of 90 10411 </td> 10412 10413 <td class="entry_range"> 10414 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 10415 </td> 10416 10417 <td class="entry_tags"> 10418 <ul class="entry_tags"> 10419 <li><a href="#tag_BC">BC</a></li> 10420 </ul> 10421 </td> 10422 10423 </tr> 10424 <tr class="entries_header"> 10425 <th class="th_details" colspan="5">Details</th> 10426 </tr> 10427 <tr class="entry_cont"> 10428 <td class="entry_details" colspan="5"> 10429 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 10430to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 10431upright.<wbr/></p> 10432<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 10433rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 10434the thumbnail data will also be rotated.<wbr/></p> 10435<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 10436by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 10437<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following 10438sample code may be used:</p> 10439<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 10440 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 10441 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 10442 10443 //<wbr/> Round device orientation to a multiple of 90 10444 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 10445 10446 //<wbr/> Reverse device orientation for front-facing cameras 10447 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 10448 if (facingFront) deviceOrientation = -deviceOrientation; 10449 10450 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 10451 //<wbr/> the image upright relative to the device orientation 10452 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 10453 10454 return jpegOrientation; 10455} 10456</code></pre> 10457 </td> 10458 </tr> 10459 10460 10461 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10462 <!-- end of entry --> 10463 10464 10465 <tr class="entry" id="controls_android.jpeg.quality"> 10466 <td class="entry_name 10467 " rowspan="3"> 10468 android.<wbr/>jpeg.<wbr/>quality 10469 </td> 10470 <td class="entry_type"> 10471 <span class="entry_type_name">byte</span> 10472 10473 <span class="entry_type_visibility"> [public]</span> 10474 10475 10476 <span class="entry_type_hwlevel">[legacy] </span> 10477 10478 10479 10480 10481 </td> <!-- entry_type --> 10482 10483 <td class="entry_description"> 10484 <p>Compression quality of the final JPEG 10485image.<wbr/></p> 10486 </td> 10487 10488 <td class="entry_units"> 10489 </td> 10490 10491 <td class="entry_range"> 10492 <p>1-100; larger is higher quality</p> 10493 </td> 10494 10495 <td class="entry_tags"> 10496 <ul class="entry_tags"> 10497 <li><a href="#tag_BC">BC</a></li> 10498 </ul> 10499 </td> 10500 10501 </tr> 10502 <tr class="entries_header"> 10503 <th class="th_details" colspan="5">Details</th> 10504 </tr> 10505 <tr class="entry_cont"> 10506 <td class="entry_details" colspan="5"> 10507 <p>85-95 is typical usage range.<wbr/></p> 10508 </td> 10509 </tr> 10510 10511 10512 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10513 <!-- end of entry --> 10514 10515 10516 <tr class="entry" id="controls_android.jpeg.thumbnailQuality"> 10517 <td class="entry_name 10518 " rowspan="1"> 10519 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 10520 </td> 10521 <td class="entry_type"> 10522 <span class="entry_type_name">byte</span> 10523 10524 <span class="entry_type_visibility"> [public]</span> 10525 10526 10527 <span class="entry_type_hwlevel">[legacy] </span> 10528 10529 10530 10531 10532 </td> <!-- entry_type --> 10533 10534 <td class="entry_description"> 10535 <p>Compression quality of JPEG 10536thumbnail.<wbr/></p> 10537 </td> 10538 10539 <td class="entry_units"> 10540 </td> 10541 10542 <td class="entry_range"> 10543 <p>1-100; larger is higher quality</p> 10544 </td> 10545 10546 <td class="entry_tags"> 10547 <ul class="entry_tags"> 10548 <li><a href="#tag_BC">BC</a></li> 10549 </ul> 10550 </td> 10551 10552 </tr> 10553 10554 10555 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10556 <!-- end of entry --> 10557 10558 10559 <tr class="entry" id="controls_android.jpeg.thumbnailSize"> 10560 <td class="entry_name 10561 " rowspan="5"> 10562 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 10563 </td> 10564 <td class="entry_type"> 10565 <span class="entry_type_name">int32</span> 10566 <span class="entry_type_container">x</span> 10567 10568 <span class="entry_type_array"> 10569 2 10570 </span> 10571 <span class="entry_type_visibility"> [public as size]</span> 10572 10573 10574 <span class="entry_type_hwlevel">[legacy] </span> 10575 10576 10577 10578 10579 </td> <!-- entry_type --> 10580 10581 <td class="entry_description"> 10582 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 10583 </td> 10584 10585 <td class="entry_units"> 10586 </td> 10587 10588 <td class="entry_range"> 10589 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 10590 </td> 10591 10592 <td class="entry_tags"> 10593 <ul class="entry_tags"> 10594 <li><a href="#tag_BC">BC</a></li> 10595 </ul> 10596 </td> 10597 10598 </tr> 10599 <tr class="entries_header"> 10600 <th class="th_details" colspan="5">Details</th> 10601 </tr> 10602 <tr class="entry_cont"> 10603 <td class="entry_details" colspan="5"> 10604 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 10605but the captured JPEG will still be a valid image.<wbr/></p> 10606<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 10607should have the same aspect ratio as the main JPEG output.<wbr/></p> 10608<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 10609ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 10610For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1061116:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 10612generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 10613Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 10614<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 10615the camera device will handle thumbnail rotation in one of the following ways:</p> 10616<ul> 10617<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 10618 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 10619<li>Rotate the jpeg and thumbnail image data and not set 10620 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 10621 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in 10622 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 10623 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 10624 size.<wbr/></li> 10625</ul> 10626 </td> 10627 </tr> 10628 10629 <tr class="entries_header"> 10630 <th class="th_details" colspan="5">HAL Implementation Details</th> 10631 </tr> 10632 <tr class="entry_cont"> 10633 <td class="entry_details" colspan="5"> 10634 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 10635The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 10636The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 10637thumbnail image cropping.<wbr/></p> 10638 </td> 10639 </tr> 10640 10641 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10642 <!-- end of entry --> 10643 10644 10645 10646 <!-- end of kind --> 10647 </tbody> 10648 <tr><td colspan="6" class="kind">static</td></tr> 10649 10650 <thead class="entries_header"> 10651 <tr> 10652 <th class="th_name">Property Name</th> 10653 <th class="th_type">Type</th> 10654 <th class="th_description">Description</th> 10655 <th class="th_units">Units</th> 10656 <th class="th_range">Range</th> 10657 <th class="th_tags">Tags</th> 10658 </tr> 10659 </thead> 10660 10661 <tbody> 10662 10663 10664 10665 10666 10667 10668 10669 10670 10671 10672 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes"> 10673 <td class="entry_name 10674 " rowspan="3"> 10675 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes 10676 </td> 10677 <td class="entry_type"> 10678 <span class="entry_type_name">int32</span> 10679 <span class="entry_type_container">x</span> 10680 10681 <span class="entry_type_array"> 10682 2 x n 10683 </span> 10684 <span class="entry_type_visibility"> [public as size]</span> 10685 10686 10687 <span class="entry_type_hwlevel">[legacy] </span> 10688 10689 10690 10691 10692 </td> <!-- entry_type --> 10693 10694 <td class="entry_description"> 10695 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this 10696camera device.<wbr/></p> 10697 </td> 10698 10699 <td class="entry_units"> 10700 </td> 10701 10702 <td class="entry_range"> 10703 </td> 10704 10705 <td class="entry_tags"> 10706 <ul class="entry_tags"> 10707 <li><a href="#tag_BC">BC</a></li> 10708 </ul> 10709 </td> 10710 10711 </tr> 10712 <tr class="entries_header"> 10713 <th class="th_details" colspan="5">Details</th> 10714 </tr> 10715 <tr class="entry_cont"> 10716 <td class="entry_details" colspan="5"> 10717 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no 10718thumbnail should be generated.<wbr/></p> 10719<p>Below condiditions will be satisfied for this size list:</p> 10720<ul> 10721<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/> 10722If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li> 10723<li>The aspect ratio of the largest thumbnail size will be same as the 10724aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 10725The largest size is defined as the size that has the largest pixel area 10726in a given size list.<wbr/></li> 10727<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 10728one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> 10729and vice versa.<wbr/></li> 10730<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li> 10731</ul> 10732 </td> 10733 </tr> 10734 10735 10736 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10737 <!-- end of entry --> 10738 10739 10740 <tr class="entry" id="static_android.jpeg.maxSize"> 10741 <td class="entry_name 10742 " rowspan="3"> 10743 android.<wbr/>jpeg.<wbr/>max<wbr/>Size 10744 </td> 10745 <td class="entry_type"> 10746 <span class="entry_type_name">int32</span> 10747 10748 <span class="entry_type_visibility"> [system]</span> 10749 10750 10751 10752 10753 10754 10755 </td> <!-- entry_type --> 10756 10757 <td class="entry_description"> 10758 <p>Maximum size in bytes for the compressed 10759JPEG buffer</p> 10760 </td> 10761 10762 <td class="entry_units"> 10763 </td> 10764 10765 <td class="entry_range"> 10766 <p>Must be large enough to fit any JPEG produced by 10767the camera</p> 10768 </td> 10769 10770 <td class="entry_tags"> 10771 </td> 10772 10773 </tr> 10774 <tr class="entries_header"> 10775 <th class="th_details" colspan="5">Details</th> 10776 </tr> 10777 <tr class="entry_cont"> 10778 <td class="entry_details" colspan="5"> 10779 <p>This is used for sizing the gralloc buffers for 10780JPEG</p> 10781 </td> 10782 </tr> 10783 10784 10785 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10786 <!-- end of entry --> 10787 10788 10789 10790 <!-- end of kind --> 10791 </tbody> 10792 <tr><td colspan="6" class="kind">dynamic</td></tr> 10793 10794 <thead class="entries_header"> 10795 <tr> 10796 <th class="th_name">Property Name</th> 10797 <th class="th_type">Type</th> 10798 <th class="th_description">Description</th> 10799 <th class="th_units">Units</th> 10800 <th class="th_range">Range</th> 10801 <th class="th_tags">Tags</th> 10802 </tr> 10803 </thead> 10804 10805 <tbody> 10806 10807 10808 10809 10810 10811 10812 10813 10814 10815 10816 <tr class="entry" id="dynamic_android.jpeg.gpsLocation"> 10817 <td class="entry_name 10818 " rowspan="3"> 10819 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 10820 </td> 10821 <td class="entry_type"> 10822 <span class="entry_type_name">byte</span> 10823 10824 <span class="entry_type_visibility"> [public as location]</span> 10825 10826 <span class="entry_type_synthetic">[synthetic] </span> 10827 10828 <span class="entry_type_hwlevel">[legacy] </span> 10829 10830 10831 10832 10833 </td> <!-- entry_type --> 10834 10835 <td class="entry_description"> 10836 <p>A location object to use when generating image GPS metadata.<wbr/></p> 10837 </td> 10838 10839 <td class="entry_units"> 10840 </td> 10841 10842 <td class="entry_range"> 10843 </td> 10844 10845 <td class="entry_tags"> 10846 </td> 10847 10848 </tr> 10849 <tr class="entries_header"> 10850 <th class="th_details" colspan="5">Details</th> 10851 </tr> 10852 <tr class="entry_cont"> 10853 <td class="entry_details" colspan="5"> 10854 <p>Setting a location object in a request will include the GPS coordinates of the location 10855into any JPEG images captured based on the request.<wbr/> These coordinates can then be 10856viewed by anyone who receives the JPEG image.<wbr/></p> 10857 </td> 10858 </tr> 10859 10860 10861 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10862 <!-- end of entry --> 10863 10864 10865 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates"> 10866 <td class="entry_name 10867 " rowspan="1"> 10868 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 10869 </td> 10870 <td class="entry_type"> 10871 <span class="entry_type_name">double</span> 10872 <span class="entry_type_container">x</span> 10873 10874 <span class="entry_type_array"> 10875 3 10876 </span> 10877 <span class="entry_type_visibility"> [hidden]</span> 10878 10879 10880 <span class="entry_type_hwlevel">[legacy] </span> 10881 10882 10883 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 10884 10885 10886 </td> <!-- entry_type --> 10887 10888 <td class="entry_description"> 10889 <p>GPS coordinates to include in output JPEG 10890EXIF.<wbr/></p> 10891 </td> 10892 10893 <td class="entry_units"> 10894 </td> 10895 10896 <td class="entry_range"> 10897 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 10898 </td> 10899 10900 <td class="entry_tags"> 10901 <ul class="entry_tags"> 10902 <li><a href="#tag_BC">BC</a></li> 10903 </ul> 10904 </td> 10905 10906 </tr> 10907 10908 10909 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10910 <!-- end of entry --> 10911 10912 10913 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod"> 10914 <td class="entry_name 10915 " rowspan="1"> 10916 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 10917 </td> 10918 <td class="entry_type"> 10919 <span class="entry_type_name">byte</span> 10920 10921 <span class="entry_type_visibility"> [hidden as string]</span> 10922 10923 10924 <span class="entry_type_hwlevel">[legacy] </span> 10925 10926 10927 10928 10929 </td> <!-- entry_type --> 10930 10931 <td class="entry_description"> 10932 <p>32 characters describing GPS algorithm to 10933include in EXIF.<wbr/></p> 10934 </td> 10935 10936 <td class="entry_units"> 10937 UTF-8 null-terminated string 10938 </td> 10939 10940 <td class="entry_range"> 10941 </td> 10942 10943 <td class="entry_tags"> 10944 <ul class="entry_tags"> 10945 <li><a href="#tag_BC">BC</a></li> 10946 </ul> 10947 </td> 10948 10949 </tr> 10950 10951 10952 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10953 <!-- end of entry --> 10954 10955 10956 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp"> 10957 <td class="entry_name 10958 " rowspan="1"> 10959 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 10960 </td> 10961 <td class="entry_type"> 10962 <span class="entry_type_name">int64</span> 10963 10964 <span class="entry_type_visibility"> [hidden]</span> 10965 10966 10967 <span class="entry_type_hwlevel">[legacy] </span> 10968 10969 10970 10971 10972 </td> <!-- entry_type --> 10973 10974 <td class="entry_description"> 10975 <p>Time GPS fix was made to include in 10976EXIF.<wbr/></p> 10977 </td> 10978 10979 <td class="entry_units"> 10980 UTC in seconds since January 1,<wbr/> 1970 10981 </td> 10982 10983 <td class="entry_range"> 10984 </td> 10985 10986 <td class="entry_tags"> 10987 <ul class="entry_tags"> 10988 <li><a href="#tag_BC">BC</a></li> 10989 </ul> 10990 </td> 10991 10992 </tr> 10993 10994 10995 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10996 <!-- end of entry --> 10997 10998 10999 <tr class="entry" id="dynamic_android.jpeg.orientation"> 11000 <td class="entry_name 11001 " rowspan="3"> 11002 android.<wbr/>jpeg.<wbr/>orientation 11003 </td> 11004 <td class="entry_type"> 11005 <span class="entry_type_name">int32</span> 11006 11007 <span class="entry_type_visibility"> [public]</span> 11008 11009 11010 <span class="entry_type_hwlevel">[legacy] </span> 11011 11012 11013 11014 11015 </td> <!-- entry_type --> 11016 11017 <td class="entry_description"> 11018 <p>The orientation for a JPEG image.<wbr/></p> 11019 </td> 11020 11021 <td class="entry_units"> 11022 Degrees in multiples of 90 11023 </td> 11024 11025 <td class="entry_range"> 11026 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 11027 </td> 11028 11029 <td class="entry_tags"> 11030 <ul class="entry_tags"> 11031 <li><a href="#tag_BC">BC</a></li> 11032 </ul> 11033 </td> 11034 11035 </tr> 11036 <tr class="entries_header"> 11037 <th class="th_details" colspan="5">Details</th> 11038 </tr> 11039 <tr class="entry_cont"> 11040 <td class="entry_details" colspan="5"> 11041 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 11042to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 11043upright.<wbr/></p> 11044<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 11045rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 11046the thumbnail data will also be rotated.<wbr/></p> 11047<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 11048by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 11049<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following 11050sample code may be used:</p> 11051<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 11052 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 11053 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 11054 11055 //<wbr/> Round device orientation to a multiple of 90 11056 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 11057 11058 //<wbr/> Reverse device orientation for front-facing cameras 11059 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 11060 if (facingFront) deviceOrientation = -deviceOrientation; 11061 11062 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 11063 //<wbr/> the image upright relative to the device orientation 11064 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 11065 11066 return jpegOrientation; 11067} 11068</code></pre> 11069 </td> 11070 </tr> 11071 11072 11073 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11074 <!-- end of entry --> 11075 11076 11077 <tr class="entry" id="dynamic_android.jpeg.quality"> 11078 <td class="entry_name 11079 " rowspan="3"> 11080 android.<wbr/>jpeg.<wbr/>quality 11081 </td> 11082 <td class="entry_type"> 11083 <span class="entry_type_name">byte</span> 11084 11085 <span class="entry_type_visibility"> [public]</span> 11086 11087 11088 <span class="entry_type_hwlevel">[legacy] </span> 11089 11090 11091 11092 11093 </td> <!-- entry_type --> 11094 11095 <td class="entry_description"> 11096 <p>Compression quality of the final JPEG 11097image.<wbr/></p> 11098 </td> 11099 11100 <td class="entry_units"> 11101 </td> 11102 11103 <td class="entry_range"> 11104 <p>1-100; larger is higher quality</p> 11105 </td> 11106 11107 <td class="entry_tags"> 11108 <ul class="entry_tags"> 11109 <li><a href="#tag_BC">BC</a></li> 11110 </ul> 11111 </td> 11112 11113 </tr> 11114 <tr class="entries_header"> 11115 <th class="th_details" colspan="5">Details</th> 11116 </tr> 11117 <tr class="entry_cont"> 11118 <td class="entry_details" colspan="5"> 11119 <p>85-95 is typical usage range.<wbr/></p> 11120 </td> 11121 </tr> 11122 11123 11124 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11125 <!-- end of entry --> 11126 11127 11128 <tr class="entry" id="dynamic_android.jpeg.size"> 11129 <td class="entry_name 11130 " rowspan="3"> 11131 android.<wbr/>jpeg.<wbr/>size 11132 </td> 11133 <td class="entry_type"> 11134 <span class="entry_type_name">int32</span> 11135 11136 <span class="entry_type_visibility"> [system]</span> 11137 11138 11139 11140 11141 11142 11143 </td> <!-- entry_type --> 11144 11145 <td class="entry_description"> 11146 <p>The size of the compressed JPEG image,<wbr/> in 11147bytes</p> 11148 </td> 11149 11150 <td class="entry_units"> 11151 </td> 11152 11153 <td class="entry_range"> 11154 <p>>= 0</p> 11155 </td> 11156 11157 <td class="entry_tags"> 11158 <ul class="entry_tags"> 11159 <li><a href="#tag_FUTURE">FUTURE</a></li> 11160 </ul> 11161 </td> 11162 11163 </tr> 11164 <tr class="entries_header"> 11165 <th class="th_details" colspan="5">Details</th> 11166 </tr> 11167 <tr class="entry_cont"> 11168 <td class="entry_details" colspan="5"> 11169 <p>If no JPEG output is produced for the request,<wbr/> 11170this must be 0.<wbr/></p> 11171<p>Otherwise,<wbr/> this describes the real size of the compressed 11172JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> 11173if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture 11174has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from 11175the JPEG stream will be 1000000 bytes,<wbr/> of which the first 11176500000 make up the real data.<wbr/></p> 11177 </td> 11178 </tr> 11179 11180 11181 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11182 <!-- end of entry --> 11183 11184 11185 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality"> 11186 <td class="entry_name 11187 " rowspan="1"> 11188 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 11189 </td> 11190 <td class="entry_type"> 11191 <span class="entry_type_name">byte</span> 11192 11193 <span class="entry_type_visibility"> [public]</span> 11194 11195 11196 <span class="entry_type_hwlevel">[legacy] </span> 11197 11198 11199 11200 11201 </td> <!-- entry_type --> 11202 11203 <td class="entry_description"> 11204 <p>Compression quality of JPEG 11205thumbnail.<wbr/></p> 11206 </td> 11207 11208 <td class="entry_units"> 11209 </td> 11210 11211 <td class="entry_range"> 11212 <p>1-100; larger is higher quality</p> 11213 </td> 11214 11215 <td class="entry_tags"> 11216 <ul class="entry_tags"> 11217 <li><a href="#tag_BC">BC</a></li> 11218 </ul> 11219 </td> 11220 11221 </tr> 11222 11223 11224 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11225 <!-- end of entry --> 11226 11227 11228 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize"> 11229 <td class="entry_name 11230 " rowspan="5"> 11231 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 11232 </td> 11233 <td class="entry_type"> 11234 <span class="entry_type_name">int32</span> 11235 <span class="entry_type_container">x</span> 11236 11237 <span class="entry_type_array"> 11238 2 11239 </span> 11240 <span class="entry_type_visibility"> [public as size]</span> 11241 11242 11243 <span class="entry_type_hwlevel">[legacy] </span> 11244 11245 11246 11247 11248 </td> <!-- entry_type --> 11249 11250 <td class="entry_description"> 11251 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 11252 </td> 11253 11254 <td class="entry_units"> 11255 </td> 11256 11257 <td class="entry_range"> 11258 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 11259 </td> 11260 11261 <td class="entry_tags"> 11262 <ul class="entry_tags"> 11263 <li><a href="#tag_BC">BC</a></li> 11264 </ul> 11265 </td> 11266 11267 </tr> 11268 <tr class="entries_header"> 11269 <th class="th_details" colspan="5">Details</th> 11270 </tr> 11271 <tr class="entry_cont"> 11272 <td class="entry_details" colspan="5"> 11273 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 11274but the captured JPEG will still be a valid image.<wbr/></p> 11275<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 11276should have the same aspect ratio as the main JPEG output.<wbr/></p> 11277<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 11278ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 11279For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1128016:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 11281generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 11282Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 11283<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 11284the camera device will handle thumbnail rotation in one of the following ways:</p> 11285<ul> 11286<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 11287 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 11288<li>Rotate the jpeg and thumbnail image data and not set 11289 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 11290 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in 11291 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 11292 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 11293 size.<wbr/></li> 11294</ul> 11295 </td> 11296 </tr> 11297 11298 <tr class="entries_header"> 11299 <th class="th_details" colspan="5">HAL Implementation Details</th> 11300 </tr> 11301 <tr class="entry_cont"> 11302 <td class="entry_details" colspan="5"> 11303 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 11304The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 11305The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 11306thumbnail image cropping.<wbr/></p> 11307 </td> 11308 </tr> 11309 11310 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11311 <!-- end of entry --> 11312 11313 11314 11315 <!-- end of kind --> 11316 </tbody> 11317 11318 <!-- end of section --> 11319 <tr><td colspan="6" id="section_lens" class="section">lens</td></tr> 11320 11321 11322 <tr><td colspan="6" class="kind">controls</td></tr> 11323 11324 <thead class="entries_header"> 11325 <tr> 11326 <th class="th_name">Property Name</th> 11327 <th class="th_type">Type</th> 11328 <th class="th_description">Description</th> 11329 <th class="th_units">Units</th> 11330 <th class="th_range">Range</th> 11331 <th class="th_tags">Tags</th> 11332 </tr> 11333 </thead> 11334 11335 <tbody> 11336 11337 11338 11339 11340 11341 11342 11343 11344 11345 11346 <tr class="entry" id="controls_android.lens.aperture"> 11347 <td class="entry_name 11348 " rowspan="3"> 11349 android.<wbr/>lens.<wbr/>aperture 11350 </td> 11351 <td class="entry_type"> 11352 <span class="entry_type_name">float</span> 11353 11354 <span class="entry_type_visibility"> [public]</span> 11355 11356 11357 <span class="entry_type_hwlevel">[full] </span> 11358 11359 11360 11361 11362 </td> <!-- entry_type --> 11363 11364 <td class="entry_description"> 11365 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 11366effective aperture diameter.<wbr/></p> 11367 </td> 11368 11369 <td class="entry_units"> 11370 The f-number (f/<wbr/>N) 11371 </td> 11372 11373 <td class="entry_range"> 11374 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 11375 </td> 11376 11377 <td class="entry_tags"> 11378 <ul class="entry_tags"> 11379 <li><a href="#tag_V1">V1</a></li> 11380 </ul> 11381 </td> 11382 11383 </tr> 11384 <tr class="entries_header"> 11385 <th class="th_details" colspan="5">Details</th> 11386 </tr> 11387 <tr class="entry_cont"> 11388 <td class="entry_details" colspan="5"> 11389 <p>Setting this value is only supported on the camera devices that have a variable 11390aperture lens.<wbr/></p> 11391<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 11392this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 11393<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> 11394to achieve manual exposure control.<wbr/></p> 11395<p>The requested aperture value may take several frames to reach the 11396requested value; the camera device will report the current (intermediate) 11397aperture size in capture result metadata while the aperture is changing.<wbr/> 11398While 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> 11399<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 11400the ON modes,<wbr/> this will be overridden by the camera device 11401auto-exposure algorithm,<wbr/> the overridden values are then provided 11402back to the user in the corresponding result.<wbr/></p> 11403 </td> 11404 </tr> 11405 11406 11407 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11408 <!-- end of entry --> 11409 11410 11411 <tr class="entry" id="controls_android.lens.filterDensity"> 11412 <td class="entry_name 11413 " rowspan="3"> 11414 android.<wbr/>lens.<wbr/>filter<wbr/>Density 11415 </td> 11416 <td class="entry_type"> 11417 <span class="entry_type_name">float</span> 11418 11419 <span class="entry_type_visibility"> [public]</span> 11420 11421 11422 <span class="entry_type_hwlevel">[full] </span> 11423 11424 11425 11426 11427 </td> <!-- entry_type --> 11428 11429 <td class="entry_description"> 11430 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 11431 </td> 11432 11433 <td class="entry_units"> 11434 Exposure Value (EV) 11435 </td> 11436 11437 <td class="entry_range"> 11438 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 11439 </td> 11440 11441 <td class="entry_tags"> 11442 <ul class="entry_tags"> 11443 <li><a href="#tag_V1">V1</a></li> 11444 </ul> 11445 </td> 11446 11447 </tr> 11448 <tr class="entries_header"> 11449 <th class="th_details" colspan="5">Details</th> 11450 </tr> 11451 <tr class="entry_cont"> 11452 <td class="entry_details" colspan="5"> 11453 <p>This control will not be supported on most camera devices.<wbr/></p> 11454<p>Lens filters are typically used to lower the amount of light the 11455sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 11456step is the standard logarithmic representation,<wbr/> which are 11457non-negative,<wbr/> and inversely proportional to the amount of light 11458hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 11459in no reduction of the incoming light,<wbr/> and setting this to 2 would 11460mean that the filter is set to reduce incoming light by two stops 11461(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 11462<p>It may take several frames before the lens filter density changes 11463to the requested value.<wbr/> While the filter density is still changing,<wbr/> 11464<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 11465 </td> 11466 </tr> 11467 11468 11469 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11470 <!-- end of entry --> 11471 11472 11473 <tr class="entry" id="controls_android.lens.focalLength"> 11474 <td class="entry_name 11475 " rowspan="3"> 11476 android.<wbr/>lens.<wbr/>focal<wbr/>Length 11477 </td> 11478 <td class="entry_type"> 11479 <span class="entry_type_name">float</span> 11480 11481 <span class="entry_type_visibility"> [public]</span> 11482 11483 11484 <span class="entry_type_hwlevel">[legacy] </span> 11485 11486 11487 11488 11489 </td> <!-- entry_type --> 11490 11491 <td class="entry_description"> 11492 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 11493 </td> 11494 11495 <td class="entry_units"> 11496 Millimeters 11497 </td> 11498 11499 <td class="entry_range"> 11500 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 11501 </td> 11502 11503 <td class="entry_tags"> 11504 <ul class="entry_tags"> 11505 <li><a href="#tag_V1">V1</a></li> 11506 </ul> 11507 </td> 11508 11509 </tr> 11510 <tr class="entries_header"> 11511 <th class="th_details" colspan="5">Details</th> 11512 </tr> 11513 <tr class="entry_cont"> 11514 <td class="entry_details" colspan="5"> 11515 <p>This setting controls the physical focal length of the camera 11516device's lens.<wbr/> Changing the focal length changes the field of 11517view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 11518<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 11519setting won't be applied instantaneously,<wbr/> and it may take several 11520frames before the lens can change to the requested focal length.<wbr/> 11521While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 11522be set to MOVING.<wbr/></p> 11523<p>Optical zoom will not be supported on most devices.<wbr/></p> 11524 </td> 11525 </tr> 11526 11527 11528 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11529 <!-- end of entry --> 11530 11531 11532 <tr class="entry" id="controls_android.lens.focusDistance"> 11533 <td class="entry_name 11534 " rowspan="3"> 11535 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 11536 </td> 11537 <td class="entry_type"> 11538 <span class="entry_type_name">float</span> 11539 11540 <span class="entry_type_visibility"> [public]</span> 11541 11542 11543 <span class="entry_type_hwlevel">[full] </span> 11544 11545 11546 11547 11548 </td> <!-- entry_type --> 11549 11550 <td class="entry_description"> 11551 <p>Desired distance to plane of sharpest focus,<wbr/> 11552measured from frontmost surface of the lens.<wbr/></p> 11553 </td> 11554 11555 <td class="entry_units"> 11556 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11557 </td> 11558 11559 <td class="entry_range"> 11560 <p>>= 0</p> 11561 </td> 11562 11563 <td class="entry_tags"> 11564 <ul class="entry_tags"> 11565 <li><a href="#tag_BC">BC</a></li> 11566 <li><a href="#tag_V1">V1</a></li> 11567 </ul> 11568 </td> 11569 11570 </tr> 11571 <tr class="entries_header"> 11572 <th class="th_details" colspan="5">Details</th> 11573 </tr> 11574 <tr class="entry_cont"> 11575 <td class="entry_details" colspan="5"> 11576 <p>This control can be used for setting manual focus,<wbr/> on devices that support 11577the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see 11578<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p> 11579<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to 11580<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> 11581<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied 11582instantaneously,<wbr/> and it may take several frames before the lens 11583can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/> 11584<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 11585<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code> 11586for infinity focus.<wbr/></p> 11587 </td> 11588 </tr> 11589 11590 11591 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11592 <!-- end of entry --> 11593 11594 11595 <tr class="entry" id="controls_android.lens.opticalStabilizationMode"> 11596 <td class="entry_name 11597 " rowspan="3"> 11598 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 11599 </td> 11600 <td class="entry_type"> 11601 <span class="entry_type_name entry_type_name_enum">byte</span> 11602 11603 <span class="entry_type_visibility"> [public]</span> 11604 11605 11606 <span class="entry_type_hwlevel">[limited] </span> 11607 11608 11609 11610 <ul class="entry_type_enum"> 11611 <li> 11612 <span class="entry_type_enum_name">OFF</span> 11613 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 11614 </li> 11615 <li> 11616 <span class="entry_type_enum_name">ON</span> 11617 <span class="entry_type_enum_optional">[optional]</span> 11618 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 11619 </li> 11620 </ul> 11621 11622 </td> <!-- entry_type --> 11623 11624 <td class="entry_description"> 11625 <p>Sets whether the camera device uses optical image stabilization (OIS) 11626when capturing images.<wbr/></p> 11627 </td> 11628 11629 <td class="entry_units"> 11630 </td> 11631 11632 <td class="entry_range"> 11633 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 11634 </td> 11635 11636 <td class="entry_tags"> 11637 <ul class="entry_tags"> 11638 <li><a href="#tag_V1">V1</a></li> 11639 </ul> 11640 </td> 11641 11642 </tr> 11643 <tr class="entries_header"> 11644 <th class="th_details" colspan="5">Details</th> 11645 </tr> 11646 <tr class="entry_cont"> 11647 <td class="entry_details" colspan="5"> 11648 <p>OIS is used to compensate for motion blur due to small 11649movements of the camera during capture.<wbr/> Unlike digital image 11650stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 11651makes use of mechanical elements to stabilize the camera 11652sensor,<wbr/> and thus allows for longer exposure times before 11653camera shake becomes apparent.<wbr/></p> 11654<p>Switching between different optical stabilization modes may take several 11655frames to initialize,<wbr/> the camera device will report the current mode in 11656capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 11657optical stabilization modes in the first several capture results may still 11658be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 11659<p>If a camera device supports both OIS and digital image stabilization 11660(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 11661interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 11662<p>Not all devices will support OIS; see 11663<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 11664available controls.<wbr/></p> 11665 </td> 11666 </tr> 11667 11668 11669 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11670 <!-- end of entry --> 11671 11672 11673 11674 <!-- end of kind --> 11675 </tbody> 11676 <tr><td colspan="6" class="kind">static</td></tr> 11677 11678 <thead class="entries_header"> 11679 <tr> 11680 <th class="th_name">Property Name</th> 11681 <th class="th_type">Type</th> 11682 <th class="th_description">Description</th> 11683 <th class="th_units">Units</th> 11684 <th class="th_range">Range</th> 11685 <th class="th_tags">Tags</th> 11686 </tr> 11687 </thead> 11688 11689 <tbody> 11690 11691 11692 11693 11694 11695 11696 11697 11698 11699 11700 11701 11702 <tr class="entry" id="static_android.lens.info.availableApertures"> 11703 <td class="entry_name 11704 " rowspan="3"> 11705 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures 11706 </td> 11707 <td class="entry_type"> 11708 <span class="entry_type_name">float</span> 11709 <span class="entry_type_container">x</span> 11710 11711 <span class="entry_type_array"> 11712 n 11713 </span> 11714 <span class="entry_type_visibility"> [public]</span> 11715 11716 11717 <span class="entry_type_hwlevel">[full] </span> 11718 11719 11720 11721 11722 </td> <!-- entry_type --> 11723 11724 <td class="entry_description"> 11725 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are 11726supported by this camera device.<wbr/></p> 11727 </td> 11728 11729 <td class="entry_units"> 11730 The aperture f-number 11731 </td> 11732 11733 <td class="entry_range"> 11734 </td> 11735 11736 <td class="entry_tags"> 11737 <ul class="entry_tags"> 11738 <li><a href="#tag_V1">V1</a></li> 11739 </ul> 11740 </td> 11741 11742 </tr> 11743 <tr class="entries_header"> 11744 <th class="th_details" colspan="5">Details</th> 11745 </tr> 11746 <tr class="entry_cont"> 11747 <td class="entry_details" colspan="5"> 11748 <p>If the camera device doesn't support a variable lens aperture,<wbr/> 11749this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p> 11750<p>If the camera device supports a variable aperture,<wbr/> the aperture values 11751in this list will be sorted in ascending order.<wbr/></p> 11752 </td> 11753 </tr> 11754 11755 11756 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11757 <!-- end of entry --> 11758 11759 11760 <tr class="entry" id="static_android.lens.info.availableFilterDensities"> 11761 <td class="entry_name 11762 " rowspan="3"> 11763 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities 11764 </td> 11765 <td class="entry_type"> 11766 <span class="entry_type_name">float</span> 11767 <span class="entry_type_container">x</span> 11768 11769 <span class="entry_type_array"> 11770 n 11771 </span> 11772 <span class="entry_type_visibility"> [public]</span> 11773 11774 11775 <span class="entry_type_hwlevel">[full] </span> 11776 11777 11778 11779 11780 </td> <!-- entry_type --> 11781 11782 <td class="entry_description"> 11783 <p>List of neutral density filter values for 11784<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p> 11785 </td> 11786 11787 <td class="entry_units"> 11788 Exposure value (EV) 11789 </td> 11790 11791 <td class="entry_range"> 11792 <p>Values are >= 0</p> 11793 </td> 11794 11795 <td class="entry_tags"> 11796 <ul class="entry_tags"> 11797 <li><a href="#tag_V1">V1</a></li> 11798 </ul> 11799 </td> 11800 11801 </tr> 11802 <tr class="entries_header"> 11803 <th class="th_details" colspan="5">Details</th> 11804 </tr> 11805 <tr class="entry_cont"> 11806 <td class="entry_details" colspan="5"> 11807 <p>If a neutral density filter is not supported by this camera device,<wbr/> 11808this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every 11809filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p> 11810 </td> 11811 </tr> 11812 11813 11814 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11815 <!-- end of entry --> 11816 11817 11818 <tr class="entry" id="static_android.lens.info.availableFocalLengths"> 11819 <td class="entry_name 11820 " rowspan="3"> 11821 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths 11822 </td> 11823 <td class="entry_type"> 11824 <span class="entry_type_name">float</span> 11825 <span class="entry_type_container">x</span> 11826 11827 <span class="entry_type_array"> 11828 n 11829 </span> 11830 <span class="entry_type_visibility"> [public]</span> 11831 11832 11833 <span class="entry_type_hwlevel">[legacy] </span> 11834 11835 11836 <div class="entry_type_notes">The list of available focal lengths</div> 11837 11838 11839 </td> <!-- entry_type --> 11840 11841 <td class="entry_description"> 11842 <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 11843device.<wbr/></p> 11844 </td> 11845 11846 <td class="entry_units"> 11847 Millimeters 11848 </td> 11849 11850 <td class="entry_range"> 11851 <p>Values are > 0</p> 11852 </td> 11853 11854 <td class="entry_tags"> 11855 <ul class="entry_tags"> 11856 <li><a href="#tag_BC">BC</a></li> 11857 <li><a href="#tag_V1">V1</a></li> 11858 </ul> 11859 </td> 11860 11861 </tr> 11862 <tr class="entries_header"> 11863 <th class="th_details" colspan="5">Details</th> 11864 </tr> 11865 <tr class="entry_cont"> 11866 <td class="entry_details" colspan="5"> 11867 <p>If optical zoom is not supported,<wbr/> this list will only contain 11868a single value corresponding to the fixed focal length of the 11869device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported 11870by the camera device,<wbr/> in ascending order.<wbr/></p> 11871 </td> 11872 </tr> 11873 11874 11875 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11876 <!-- end of entry --> 11877 11878 11879 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization"> 11880 <td class="entry_name 11881 " rowspan="3"> 11882 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization 11883 </td> 11884 <td class="entry_type"> 11885 <span class="entry_type_name">byte</span> 11886 <span class="entry_type_container">x</span> 11887 11888 <span class="entry_type_array"> 11889 n 11890 </span> 11891 <span class="entry_type_visibility"> [public as enumList]</span> 11892 11893 11894 <span class="entry_type_hwlevel">[limited] </span> 11895 11896 11897 <div class="entry_type_notes">list of enums</div> 11898 11899 11900 </td> <!-- entry_type --> 11901 11902 <td class="entry_description"> 11903 <p>List of optical image stabilization (OIS) modes for 11904<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> 11905 </td> 11906 11907 <td class="entry_units"> 11908 </td> 11909 11910 <td class="entry_range"> 11911 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p> 11912 </td> 11913 11914 <td class="entry_tags"> 11915 <ul class="entry_tags"> 11916 <li><a href="#tag_V1">V1</a></li> 11917 </ul> 11918 </td> 11919 11920 </tr> 11921 <tr class="entries_header"> 11922 <th class="th_details" colspan="5">Details</th> 11923 </tr> 11924 <tr class="entry_cont"> 11925 <td class="entry_details" colspan="5"> 11926 <p>If OIS is not supported by a given camera device,<wbr/> this list will 11927contain only OFF.<wbr/></p> 11928 </td> 11929 </tr> 11930 11931 11932 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11933 <!-- end of entry --> 11934 11935 11936 <tr class="entry" id="static_android.lens.info.hyperfocalDistance"> 11937 <td class="entry_name 11938 " rowspan="3"> 11939 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance 11940 </td> 11941 <td class="entry_type"> 11942 <span class="entry_type_name">float</span> 11943 11944 <span class="entry_type_visibility"> [public]</span> 11945 11946 11947 <span class="entry_type_hwlevel">[limited] </span> 11948 11949 11950 11951 11952 </td> <!-- entry_type --> 11953 11954 <td class="entry_description"> 11955 <p>Hyperfocal distance for this lens.<wbr/></p> 11956 </td> 11957 11958 <td class="entry_units"> 11959 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11960 </td> 11961 11962 <td class="entry_range"> 11963 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is 11964within <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> 11965 </td> 11966 11967 <td class="entry_tags"> 11968 </td> 11969 11970 </tr> 11971 <tr class="entries_header"> 11972 <th class="th_details" colspan="5">Details</th> 11973 </tr> 11974 <tr class="entry_cont"> 11975 <td class="entry_details" colspan="5"> 11976 <p>If the lens is not fixed focus,<wbr/> the camera device will report this 11977field 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> 11978 </td> 11979 </tr> 11980 11981 11982 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11983 <!-- end of entry --> 11984 11985 11986 <tr class="entry" id="static_android.lens.info.minimumFocusDistance"> 11987 <td class="entry_name 11988 " rowspan="5"> 11989 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance 11990 </td> 11991 <td class="entry_type"> 11992 <span class="entry_type_name">float</span> 11993 11994 <span class="entry_type_visibility"> [public]</span> 11995 11996 11997 <span class="entry_type_hwlevel">[limited] </span> 11998 11999 12000 12001 12002 </td> <!-- entry_type --> 12003 12004 <td class="entry_description"> 12005 <p>Shortest distance from frontmost surface 12006of the lens that can be brought into sharp focus.<wbr/></p> 12007 </td> 12008 12009 <td class="entry_units"> 12010 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 12011 </td> 12012 12013 <td class="entry_range"> 12014 <p>>= 0</p> 12015 </td> 12016 12017 <td class="entry_tags"> 12018 <ul class="entry_tags"> 12019 <li><a href="#tag_V1">V1</a></li> 12020 </ul> 12021 </td> 12022 12023 </tr> 12024 <tr class="entries_header"> 12025 <th class="th_details" colspan="5">Details</th> 12026 </tr> 12027 <tr class="entry_cont"> 12028 <td class="entry_details" colspan="5"> 12029 <p>If the lens is fixed-focus,<wbr/> this will be 120300.<wbr/></p> 12031 </td> 12032 </tr> 12033 12034 <tr class="entries_header"> 12035 <th class="th_details" colspan="5">HAL Implementation Details</th> 12036 </tr> 12037 <tr class="entry_cont"> 12038 <td class="entry_details" colspan="5"> 12039 <p>Mandatory for FULL devices; LIMITED devices 12040must always set this value to 0 for fixed-focus; and may omit 12041the minimum focus distance otherwise.<wbr/></p> 12042<p>This field is also mandatory for all devices advertising 12043the MANUAL_<wbr/>SENSOR capability.<wbr/></p> 12044 </td> 12045 </tr> 12046 12047 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12048 <!-- end of entry --> 12049 12050 12051 <tr class="entry" id="static_android.lens.info.shadingMapSize"> 12052 <td class="entry_name 12053 " rowspan="3"> 12054 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size 12055 </td> 12056 <td class="entry_type"> 12057 <span class="entry_type_name">int32</span> 12058 <span class="entry_type_container">x</span> 12059 12060 <span class="entry_type_array"> 12061 2 12062 </span> 12063 <span class="entry_type_visibility"> [hidden as size]</span> 12064 12065 12066 <span class="entry_type_hwlevel">[full] </span> 12067 12068 12069 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div> 12070 12071 12072 </td> <!-- entry_type --> 12073 12074 <td class="entry_description"> 12075 <p>Dimensions of lens shading map.<wbr/></p> 12076 </td> 12077 12078 <td class="entry_units"> 12079 </td> 12080 12081 <td class="entry_range"> 12082 <p>Both values >= 1</p> 12083 </td> 12084 12085 <td class="entry_tags"> 12086 <ul class="entry_tags"> 12087 <li><a href="#tag_V1">V1</a></li> 12088 </ul> 12089 </td> 12090 12091 </tr> 12092 <tr class="entries_header"> 12093 <th class="th_details" colspan="5">Details</th> 12094 </tr> 12095 <tr class="entry_cont"> 12096 <td class="entry_details" colspan="5"> 12097 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and 12098must be smaller than 64x64.<wbr/></p> 12099 </td> 12100 </tr> 12101 12102 12103 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12104 <!-- end of entry --> 12105 12106 12107 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration"> 12108 <td class="entry_name 12109 " rowspan="5"> 12110 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration 12111 </td> 12112 <td class="entry_type"> 12113 <span class="entry_type_name entry_type_name_enum">byte</span> 12114 12115 <span class="entry_type_visibility"> [public]</span> 12116 12117 12118 <span class="entry_type_hwlevel">[limited] </span> 12119 12120 12121 12122 <ul class="entry_type_enum"> 12123 <li> 12124 <span class="entry_type_enum_name">UNCALIBRATED</span> 12125 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for 12126<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p> 12127<p>Setting the lens to the same focus distance on separate occasions may 12128result in a different real focus distance,<wbr/> depending on factors such 12129as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> 12130and the device temperature.<wbr/> The focus distance value will still be 12131in 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 12132represents the farthest focus.<wbr/></p></span> 12133 </li> 12134 <li> 12135 <span class="entry_type_enum_name">APPROXIMATE</span> 12136 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p> 12137<p>However,<wbr/> setting the lens to the same focus distance 12138on separate occasions may result in a different real 12139focus distance,<wbr/> depending on factors such as the 12140orientation of the device,<wbr/> the age of the focusing 12141mechanism,<wbr/> and the device temperature.<wbr/></p></span> 12142 </li> 12143 <li> 12144 <span class="entry_type_enum_name">CALIBRATED</span> 12145 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and 12146is calibrated.<wbr/></p> 12147<p>The lens mechanism is calibrated so that setting the 12148same focus distance is repeatable on multiple 12149occasions with good accuracy,<wbr/> and the focus distance 12150corresponds to the real physical distance to the plane 12151of best focus.<wbr/></p></span> 12152 </li> 12153 </ul> 12154 12155 </td> <!-- entry_type --> 12156 12157 <td class="entry_description"> 12158 <p>The lens focus distance calibration quality.<wbr/></p> 12159 </td> 12160 12161 <td class="entry_units"> 12162 </td> 12163 12164 <td class="entry_range"> 12165 </td> 12166 12167 <td class="entry_tags"> 12168 <ul class="entry_tags"> 12169 <li><a href="#tag_V1">V1</a></li> 12170 </ul> 12171 </td> 12172 12173 </tr> 12174 <tr class="entries_header"> 12175 <th class="th_details" colspan="5">Details</th> 12176 </tr> 12177 <tr class="entry_cont"> 12178 <td class="entry_details" colspan="5"> 12179 <p>The lens focus distance calibration quality determines the reliability of 12180focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 12181<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 12182<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p> 12183<p>APPROXIMATE and CALIBRATED devices report the focus metadata in 12184units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/> 12185and increasing positive numbers represent focusing closer and closer 12186to the camera device.<wbr/> The focus distance control also uses diopters 12187on these devices.<wbr/></p> 12188<p>UNCALIBRATED devices do not use units that are directly comparable 12189to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest 12190focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the 12191nearest focus the device can achieve.<wbr/></p> 12192 </td> 12193 </tr> 12194 12195 <tr class="entries_header"> 12196 <th class="th_details" colspan="5">HAL Implementation Details</th> 12197 </tr> 12198 <tr class="entry_cont"> 12199 <td class="entry_details" colspan="5"> 12200 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity 12201focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF) 12202and the lens focus distance is set to 0 diopters 12203(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity 12204and is stably focused at infinity even if the device tilts.<wbr/> It may take the 12205lens some time to move; during the move the lens state should be MOVING and 12206the output diopter value should be changing toward 0.<wbr/></p> 12207 </td> 12208 </tr> 12209 12210 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12211 <!-- end of entry --> 12212 12213 12214 12215 12216 12217 <tr class="entry" id="static_android.lens.facing"> 12218 <td class="entry_name 12219 " rowspan="1"> 12220 android.<wbr/>lens.<wbr/>facing 12221 </td> 12222 <td class="entry_type"> 12223 <span class="entry_type_name entry_type_name_enum">byte</span> 12224 12225 <span class="entry_type_visibility"> [public]</span> 12226 12227 12228 <span class="entry_type_hwlevel">[legacy] </span> 12229 12230 12231 12232 <ul class="entry_type_enum"> 12233 <li> 12234 <span class="entry_type_enum_name">FRONT</span> 12235 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span> 12236 </li> 12237 <li> 12238 <span class="entry_type_enum_name">BACK</span> 12239 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span> 12240 </li> 12241 <li> 12242 <span class="entry_type_enum_name">EXTERNAL</span> 12243 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the 12244device's screen.<wbr/></p></span> 12245 </li> 12246 </ul> 12247 12248 </td> <!-- entry_type --> 12249 12250 <td class="entry_description"> 12251 <p>Direction the camera faces relative to 12252device screen.<wbr/></p> 12253 </td> 12254 12255 <td class="entry_units"> 12256 </td> 12257 12258 <td class="entry_range"> 12259 </td> 12260 12261 <td class="entry_tags"> 12262 </td> 12263 12264 </tr> 12265 12266 12267 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12268 <!-- end of entry --> 12269 12270 12271 <tr class="entry" id="static_android.lens.poseRotation"> 12272 <td class="entry_name 12273 " rowspan="3"> 12274 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 12275 </td> 12276 <td class="entry_type"> 12277 <span class="entry_type_name">float</span> 12278 <span class="entry_type_container">x</span> 12279 12280 <span class="entry_type_array"> 12281 4 12282 </span> 12283 <span class="entry_type_visibility"> [public]</span> 12284 12285 12286 12287 12288 12289 12290 </td> <!-- entry_type --> 12291 12292 <td class="entry_description"> 12293 <p>The orientation of the camera relative to the sensor 12294coordinate system.<wbr/></p> 12295 </td> 12296 12297 <td class="entry_units"> 12298 12299 Quaternion coefficients 12300 12301 </td> 12302 12303 <td class="entry_range"> 12304 </td> 12305 12306 <td class="entry_tags"> 12307 <ul class="entry_tags"> 12308 <li><a href="#tag_DEPTH">DEPTH</a></li> 12309 </ul> 12310 </td> 12311 12312 </tr> 12313 <tr class="entries_header"> 12314 <th class="th_details" colspan="5">Details</th> 12315 </tr> 12316 <tr class="entry_cont"> 12317 <td class="entry_details" colspan="5"> 12318 <p>The four coefficients that describe the quaternion 12319rotation from the Android sensor coordinate system to a 12320camera-aligned coordinate system where the X-axis is 12321aligned with the long side of the image sensor,<wbr/> the Y-axis 12322is aligned with the short side of the image sensor,<wbr/> and 12323the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 12324<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 12325to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 12326amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 12327<pre><code> theta = 2 * acos(w) 12328a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 12329a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 12330a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 12331</code></pre> 12332<p>To create a 3x3 rotation matrix that applies the rotation 12333defined by this quaternion,<wbr/> the following matrix can be 12334used:</p> 12335<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 12336 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 12337 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 12338</code></pre> 12339<p>This matrix can then be used to apply the rotation to a 12340 column vector point with</p> 12341<p><code>p' = Rp</code></p> 12342<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 12343 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 12344 </td> 12345 </tr> 12346 12347 12348 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12349 <!-- end of entry --> 12350 12351 12352 <tr class="entry" id="static_android.lens.poseTranslation"> 12353 <td class="entry_name 12354 " rowspan="3"> 12355 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 12356 </td> 12357 <td class="entry_type"> 12358 <span class="entry_type_name">float</span> 12359 <span class="entry_type_container">x</span> 12360 12361 <span class="entry_type_array"> 12362 3 12363 </span> 12364 <span class="entry_type_visibility"> [public]</span> 12365 12366 12367 12368 12369 12370 12371 </td> <!-- entry_type --> 12372 12373 <td class="entry_description"> 12374 <p>Position of the camera optical center.<wbr/></p> 12375 </td> 12376 12377 <td class="entry_units"> 12378 Meters 12379 </td> 12380 12381 <td class="entry_range"> 12382 </td> 12383 12384 <td class="entry_tags"> 12385 <ul class="entry_tags"> 12386 <li><a href="#tag_DEPTH">DEPTH</a></li> 12387 </ul> 12388 </td> 12389 12390 </tr> 12391 <tr class="entries_header"> 12392 <th class="th_details" colspan="5">Details</th> 12393 </tr> 12394 <tr class="entry_cont"> 12395 <td class="entry_details" colspan="5"> 12396 <p>The position of the camera device's lens optical center,<wbr/> 12397as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the 12398optical center of the largest camera device facing in the 12399same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate 12400axes</a>.<wbr/> Note that only the axis definitions are shared with 12401the sensor coordinate system,<wbr/> but not the origin.<wbr/></p> 12402<p>If this device is the largest or only camera device with a 12403given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a 12404camera device with a lens optical center located 3 cm from 12405the main sensor along the +X axis (to the right from the 12406user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> 12407<p>To transform a pixel coordinates between two cameras 12408facing the same direction,<wbr/> first the source camera 12409<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then 12410the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs 12411to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> 12412of the source camera,<wbr/> the translation of the source camera 12413relative to the destination camera,<wbr/> the 12414<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and 12415finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 12416of the destination camera.<wbr/> This obtains a 12417radial-distortion-free coordinate in the destination 12418camera pixel coordinates.<wbr/></p> 12419<p>To compare this against a real image from the destination 12420camera,<wbr/> the destination camera image then needs to be 12421corrected for radial distortion before comparison or 12422sampling.<wbr/></p> 12423 </td> 12424 </tr> 12425 12426 12427 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12428 <!-- end of entry --> 12429 12430 12431 <tr class="entry" id="static_android.lens.intrinsicCalibration"> 12432 <td class="entry_name 12433 " rowspan="3"> 12434 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 12435 </td> 12436 <td class="entry_type"> 12437 <span class="entry_type_name">float</span> 12438 <span class="entry_type_container">x</span> 12439 12440 <span class="entry_type_array"> 12441 5 12442 </span> 12443 <span class="entry_type_visibility"> [public]</span> 12444 12445 12446 12447 12448 12449 12450 </td> <!-- entry_type --> 12451 12452 <td class="entry_description"> 12453 <p>The parameters for this camera device's intrinsic 12454calibration.<wbr/></p> 12455 </td> 12456 12457 <td class="entry_units"> 12458 12459 Pixels in the 12460 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 12461 coordinate system.<wbr/> 12462 12463 </td> 12464 12465 <td class="entry_range"> 12466 </td> 12467 12468 <td class="entry_tags"> 12469 <ul class="entry_tags"> 12470 <li><a href="#tag_DEPTH">DEPTH</a></li> 12471 </ul> 12472 </td> 12473 12474 </tr> 12475 <tr class="entries_header"> 12476 <th class="th_details" colspan="5">Details</th> 12477 </tr> 12478 <tr class="entry_cont"> 12479 <td class="entry_details" colspan="5"> 12480 <p>The five calibration parameters that describe the 12481transform from camera-centric 3D coordinates to sensor 12482pixel coordinates:</p> 12483<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 12484</code></pre> 12485<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 12486focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 12487axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 12488being aligned with the lens plane.<wbr/></p> 12489<p>These are typically used within a transformation matrix K:</p> 12490<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 12491 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 12492 0 0,<wbr/> 1 ] 12493</code></pre> 12494<p>which can then be combined with the camera pose rotation 12495<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 12496<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the 12497complete transform from world coordinates to pixel 12498coordinates:</p> 12499<pre><code>P = [ K 0 * [ R t 12500 0 1 ] 0 1 ] 12501</code></pre> 12502<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system 12503and <code>p_<wbr/>s</code> being a point in the camera active pixel array 12504coordinate system,<wbr/> and with the mapping including the 12505homogeneous division by z:</p> 12506<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 12507p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 12508</code></pre> 12509<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 12510point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 12511(depth) in pixel coordinates.<wbr/></p> 12512<p>Note that the coordinate system for this transform is the 12513<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/> 12514where <code>(0,<wbr/>0)</code> is the top-left of the 12515preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 12516intrinsic calibration transforms have been applied to a 12517world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> 12518transform needs to be applied,<wbr/> and the result adjusted to 12519be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 12520system (where <code>(0,<wbr/> 0)</code> is the top-left of the 12521activeArraySize rectangle),<wbr/> to determine the final pixel 12522coordinate of the world point for processed (non-RAW) 12523output buffers.<wbr/></p> 12524 </td> 12525 </tr> 12526 12527 12528 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12529 <!-- end of entry --> 12530 12531 12532 <tr class="entry" id="static_android.lens.radialDistortion"> 12533 <td class="entry_name 12534 " rowspan="3"> 12535 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 12536 </td> 12537 <td class="entry_type"> 12538 <span class="entry_type_name">float</span> 12539 <span class="entry_type_container">x</span> 12540 12541 <span class="entry_type_array"> 12542 6 12543 </span> 12544 <span class="entry_type_visibility"> [public]</span> 12545 12546 12547 12548 12549 12550 12551 </td> <!-- entry_type --> 12552 12553 <td class="entry_description"> 12554 <p>The correction coefficients to correct for this camera device's 12555radial and tangential lens distortion.<wbr/></p> 12556 </td> 12557 12558 <td class="entry_units"> 12559 12560 Unitless coefficients.<wbr/> 12561 12562 </td> 12563 12564 <td class="entry_range"> 12565 </td> 12566 12567 <td class="entry_tags"> 12568 <ul class="entry_tags"> 12569 <li><a href="#tag_DEPTH">DEPTH</a></li> 12570 </ul> 12571 </td> 12572 12573 </tr> 12574 <tr class="entries_header"> 12575 <th class="th_details" colspan="5">Details</th> 12576 </tr> 12577 <tr class="entry_cont"> 12578 <td class="entry_details" colspan="5"> 12579 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 12580kappa_<wbr/>3]</code> and two tangential distortion coefficients 12581<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 12582lens's geometric distortion with the mapping equations:</p> 12583<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 ) + 12584 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 12585 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 12586 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 12587</code></pre> 12588<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 12589input image that correspond to the pixel values in the 12590corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 12591<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 12592</code></pre> 12593<p>The pixel coordinates are defined in a normalized 12594coordinate system related to the 12595<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 12596Both <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 12597lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 12598of both x and y coordinates are normalized to be 1 at the 12599edge further from the optical center,<wbr/> so the range 12600for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 12601<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 12602optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 12603is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 12604<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 12605 </td> 12606 </tr> 12607 12608 12609 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12610 <!-- end of entry --> 12611 12612 12613 12614 <!-- end of kind --> 12615 </tbody> 12616 <tr><td colspan="6" class="kind">dynamic</td></tr> 12617 12618 <thead class="entries_header"> 12619 <tr> 12620 <th class="th_name">Property Name</th> 12621 <th class="th_type">Type</th> 12622 <th class="th_description">Description</th> 12623 <th class="th_units">Units</th> 12624 <th class="th_range">Range</th> 12625 <th class="th_tags">Tags</th> 12626 </tr> 12627 </thead> 12628 12629 <tbody> 12630 12631 12632 12633 12634 12635 12636 12637 12638 12639 12640 <tr class="entry" id="dynamic_android.lens.aperture"> 12641 <td class="entry_name 12642 " rowspan="3"> 12643 android.<wbr/>lens.<wbr/>aperture 12644 </td> 12645 <td class="entry_type"> 12646 <span class="entry_type_name">float</span> 12647 12648 <span class="entry_type_visibility"> [public]</span> 12649 12650 12651 <span class="entry_type_hwlevel">[full] </span> 12652 12653 12654 12655 12656 </td> <!-- entry_type --> 12657 12658 <td class="entry_description"> 12659 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 12660effective aperture diameter.<wbr/></p> 12661 </td> 12662 12663 <td class="entry_units"> 12664 The f-number (f/<wbr/>N) 12665 </td> 12666 12667 <td class="entry_range"> 12668 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 12669 </td> 12670 12671 <td class="entry_tags"> 12672 <ul class="entry_tags"> 12673 <li><a href="#tag_V1">V1</a></li> 12674 </ul> 12675 </td> 12676 12677 </tr> 12678 <tr class="entries_header"> 12679 <th class="th_details" colspan="5">Details</th> 12680 </tr> 12681 <tr class="entry_cont"> 12682 <td class="entry_details" colspan="5"> 12683 <p>Setting this value is only supported on the camera devices that have a variable 12684aperture lens.<wbr/></p> 12685<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 12686this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 12687<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> 12688to achieve manual exposure control.<wbr/></p> 12689<p>The requested aperture value may take several frames to reach the 12690requested value; the camera device will report the current (intermediate) 12691aperture size in capture result metadata while the aperture is changing.<wbr/> 12692While 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> 12693<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 12694the ON modes,<wbr/> this will be overridden by the camera device 12695auto-exposure algorithm,<wbr/> the overridden values are then provided 12696back to the user in the corresponding result.<wbr/></p> 12697 </td> 12698 </tr> 12699 12700 12701 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12702 <!-- end of entry --> 12703 12704 12705 <tr class="entry" id="dynamic_android.lens.filterDensity"> 12706 <td class="entry_name 12707 " rowspan="3"> 12708 android.<wbr/>lens.<wbr/>filter<wbr/>Density 12709 </td> 12710 <td class="entry_type"> 12711 <span class="entry_type_name">float</span> 12712 12713 <span class="entry_type_visibility"> [public]</span> 12714 12715 12716 <span class="entry_type_hwlevel">[full] </span> 12717 12718 12719 12720 12721 </td> <!-- entry_type --> 12722 12723 <td class="entry_description"> 12724 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 12725 </td> 12726 12727 <td class="entry_units"> 12728 Exposure Value (EV) 12729 </td> 12730 12731 <td class="entry_range"> 12732 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 12733 </td> 12734 12735 <td class="entry_tags"> 12736 <ul class="entry_tags"> 12737 <li><a href="#tag_V1">V1</a></li> 12738 </ul> 12739 </td> 12740 12741 </tr> 12742 <tr class="entries_header"> 12743 <th class="th_details" colspan="5">Details</th> 12744 </tr> 12745 <tr class="entry_cont"> 12746 <td class="entry_details" colspan="5"> 12747 <p>This control will not be supported on most camera devices.<wbr/></p> 12748<p>Lens filters are typically used to lower the amount of light the 12749sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 12750step is the standard logarithmic representation,<wbr/> which are 12751non-negative,<wbr/> and inversely proportional to the amount of light 12752hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 12753in no reduction of the incoming light,<wbr/> and setting this to 2 would 12754mean that the filter is set to reduce incoming light by two stops 12755(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 12756<p>It may take several frames before the lens filter density changes 12757to the requested value.<wbr/> While the filter density is still changing,<wbr/> 12758<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 12759 </td> 12760 </tr> 12761 12762 12763 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12764 <!-- end of entry --> 12765 12766 12767 <tr class="entry" id="dynamic_android.lens.focalLength"> 12768 <td class="entry_name 12769 " rowspan="3"> 12770 android.<wbr/>lens.<wbr/>focal<wbr/>Length 12771 </td> 12772 <td class="entry_type"> 12773 <span class="entry_type_name">float</span> 12774 12775 <span class="entry_type_visibility"> [public]</span> 12776 12777 12778 <span class="entry_type_hwlevel">[legacy] </span> 12779 12780 12781 12782 12783 </td> <!-- entry_type --> 12784 12785 <td class="entry_description"> 12786 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 12787 </td> 12788 12789 <td class="entry_units"> 12790 Millimeters 12791 </td> 12792 12793 <td class="entry_range"> 12794 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 12795 </td> 12796 12797 <td class="entry_tags"> 12798 <ul class="entry_tags"> 12799 <li><a href="#tag_BC">BC</a></li> 12800 </ul> 12801 </td> 12802 12803 </tr> 12804 <tr class="entries_header"> 12805 <th class="th_details" colspan="5">Details</th> 12806 </tr> 12807 <tr class="entry_cont"> 12808 <td class="entry_details" colspan="5"> 12809 <p>This setting controls the physical focal length of the camera 12810device's lens.<wbr/> Changing the focal length changes the field of 12811view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 12812<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 12813setting won't be applied instantaneously,<wbr/> and it may take several 12814frames before the lens can change to the requested focal length.<wbr/> 12815While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 12816be set to MOVING.<wbr/></p> 12817<p>Optical zoom will not be supported on most devices.<wbr/></p> 12818 </td> 12819 </tr> 12820 12821 12822 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12823 <!-- end of entry --> 12824 12825 12826 <tr class="entry" id="dynamic_android.lens.focusDistance"> 12827 <td class="entry_name 12828 " rowspan="3"> 12829 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 12830 </td> 12831 <td class="entry_type"> 12832 <span class="entry_type_name">float</span> 12833 12834 <span class="entry_type_visibility"> [public]</span> 12835 12836 12837 <span class="entry_type_hwlevel">[full] </span> 12838 12839 12840 12841 12842 </td> <!-- entry_type --> 12843 12844 <td class="entry_description"> 12845 <p>Desired distance to plane of sharpest focus,<wbr/> 12846measured from frontmost surface of the lens.<wbr/></p> 12847 </td> 12848 12849 <td class="entry_units"> 12850 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 12851 </td> 12852 12853 <td class="entry_range"> 12854 <p>>= 0</p> 12855 </td> 12856 12857 <td class="entry_tags"> 12858 <ul class="entry_tags"> 12859 <li><a href="#tag_BC">BC</a></li> 12860 </ul> 12861 </td> 12862 12863 </tr> 12864 <tr class="entries_header"> 12865 <th class="th_details" colspan="5">Details</th> 12866 </tr> 12867 <tr class="entry_cont"> 12868 <td class="entry_details" colspan="5"> 12869 <p>Should be zero for fixed-focus cameras</p> 12870 </td> 12871 </tr> 12872 12873 12874 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12875 <!-- end of entry --> 12876 12877 12878 <tr class="entry" id="dynamic_android.lens.focusRange"> 12879 <td class="entry_name 12880 " rowspan="3"> 12881 android.<wbr/>lens.<wbr/>focus<wbr/>Range 12882 </td> 12883 <td class="entry_type"> 12884 <span class="entry_type_name">float</span> 12885 <span class="entry_type_container">x</span> 12886 12887 <span class="entry_type_array"> 12888 2 12889 </span> 12890 <span class="entry_type_visibility"> [public as pairFloatFloat]</span> 12891 12892 12893 <span class="entry_type_hwlevel">[limited] </span> 12894 12895 12896 <div class="entry_type_notes">Range of scene distances that are in focus</div> 12897 12898 12899 </td> <!-- entry_type --> 12900 12901 <td class="entry_description"> 12902 <p>The range of scene distances that are in 12903sharp focus (depth of field).<wbr/></p> 12904 </td> 12905 12906 <td class="entry_units"> 12907 A pair of focus distances in diopters: (near,<wbr/> 12908 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 12909 </td> 12910 12911 <td class="entry_range"> 12912 <p>>=0</p> 12913 </td> 12914 12915 <td class="entry_tags"> 12916 <ul class="entry_tags"> 12917 <li><a href="#tag_BC">BC</a></li> 12918 </ul> 12919 </td> 12920 12921 </tr> 12922 <tr class="entries_header"> 12923 <th class="th_details" colspan="5">Details</th> 12924 </tr> 12925 <tr class="entry_cont"> 12926 <td class="entry_details" colspan="5"> 12927 <p>If variable focus not supported,<wbr/> can still report 12928fixed depth of field range</p> 12929 </td> 12930 </tr> 12931 12932 12933 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12934 <!-- end of entry --> 12935 12936 12937 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode"> 12938 <td class="entry_name 12939 " rowspan="3"> 12940 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 12941 </td> 12942 <td class="entry_type"> 12943 <span class="entry_type_name entry_type_name_enum">byte</span> 12944 12945 <span class="entry_type_visibility"> [public]</span> 12946 12947 12948 <span class="entry_type_hwlevel">[limited] </span> 12949 12950 12951 12952 <ul class="entry_type_enum"> 12953 <li> 12954 <span class="entry_type_enum_name">OFF</span> 12955 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 12956 </li> 12957 <li> 12958 <span class="entry_type_enum_name">ON</span> 12959 <span class="entry_type_enum_optional">[optional]</span> 12960 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 12961 </li> 12962 </ul> 12963 12964 </td> <!-- entry_type --> 12965 12966 <td class="entry_description"> 12967 <p>Sets whether the camera device uses optical image stabilization (OIS) 12968when capturing images.<wbr/></p> 12969 </td> 12970 12971 <td class="entry_units"> 12972 </td> 12973 12974 <td class="entry_range"> 12975 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 12976 </td> 12977 12978 <td class="entry_tags"> 12979 <ul class="entry_tags"> 12980 <li><a href="#tag_V1">V1</a></li> 12981 </ul> 12982 </td> 12983 12984 </tr> 12985 <tr class="entries_header"> 12986 <th class="th_details" colspan="5">Details</th> 12987 </tr> 12988 <tr class="entry_cont"> 12989 <td class="entry_details" colspan="5"> 12990 <p>OIS is used to compensate for motion blur due to small 12991movements of the camera during capture.<wbr/> Unlike digital image 12992stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 12993makes use of mechanical elements to stabilize the camera 12994sensor,<wbr/> and thus allows for longer exposure times before 12995camera shake becomes apparent.<wbr/></p> 12996<p>Switching between different optical stabilization modes may take several 12997frames to initialize,<wbr/> the camera device will report the current mode in 12998capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 12999optical stabilization modes in the first several capture results may still 13000be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 13001<p>If a camera device supports both OIS and digital image stabilization 13002(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 13003interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 13004<p>Not all devices will support OIS; see 13005<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 13006available controls.<wbr/></p> 13007 </td> 13008 </tr> 13009 13010 13011 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13012 <!-- end of entry --> 13013 13014 13015 <tr class="entry" id="dynamic_android.lens.state"> 13016 <td class="entry_name 13017 " rowspan="3"> 13018 android.<wbr/>lens.<wbr/>state 13019 </td> 13020 <td class="entry_type"> 13021 <span class="entry_type_name entry_type_name_enum">byte</span> 13022 13023 <span class="entry_type_visibility"> [public]</span> 13024 13025 13026 <span class="entry_type_hwlevel">[limited] </span> 13027 13028 13029 13030 <ul class="entry_type_enum"> 13031 <li> 13032 <span class="entry_type_enum_name">STATIONARY</span> 13033 <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/> 13034<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> 13035 </li> 13036 <li> 13037 <span class="entry_type_enum_name">MOVING</span> 13038 <span class="entry_type_enum_notes"><p>One or several of the lens parameters 13039(<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/> 13040<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 13041currently changing.<wbr/></p></span> 13042 </li> 13043 </ul> 13044 13045 </td> <!-- entry_type --> 13046 13047 <td class="entry_description"> 13048 <p>Current lens status.<wbr/></p> 13049 </td> 13050 13051 <td class="entry_units"> 13052 </td> 13053 13054 <td class="entry_range"> 13055 </td> 13056 13057 <td class="entry_tags"> 13058 <ul class="entry_tags"> 13059 <li><a href="#tag_V1">V1</a></li> 13060 </ul> 13061 </td> 13062 13063 </tr> 13064 <tr class="entries_header"> 13065 <th class="th_details" colspan="5">Details</th> 13066 </tr> 13067 <tr class="entry_cont"> 13068 <td class="entry_details" colspan="5"> 13069 <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/> 13070<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/> 13071they may take several frames to reach the requested values.<wbr/> This state indicates 13072the current status of the lens parameters.<wbr/></p> 13073<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be 13074either because the parameters are all fixed,<wbr/> or because the lens has had enough 13075time to reach the most recently-requested values.<wbr/> 13076If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p> 13077<ul> 13078<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 13079<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li> 13080<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/> 13081which means the optical zoom is not supported.<wbr/></li> 13082<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> 13083<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> 13084</ul> 13085<p>Then this state will always be STATIONARY.<wbr/></p> 13086<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters 13087is changing.<wbr/></p> 13088 </td> 13089 </tr> 13090 13091 13092 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13093 <!-- end of entry --> 13094 13095 13096 <tr class="entry" id="dynamic_android.lens.poseRotation"> 13097 <td class="entry_name 13098 " rowspan="3"> 13099 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 13100 </td> 13101 <td class="entry_type"> 13102 <span class="entry_type_name">float</span> 13103 <span class="entry_type_container">x</span> 13104 13105 <span class="entry_type_array"> 13106 4 13107 </span> 13108 <span class="entry_type_visibility"> [public]</span> 13109 13110 13111 13112 13113 13114 13115 </td> <!-- entry_type --> 13116 13117 <td class="entry_description"> 13118 <p>The orientation of the camera relative to the sensor 13119coordinate system.<wbr/></p> 13120 </td> 13121 13122 <td class="entry_units"> 13123 13124 Quaternion coefficients 13125 13126 </td> 13127 13128 <td class="entry_range"> 13129 </td> 13130 13131 <td class="entry_tags"> 13132 <ul class="entry_tags"> 13133 <li><a href="#tag_DEPTH">DEPTH</a></li> 13134 </ul> 13135 </td> 13136 13137 </tr> 13138 <tr class="entries_header"> 13139 <th class="th_details" colspan="5">Details</th> 13140 </tr> 13141 <tr class="entry_cont"> 13142 <td class="entry_details" colspan="5"> 13143 <p>The four coefficients that describe the quaternion 13144rotation from the Android sensor coordinate system to a 13145camera-aligned coordinate system where the X-axis is 13146aligned with the long side of the image sensor,<wbr/> the Y-axis 13147is aligned with the short side of the image sensor,<wbr/> and 13148the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 13149<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 13150to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 13151amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 13152<pre><code> theta = 2 * acos(w) 13153a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 13154a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 13155a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 13156</code></pre> 13157<p>To create a 3x3 rotation matrix that applies the rotation 13158defined by this quaternion,<wbr/> the following matrix can be 13159used:</p> 13160<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 13161 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 13162 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 13163</code></pre> 13164<p>This matrix can then be used to apply the rotation to a 13165 column vector point with</p> 13166<p><code>p' = Rp</code></p> 13167<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 13168 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 13169 </td> 13170 </tr> 13171 13172 13173 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13174 <!-- end of entry --> 13175 13176 13177 <tr class="entry" id="dynamic_android.lens.poseTranslation"> 13178 <td class="entry_name 13179 " rowspan="3"> 13180 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 13181 </td> 13182 <td class="entry_type"> 13183 <span class="entry_type_name">float</span> 13184 <span class="entry_type_container">x</span> 13185 13186 <span class="entry_type_array"> 13187 3 13188 </span> 13189 <span class="entry_type_visibility"> [public]</span> 13190 13191 13192 13193 13194 13195 13196 </td> <!-- entry_type --> 13197 13198 <td class="entry_description"> 13199 <p>Position of the camera optical center.<wbr/></p> 13200 </td> 13201 13202 <td class="entry_units"> 13203 Meters 13204 </td> 13205 13206 <td class="entry_range"> 13207 </td> 13208 13209 <td class="entry_tags"> 13210 <ul class="entry_tags"> 13211 <li><a href="#tag_DEPTH">DEPTH</a></li> 13212 </ul> 13213 </td> 13214 13215 </tr> 13216 <tr class="entries_header"> 13217 <th class="th_details" colspan="5">Details</th> 13218 </tr> 13219 <tr class="entry_cont"> 13220 <td class="entry_details" colspan="5"> 13221 <p>The position of the camera device's lens optical center,<wbr/> 13222as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the 13223optical center of the largest camera device facing in the 13224same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate 13225axes</a>.<wbr/> Note that only the axis definitions are shared with 13226the sensor coordinate system,<wbr/> but not the origin.<wbr/></p> 13227<p>If this device is the largest or only camera device with a 13228given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a 13229camera device with a lens optical center located 3 cm from 13230the main sensor along the +X axis (to the right from the 13231user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> 13232<p>To transform a pixel coordinates between two cameras 13233facing the same direction,<wbr/> first the source camera 13234<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then 13235the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs 13236to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> 13237of the source camera,<wbr/> the translation of the source camera 13238relative to the destination camera,<wbr/> the 13239<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and 13240finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 13241of the destination camera.<wbr/> This obtains a 13242radial-distortion-free coordinate in the destination 13243camera pixel coordinates.<wbr/></p> 13244<p>To compare this against a real image from the destination 13245camera,<wbr/> the destination camera image then needs to be 13246corrected for radial distortion before comparison or 13247sampling.<wbr/></p> 13248 </td> 13249 </tr> 13250 13251 13252 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13253 <!-- end of entry --> 13254 13255 13256 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration"> 13257 <td class="entry_name 13258 " rowspan="3"> 13259 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 13260 </td> 13261 <td class="entry_type"> 13262 <span class="entry_type_name">float</span> 13263 <span class="entry_type_container">x</span> 13264 13265 <span class="entry_type_array"> 13266 5 13267 </span> 13268 <span class="entry_type_visibility"> [public]</span> 13269 13270 13271 13272 13273 13274 13275 </td> <!-- entry_type --> 13276 13277 <td class="entry_description"> 13278 <p>The parameters for this camera device's intrinsic 13279calibration.<wbr/></p> 13280 </td> 13281 13282 <td class="entry_units"> 13283 13284 Pixels in the 13285 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 13286 coordinate system.<wbr/> 13287 13288 </td> 13289 13290 <td class="entry_range"> 13291 </td> 13292 13293 <td class="entry_tags"> 13294 <ul class="entry_tags"> 13295 <li><a href="#tag_DEPTH">DEPTH</a></li> 13296 </ul> 13297 </td> 13298 13299 </tr> 13300 <tr class="entries_header"> 13301 <th class="th_details" colspan="5">Details</th> 13302 </tr> 13303 <tr class="entry_cont"> 13304 <td class="entry_details" colspan="5"> 13305 <p>The five calibration parameters that describe the 13306transform from camera-centric 3D coordinates to sensor 13307pixel coordinates:</p> 13308<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 13309</code></pre> 13310<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 13311focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 13312axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 13313being aligned with the lens plane.<wbr/></p> 13314<p>These are typically used within a transformation matrix K:</p> 13315<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 13316 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 13317 0 0,<wbr/> 1 ] 13318</code></pre> 13319<p>which can then be combined with the camera pose rotation 13320<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 13321<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the 13322complete transform from world coordinates to pixel 13323coordinates:</p> 13324<pre><code>P = [ K 0 * [ R t 13325 0 1 ] 0 1 ] 13326</code></pre> 13327<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system 13328and <code>p_<wbr/>s</code> being a point in the camera active pixel array 13329coordinate system,<wbr/> and with the mapping including the 13330homogeneous division by z:</p> 13331<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 13332p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 13333</code></pre> 13334<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 13335point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 13336(depth) in pixel coordinates.<wbr/></p> 13337<p>Note that the coordinate system for this transform is the 13338<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/> 13339where <code>(0,<wbr/>0)</code> is the top-left of the 13340preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 13341intrinsic calibration transforms have been applied to a 13342world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> 13343transform needs to be applied,<wbr/> and the result adjusted to 13344be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 13345system (where <code>(0,<wbr/> 0)</code> is the top-left of the 13346activeArraySize rectangle),<wbr/> to determine the final pixel 13347coordinate of the world point for processed (non-RAW) 13348output buffers.<wbr/></p> 13349 </td> 13350 </tr> 13351 13352 13353 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13354 <!-- end of entry --> 13355 13356 13357 <tr class="entry" id="dynamic_android.lens.radialDistortion"> 13358 <td class="entry_name 13359 " rowspan="3"> 13360 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 13361 </td> 13362 <td class="entry_type"> 13363 <span class="entry_type_name">float</span> 13364 <span class="entry_type_container">x</span> 13365 13366 <span class="entry_type_array"> 13367 6 13368 </span> 13369 <span class="entry_type_visibility"> [public]</span> 13370 13371 13372 13373 13374 13375 13376 </td> <!-- entry_type --> 13377 13378 <td class="entry_description"> 13379 <p>The correction coefficients to correct for this camera device's 13380radial and tangential lens distortion.<wbr/></p> 13381 </td> 13382 13383 <td class="entry_units"> 13384 13385 Unitless coefficients.<wbr/> 13386 13387 </td> 13388 13389 <td class="entry_range"> 13390 </td> 13391 13392 <td class="entry_tags"> 13393 <ul class="entry_tags"> 13394 <li><a href="#tag_DEPTH">DEPTH</a></li> 13395 </ul> 13396 </td> 13397 13398 </tr> 13399 <tr class="entries_header"> 13400 <th class="th_details" colspan="5">Details</th> 13401 </tr> 13402 <tr class="entry_cont"> 13403 <td class="entry_details" colspan="5"> 13404 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 13405kappa_<wbr/>3]</code> and two tangential distortion coefficients 13406<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 13407lens's geometric distortion with the mapping equations:</p> 13408<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 ) + 13409 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 13410 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 13411 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 13412</code></pre> 13413<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 13414input image that correspond to the pixel values in the 13415corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 13416<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 13417</code></pre> 13418<p>The pixel coordinates are defined in a normalized 13419coordinate system related to the 13420<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 13421Both <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 13422lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 13423of both x and y coordinates are normalized to be 1 at the 13424edge further from the optical center,<wbr/> so the range 13425for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 13426<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 13427optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 13428is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 13429<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 13430 </td> 13431 </tr> 13432 13433 13434 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13435 <!-- end of entry --> 13436 13437 13438 13439 <!-- end of kind --> 13440 </tbody> 13441 13442 <!-- end of section --> 13443 <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr> 13444 13445 13446 <tr><td colspan="6" class="kind">controls</td></tr> 13447 13448 <thead class="entries_header"> 13449 <tr> 13450 <th class="th_name">Property Name</th> 13451 <th class="th_type">Type</th> 13452 <th class="th_description">Description</th> 13453 <th class="th_units">Units</th> 13454 <th class="th_range">Range</th> 13455 <th class="th_tags">Tags</th> 13456 </tr> 13457 </thead> 13458 13459 <tbody> 13460 13461 13462 13463 13464 13465 13466 13467 13468 13469 13470 <tr class="entry" id="controls_android.noiseReduction.mode"> 13471 <td class="entry_name 13472 " rowspan="5"> 13473 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 13474 </td> 13475 <td class="entry_type"> 13476 <span class="entry_type_name entry_type_name_enum">byte</span> 13477 13478 <span class="entry_type_visibility"> [public]</span> 13479 13480 13481 <span class="entry_type_hwlevel">[full] </span> 13482 13483 13484 13485 <ul class="entry_type_enum"> 13486 <li> 13487 <span class="entry_type_enum_name">OFF</span> 13488 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 13489 </li> 13490 <li> 13491 <span class="entry_type_enum_name">FAST</span> 13492 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 13493output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 13494relative to sensor.<wbr/></p></span> 13495 </li> 13496 <li> 13497 <span class="entry_type_enum_name">HIGH_QUALITY</span> 13498 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 13499rate relative to sensor output.<wbr/></p></span> 13500 </li> 13501 <li> 13502 <span class="entry_type_enum_name">MINIMAL</span> 13503 <span class="entry_type_enum_optional">[optional]</span> 13504 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 13505sensor output.<wbr/> </p></span> 13506 </li> 13507 <li> 13508 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 13509 <span class="entry_type_enum_optional">[optional]</span> 13510 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 13511based 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 13512reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no 13513noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction 13514for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality 13515is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/> 13516quality may improve from FAST).<wbr/></p> 13517<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 13518with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 13519high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 13520produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 13521high-resolution buffers must not have noise reduction applied to maximize efficiency of 13522preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 13523low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 13524applied for reasonable preview quality.<wbr/></p> 13525<p>This mode is guaranteed to be supported by devices that support either the 13526YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 13527(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 13528be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 13529 </li> 13530 </ul> 13531 13532 </td> <!-- entry_type --> 13533 13534 <td class="entry_description"> 13535 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 13536 </td> 13537 13538 <td class="entry_units"> 13539 </td> 13540 13541 <td class="entry_range"> 13542 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 13543 </td> 13544 13545 <td class="entry_tags"> 13546 <ul class="entry_tags"> 13547 <li><a href="#tag_V1">V1</a></li> 13548 <li><a href="#tag_REPROC">REPROC</a></li> 13549 </ul> 13550 </td> 13551 13552 </tr> 13553 <tr class="entries_header"> 13554 <th class="th_details" colspan="5">Details</th> 13555 </tr> 13556 <tr class="entry_cont"> 13557 <td class="entry_details" colspan="5"> 13558 <p>The noise reduction algorithm attempts to improve image quality by removing 13559excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 13560<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 13561YUV domain.<wbr/></p> 13562<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 13563demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 13564This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 13565<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> 13566<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 13567will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 13568will use the highest-quality noise filtering algorithms,<wbr/> 13569even if it slows down capture rate.<wbr/> FAST means the camera device will not 13570slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 13571MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 13572Every output stream will have a similar amount of enhancement applied.<wbr/></p> 13573<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 13574buffer of high-resolution images during preview and reprocess image(s) from that buffer 13575into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 13576noise reduction to low-resolution streams (below maximum recording resolution) to maximize 13577preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 13578those will be reprocessed later if necessary.<wbr/></p> 13579<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 13580will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 13581may adjust the noise reduction parameters for best image quality based on the 13582<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 13583 </td> 13584 </tr> 13585 13586 <tr class="entries_header"> 13587 <th class="th_details" colspan="5">HAL Implementation Details</th> 13588 </tr> 13589 <tr class="entry_cont"> 13590 <td class="entry_details" colspan="5"> 13591 <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 13592adjust the internal noise reduction parameters appropriately to get the best quality 13593images.<wbr/></p> 13594 </td> 13595 </tr> 13596 13597 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13598 <!-- end of entry --> 13599 13600 13601 <tr class="entry" id="controls_android.noiseReduction.strength"> 13602 <td class="entry_name 13603 " rowspan="1"> 13604 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength 13605 </td> 13606 <td class="entry_type"> 13607 <span class="entry_type_name">byte</span> 13608 13609 <span class="entry_type_visibility"> [system]</span> 13610 13611 13612 13613 13614 13615 13616 </td> <!-- entry_type --> 13617 13618 <td class="entry_description"> 13619 <p>Control the amount of noise reduction 13620applied to the images</p> 13621 </td> 13622 13623 <td class="entry_units"> 13624 1-10; 10 is max noise reduction 13625 </td> 13626 13627 <td class="entry_range"> 13628 <p>1 - 10</p> 13629 </td> 13630 13631 <td class="entry_tags"> 13632 <ul class="entry_tags"> 13633 <li><a href="#tag_FUTURE">FUTURE</a></li> 13634 </ul> 13635 </td> 13636 13637 </tr> 13638 13639 13640 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13641 <!-- end of entry --> 13642 13643 13644 13645 <!-- end of kind --> 13646 </tbody> 13647 <tr><td colspan="6" class="kind">static</td></tr> 13648 13649 <thead class="entries_header"> 13650 <tr> 13651 <th class="th_name">Property Name</th> 13652 <th class="th_type">Type</th> 13653 <th class="th_description">Description</th> 13654 <th class="th_units">Units</th> 13655 <th class="th_range">Range</th> 13656 <th class="th_tags">Tags</th> 13657 </tr> 13658 </thead> 13659 13660 <tbody> 13661 13662 13663 13664 13665 13666 13667 13668 13669 13670 13671 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes"> 13672 <td class="entry_name 13673 " rowspan="5"> 13674 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes 13675 </td> 13676 <td class="entry_type"> 13677 <span class="entry_type_name">byte</span> 13678 <span class="entry_type_container">x</span> 13679 13680 <span class="entry_type_array"> 13681 n 13682 </span> 13683 <span class="entry_type_visibility"> [public as enumList]</span> 13684 13685 13686 <span class="entry_type_hwlevel">[limited] </span> 13687 13688 13689 <div class="entry_type_notes">list of enums</div> 13690 13691 13692 </td> <!-- entry_type --> 13693 13694 <td class="entry_description"> 13695 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported 13696by this camera device.<wbr/></p> 13697 </td> 13698 13699 <td class="entry_units"> 13700 </td> 13701 13702 <td class="entry_range"> 13703 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p> 13704 </td> 13705 13706 <td class="entry_tags"> 13707 <ul class="entry_tags"> 13708 <li><a href="#tag_V1">V1</a></li> 13709 <li><a href="#tag_REPROC">REPROC</a></li> 13710 </ul> 13711 </td> 13712 13713 </tr> 13714 <tr class="entries_header"> 13715 <th class="th_details" colspan="5">Details</th> 13716 </tr> 13717 <tr class="entry_cont"> 13718 <td class="entry_details" colspan="5"> 13719 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p> 13720<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support 13721ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p> 13722<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p> 13723 </td> 13724 </tr> 13725 13726 <tr class="entries_header"> 13727 <th class="th_details" colspan="5">HAL Implementation Details</th> 13728 </tr> 13729 <tr class="entry_cont"> 13730 <td class="entry_details" colspan="5"> 13731 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available 13732on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 13733That is,<wbr/> if the highest quality implementation on the camera device does not slow down 13734capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 13735 </td> 13736 </tr> 13737 13738 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13739 <!-- end of entry --> 13740 13741 13742 13743 <!-- end of kind --> 13744 </tbody> 13745 <tr><td colspan="6" class="kind">dynamic</td></tr> 13746 13747 <thead class="entries_header"> 13748 <tr> 13749 <th class="th_name">Property Name</th> 13750 <th class="th_type">Type</th> 13751 <th class="th_description">Description</th> 13752 <th class="th_units">Units</th> 13753 <th class="th_range">Range</th> 13754 <th class="th_tags">Tags</th> 13755 </tr> 13756 </thead> 13757 13758 <tbody> 13759 13760 13761 13762 13763 13764 13765 13766 13767 13768 13769 <tr class="entry" id="dynamic_android.noiseReduction.mode"> 13770 <td class="entry_name 13771 " rowspan="5"> 13772 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 13773 </td> 13774 <td class="entry_type"> 13775 <span class="entry_type_name entry_type_name_enum">byte</span> 13776 13777 <span class="entry_type_visibility"> [public]</span> 13778 13779 13780 <span class="entry_type_hwlevel">[full] </span> 13781 13782 13783 13784 <ul class="entry_type_enum"> 13785 <li> 13786 <span class="entry_type_enum_name">OFF</span> 13787 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 13788 </li> 13789 <li> 13790 <span class="entry_type_enum_name">FAST</span> 13791 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 13792output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 13793relative to sensor.<wbr/></p></span> 13794 </li> 13795 <li> 13796 <span class="entry_type_enum_name">HIGH_QUALITY</span> 13797 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 13798rate relative to sensor output.<wbr/></p></span> 13799 </li> 13800 <li> 13801 <span class="entry_type_enum_name">MINIMAL</span> 13802 <span class="entry_type_enum_optional">[optional]</span> 13803 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 13804sensor output.<wbr/> </p></span> 13805 </li> 13806 <li> 13807 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 13808 <span class="entry_type_enum_optional">[optional]</span> 13809 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 13810based 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 13811reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no 13812noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction 13813for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality 13814is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/> 13815quality may improve from FAST).<wbr/></p> 13816<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 13817with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 13818high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 13819produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 13820high-resolution buffers must not have noise reduction applied to maximize efficiency of 13821preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 13822low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 13823applied for reasonable preview quality.<wbr/></p> 13824<p>This mode is guaranteed to be supported by devices that support either the 13825YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 13826(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 13827be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 13828 </li> 13829 </ul> 13830 13831 </td> <!-- entry_type --> 13832 13833 <td class="entry_description"> 13834 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 13835 </td> 13836 13837 <td class="entry_units"> 13838 </td> 13839 13840 <td class="entry_range"> 13841 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 13842 </td> 13843 13844 <td class="entry_tags"> 13845 <ul class="entry_tags"> 13846 <li><a href="#tag_V1">V1</a></li> 13847 <li><a href="#tag_REPROC">REPROC</a></li> 13848 </ul> 13849 </td> 13850 13851 </tr> 13852 <tr class="entries_header"> 13853 <th class="th_details" colspan="5">Details</th> 13854 </tr> 13855 <tr class="entry_cont"> 13856 <td class="entry_details" colspan="5"> 13857 <p>The noise reduction algorithm attempts to improve image quality by removing 13858excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 13859<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 13860YUV domain.<wbr/></p> 13861<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 13862demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 13863This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 13864<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> 13865<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 13866will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 13867will use the highest-quality noise filtering algorithms,<wbr/> 13868even if it slows down capture rate.<wbr/> FAST means the camera device will not 13869slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 13870MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 13871Every output stream will have a similar amount of enhancement applied.<wbr/></p> 13872<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 13873buffer of high-resolution images during preview and reprocess image(s) from that buffer 13874into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 13875noise reduction to low-resolution streams (below maximum recording resolution) to maximize 13876preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 13877those will be reprocessed later if necessary.<wbr/></p> 13878<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 13879will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 13880may adjust the noise reduction parameters for best image quality based on the 13881<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 13882 </td> 13883 </tr> 13884 13885 <tr class="entries_header"> 13886 <th class="th_details" colspan="5">HAL Implementation Details</th> 13887 </tr> 13888 <tr class="entry_cont"> 13889 <td class="entry_details" colspan="5"> 13890 <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 13891adjust the internal noise reduction parameters appropriately to get the best quality 13892images.<wbr/></p> 13893 </td> 13894 </tr> 13895 13896 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13897 <!-- end of entry --> 13898 13899 13900 13901 <!-- end of kind --> 13902 </tbody> 13903 13904 <!-- end of section --> 13905 <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr> 13906 13907 13908 <tr><td colspan="6" class="kind">static</td></tr> 13909 13910 <thead class="entries_header"> 13911 <tr> 13912 <th class="th_name">Property Name</th> 13913 <th class="th_type">Type</th> 13914 <th class="th_description">Description</th> 13915 <th class="th_units">Units</th> 13916 <th class="th_range">Range</th> 13917 <th class="th_tags">Tags</th> 13918 </tr> 13919 </thead> 13920 13921 <tbody> 13922 13923 13924 13925 13926 13927 13928 13929 13930 13931 13932 <tr class="entry" id="static_android.quirks.meteringCropRegion"> 13933 <td class="entry_name 13934 entry_name_deprecated 13935 " rowspan="3"> 13936 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region 13937 </td> 13938 <td class="entry_type"> 13939 <span class="entry_type_name">byte</span> 13940 13941 <span class="entry_type_visibility"> [system]</span> 13942 13943 13944 13945 <span class="entry_type_deprecated">[deprecated] </span> 13946 13947 13948 13949 </td> <!-- entry_type --> 13950 13951 <td class="entry_description"> 13952 <p>If set to 1,<wbr/> the camera service does not 13953scale 'normalized' coordinates with respect to the crop 13954region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region 13955and output (face rectangles).<wbr/></p> 13956 </td> 13957 13958 <td class="entry_units"> 13959 </td> 13960 13961 <td class="entry_range"> 13962 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 13963 </td> 13964 13965 <td class="entry_tags"> 13966 </td> 13967 13968 </tr> 13969 <tr class="entries_header"> 13970 <th class="th_details" colspan="5">Details</th> 13971 </tr> 13972 <tr class="entry_cont"> 13973 <td class="entry_details" colspan="5"> 13974 <p>Normalized coordinates refer to those in the 13975(-1000,<wbr/>1000) range mentioned in the 13976android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 13977<p>HAL implementations should instead always use and emit 13978sensor array-relative coordinates for all region data.<wbr/> Does 13979not need to be listed in static metadata.<wbr/> Support will be 13980removed in future versions of camera service.<wbr/></p> 13981 </td> 13982 </tr> 13983 13984 13985 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13986 <!-- end of entry --> 13987 13988 13989 <tr class="entry" id="static_android.quirks.triggerAfWithAuto"> 13990 <td class="entry_name 13991 entry_name_deprecated 13992 " rowspan="3"> 13993 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto 13994 </td> 13995 <td class="entry_type"> 13996 <span class="entry_type_name">byte</span> 13997 13998 <span class="entry_type_visibility"> [system]</span> 13999 14000 14001 14002 <span class="entry_type_deprecated">[deprecated] </span> 14003 14004 14005 14006 </td> <!-- entry_type --> 14007 14008 <td class="entry_description"> 14009 <p>If set to 1,<wbr/> then the camera service always 14010switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF 14011trigger.<wbr/></p> 14012 </td> 14013 14014 <td class="entry_units"> 14015 </td> 14016 14017 <td class="entry_range"> 14018 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14019 </td> 14020 14021 <td class="entry_tags"> 14022 </td> 14023 14024 </tr> 14025 <tr class="entries_header"> 14026 <th class="th_details" colspan="5">Details</th> 14027 </tr> 14028 <tr class="entry_cont"> 14029 <td class="entry_details" colspan="5"> 14030 <p>HAL implementations should implement AF trigger 14031modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and 14032CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does 14033not need to be listed in static metadata.<wbr/> Support will be 14034removed in future versions of camera service</p> 14035 </td> 14036 </tr> 14037 14038 14039 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14040 <!-- end of entry --> 14041 14042 14043 <tr class="entry" id="static_android.quirks.useZslFormat"> 14044 <td class="entry_name 14045 entry_name_deprecated 14046 " rowspan="3"> 14047 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format 14048 </td> 14049 <td class="entry_type"> 14050 <span class="entry_type_name">byte</span> 14051 14052 <span class="entry_type_visibility"> [system]</span> 14053 14054 14055 14056 <span class="entry_type_deprecated">[deprecated] </span> 14057 14058 14059 14060 </td> <!-- entry_type --> 14061 14062 <td class="entry_description"> 14063 <p>If set to 1,<wbr/> the camera service uses 14064CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of 14065HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero 14066shutter lag stream</p> 14067 </td> 14068 14069 <td class="entry_units"> 14070 </td> 14071 14072 <td class="entry_range"> 14073 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14074 </td> 14075 14076 <td class="entry_tags"> 14077 </td> 14078 14079 </tr> 14080 <tr class="entries_header"> 14081 <th class="th_details" colspan="5">Details</th> 14082 </tr> 14083 <tr class="entry_cont"> 14084 <td class="entry_details" colspan="5"> 14085 <p>HAL implementations should use gralloc usage flags 14086to determine that a stream will be used for 14087zero-shutter-lag,<wbr/> instead of relying on an explicit 14088format setting.<wbr/> Does not need to be listed in static 14089metadata.<wbr/> Support will be removed in future versions of 14090camera service.<wbr/></p> 14091 </td> 14092 </tr> 14093 14094 14095 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14096 <!-- end of entry --> 14097 14098 14099 <tr class="entry" id="static_android.quirks.usePartialResult"> 14100 <td class="entry_name 14101 entry_name_deprecated 14102 " rowspan="5"> 14103 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result 14104 </td> 14105 <td class="entry_type"> 14106 <span class="entry_type_name">byte</span> 14107 14108 <span class="entry_type_visibility"> [hidden]</span> 14109 14110 14111 14112 <span class="entry_type_deprecated">[deprecated] </span> 14113 14114 14115 14116 </td> <!-- entry_type --> 14117 14118 <td class="entry_description"> 14119 <p>If set to 1,<wbr/> the HAL will always split result 14120metadata for a single capture into multiple buffers,<wbr/> 14121returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p> 14122 </td> 14123 14124 <td class="entry_units"> 14125 </td> 14126 14127 <td class="entry_range"> 14128 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14129 </td> 14130 14131 <td class="entry_tags"> 14132 </td> 14133 14134 </tr> 14135 <tr class="entries_header"> 14136 <th class="th_details" colspan="5">Details</th> 14137 </tr> 14138 <tr class="entry_cont"> 14139 <td class="entry_details" colspan="5"> 14140 <p>Does not need to be listed in static 14141metadata.<wbr/> Support for partial results will be reworked in 14142future versions of camera service.<wbr/> This quirk will stop 14143working at that point; DO NOT USE without careful 14144consideration of future support.<wbr/></p> 14145 </td> 14146 </tr> 14147 14148 <tr class="entries_header"> 14149 <th class="th_details" colspan="5">HAL Implementation Details</th> 14150 </tr> 14151 <tr class="entry_cont"> 14152 <td class="entry_details" colspan="5"> 14153 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 14154for information on how to implement partial results.<wbr/></p> 14155 </td> 14156 </tr> 14157 14158 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14159 <!-- end of entry --> 14160 14161 14162 14163 <!-- end of kind --> 14164 </tbody> 14165 <tr><td colspan="6" class="kind">dynamic</td></tr> 14166 14167 <thead class="entries_header"> 14168 <tr> 14169 <th class="th_name">Property Name</th> 14170 <th class="th_type">Type</th> 14171 <th class="th_description">Description</th> 14172 <th class="th_units">Units</th> 14173 <th class="th_range">Range</th> 14174 <th class="th_tags">Tags</th> 14175 </tr> 14176 </thead> 14177 14178 <tbody> 14179 14180 14181 14182 14183 14184 14185 14186 14187 14188 14189 <tr class="entry" id="dynamic_android.quirks.partialResult"> 14190 <td class="entry_name 14191 entry_name_deprecated 14192 " rowspan="5"> 14193 android.<wbr/>quirks.<wbr/>partial<wbr/>Result 14194 </td> 14195 <td class="entry_type"> 14196 <span class="entry_type_name entry_type_name_enum">byte</span> 14197 14198 <span class="entry_type_visibility"> [hidden as boolean]</span> 14199 14200 14201 14202 <span class="entry_type_deprecated">[deprecated] </span> 14203 14204 14205 <ul class="entry_type_enum"> 14206 <li> 14207 <span class="entry_type_enum_name">FINAL</span> 14208 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer 14209for this capture.<wbr/></p></span> 14210 </li> 14211 <li> 14212 <span class="entry_type_enum_name">PARTIAL</span> 14213 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this 14214capture.<wbr/> More result buffers for this capture will be sent 14215by the camera device,<wbr/> the last of which will be marked 14216FINAL.<wbr/></p></span> 14217 </li> 14218 </ul> 14219 14220 </td> <!-- entry_type --> 14221 14222 <td class="entry_description"> 14223 <p>Whether a result given to the framework is the 14224final one for the capture,<wbr/> or only a partial that contains a 14225subset of the full set of dynamic metadata 14226values.<wbr/></p> 14227 </td> 14228 14229 <td class="entry_units"> 14230 </td> 14231 14232 <td class="entry_range"> 14233 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14234 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p> 14235 </td> 14236 14237 <td class="entry_tags"> 14238 </td> 14239 14240 </tr> 14241 <tr class="entries_header"> 14242 <th class="th_details" colspan="5">Details</th> 14243 </tr> 14244 <tr class="entry_cont"> 14245 <td class="entry_details" colspan="5"> 14246 <p>The entries in the result metadata buffers for a 14247single capture may not overlap,<wbr/> except for this entry.<wbr/> The 14248FINAL buffers must retain FIFO ordering relative to the 14249requests that generate them,<wbr/> so the FINAL buffer for frame 3 must 14250always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and 14251before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned 14252in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given 14253capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may 14254only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p> 14255 </td> 14256 </tr> 14257 14258 <tr class="entries_header"> 14259 <th class="th_details" colspan="5">HAL Implementation Details</th> 14260 </tr> 14261 <tr class="entry_cont"> 14262 <td class="entry_details" colspan="5"> 14263 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 14264for information on how to implement partial results.<wbr/></p> 14265 </td> 14266 </tr> 14267 14268 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14269 <!-- end of entry --> 14270 14271 14272 14273 <!-- end of kind --> 14274 </tbody> 14275 14276 <!-- end of section --> 14277 <tr><td colspan="6" id="section_request" class="section">request</td></tr> 14278 14279 14280 <tr><td colspan="6" class="kind">controls</td></tr> 14281 14282 <thead class="entries_header"> 14283 <tr> 14284 <th class="th_name">Property Name</th> 14285 <th class="th_type">Type</th> 14286 <th class="th_description">Description</th> 14287 <th class="th_units">Units</th> 14288 <th class="th_range">Range</th> 14289 <th class="th_tags">Tags</th> 14290 </tr> 14291 </thead> 14292 14293 <tbody> 14294 14295 14296 14297 14298 14299 14300 14301 14302 14303 14304 <tr class="entry" id="controls_android.request.frameCount"> 14305 <td class="entry_name 14306 entry_name_deprecated 14307 " rowspan="1"> 14308 android.<wbr/>request.<wbr/>frame<wbr/>Count 14309 </td> 14310 <td class="entry_type"> 14311 <span class="entry_type_name">int32</span> 14312 14313 <span class="entry_type_visibility"> [system]</span> 14314 14315 14316 14317 <span class="entry_type_deprecated">[deprecated] </span> 14318 14319 14320 14321 </td> <!-- entry_type --> 14322 14323 <td class="entry_description"> 14324 <p>A frame counter set by the framework.<wbr/> Must 14325be maintained unchanged in output frame.<wbr/> This value monotonically 14326increases with every new result (that is,<wbr/> each new result has a unique 14327frameCount value).<wbr/></p> 14328 </td> 14329 14330 <td class="entry_units"> 14331 incrementing integer 14332 </td> 14333 14334 <td class="entry_range"> 14335 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14336 <p>Any int.<wbr/></p> 14337 </td> 14338 14339 <td class="entry_tags"> 14340 </td> 14341 14342 </tr> 14343 14344 14345 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14346 <!-- end of entry --> 14347 14348 14349 <tr class="entry" id="controls_android.request.id"> 14350 <td class="entry_name 14351 " rowspan="1"> 14352 android.<wbr/>request.<wbr/>id 14353 </td> 14354 <td class="entry_type"> 14355 <span class="entry_type_name">int32</span> 14356 14357 <span class="entry_type_visibility"> [hidden]</span> 14358 14359 14360 14361 14362 14363 14364 </td> <!-- entry_type --> 14365 14366 <td class="entry_description"> 14367 <p>An application-specified ID for the current 14368request.<wbr/> Must be maintained unchanged in output 14369frame</p> 14370 </td> 14371 14372 <td class="entry_units"> 14373 arbitrary integer assigned by application 14374 </td> 14375 14376 <td class="entry_range"> 14377 <p>Any int</p> 14378 </td> 14379 14380 <td class="entry_tags"> 14381 <ul class="entry_tags"> 14382 <li><a href="#tag_V1">V1</a></li> 14383 </ul> 14384 </td> 14385 14386 </tr> 14387 14388 14389 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14390 <!-- end of entry --> 14391 14392 14393 <tr class="entry" id="controls_android.request.inputStreams"> 14394 <td class="entry_name 14395 entry_name_deprecated 14396 " rowspan="3"> 14397 android.<wbr/>request.<wbr/>input<wbr/>Streams 14398 </td> 14399 <td class="entry_type"> 14400 <span class="entry_type_name">int32</span> 14401 <span class="entry_type_container">x</span> 14402 14403 <span class="entry_type_array"> 14404 n 14405 </span> 14406 <span class="entry_type_visibility"> [system]</span> 14407 14408 14409 14410 <span class="entry_type_deprecated">[deprecated] </span> 14411 14412 14413 14414 </td> <!-- entry_type --> 14415 14416 <td class="entry_description"> 14417 <p>List which camera reprocess stream is used 14418for the source of reprocessing data.<wbr/></p> 14419 </td> 14420 14421 <td class="entry_units"> 14422 List of camera reprocess stream IDs 14423 </td> 14424 14425 <td class="entry_range"> 14426 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14427 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p> 14428 </td> 14429 14430 <td class="entry_tags"> 14431 <ul class="entry_tags"> 14432 <li><a href="#tag_HAL2">HAL2</a></li> 14433 </ul> 14434 </td> 14435 14436 </tr> 14437 <tr class="entries_header"> 14438 <th class="th_details" colspan="5">Details</th> 14439 </tr> 14440 <tr class="entry_cont"> 14441 <td class="entry_details" colspan="5"> 14442 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> == 14443REPROCESS.<wbr/> Ignored otherwise</p> 14444 </td> 14445 </tr> 14446 14447 14448 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14449 <!-- end of entry --> 14450 14451 14452 <tr class="entry" id="controls_android.request.metadataMode"> 14453 <td class="entry_name 14454 " rowspan="1"> 14455 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 14456 </td> 14457 <td class="entry_type"> 14458 <span class="entry_type_name entry_type_name_enum">byte</span> 14459 14460 <span class="entry_type_visibility"> [system]</span> 14461 14462 14463 14464 14465 14466 <ul class="entry_type_enum"> 14467 <li> 14468 <span class="entry_type_enum_name">NONE</span> 14469 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 14470for application-bound buffer data.<wbr/> If no 14471application-bound streams exist,<wbr/> no frame should be 14472placed in the output frame queue.<wbr/> If such streams 14473exist,<wbr/> a frame should be placed on the output queue 14474with null metadata but with the necessary output buffer 14475information.<wbr/> Timestamp information should still be 14476included with any output stream buffers</p></span> 14477 </li> 14478 <li> 14479 <span class="entry_type_enum_name">FULL</span> 14480 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 14481only be produced if they are separately 14482enabled</p></span> 14483 </li> 14484 </ul> 14485 14486 </td> <!-- entry_type --> 14487 14488 <td class="entry_description"> 14489 <p>How much metadata to produce on 14490output</p> 14491 </td> 14492 14493 <td class="entry_units"> 14494 </td> 14495 14496 <td class="entry_range"> 14497 </td> 14498 14499 <td class="entry_tags"> 14500 <ul class="entry_tags"> 14501 <li><a href="#tag_FUTURE">FUTURE</a></li> 14502 </ul> 14503 </td> 14504 14505 </tr> 14506 14507 14508 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14509 <!-- end of entry --> 14510 14511 14512 <tr class="entry" id="controls_android.request.outputStreams"> 14513 <td class="entry_name 14514 entry_name_deprecated 14515 " rowspan="3"> 14516 android.<wbr/>request.<wbr/>output<wbr/>Streams 14517 </td> 14518 <td class="entry_type"> 14519 <span class="entry_type_name">int32</span> 14520 <span class="entry_type_container">x</span> 14521 14522 <span class="entry_type_array"> 14523 n 14524 </span> 14525 <span class="entry_type_visibility"> [system]</span> 14526 14527 14528 14529 <span class="entry_type_deprecated">[deprecated] </span> 14530 14531 14532 14533 </td> <!-- entry_type --> 14534 14535 <td class="entry_description"> 14536 <p>Lists which camera output streams image data 14537from this capture must be sent to</p> 14538 </td> 14539 14540 <td class="entry_units"> 14541 List of camera stream IDs 14542 </td> 14543 14544 <td class="entry_range"> 14545 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14546 <p>List must only include streams that have been 14547created</p> 14548 </td> 14549 14550 <td class="entry_tags"> 14551 <ul class="entry_tags"> 14552 <li><a href="#tag_HAL2">HAL2</a></li> 14553 </ul> 14554 </td> 14555 14556 </tr> 14557 <tr class="entries_header"> 14558 <th class="th_details" colspan="5">Details</th> 14559 </tr> 14560 <tr class="entry_cont"> 14561 <td class="entry_details" colspan="5"> 14562 <p>If no output streams are listed,<wbr/> then the image 14563data should simply be discarded.<wbr/> The image data must 14564still be captured for metadata and statistics production,<wbr/> 14565and the lens and flash must operate as requested.<wbr/></p> 14566 </td> 14567 </tr> 14568 14569 14570 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14571 <!-- end of entry --> 14572 14573 14574 <tr class="entry" id="controls_android.request.type"> 14575 <td class="entry_name 14576 entry_name_deprecated 14577 " rowspan="1"> 14578 android.<wbr/>request.<wbr/>type 14579 </td> 14580 <td class="entry_type"> 14581 <span class="entry_type_name entry_type_name_enum">byte</span> 14582 14583 <span class="entry_type_visibility"> [system]</span> 14584 14585 14586 14587 <span class="entry_type_deprecated">[deprecated] </span> 14588 14589 14590 <ul class="entry_type_enum"> 14591 <li> 14592 <span class="entry_type_enum_name">CAPTURE</span> 14593 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/> 14594and process it according to the 14595settings</p></span> 14596 </li> 14597 <li> 14598 <span class="entry_type_enum_name">REPROCESS</span> 14599 <span class="entry_type_enum_notes"><p>Process previously captured data; the 14600<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the 14601source reprocessing stream.<wbr/> TODO: Mark dynamic metadata 14602needed for reprocessing with [RP]</p></span> 14603 </li> 14604 </ul> 14605 14606 </td> <!-- entry_type --> 14607 14608 <td class="entry_description"> 14609 <p>The type of the request; either CAPTURE or 14610REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p> 14611 </td> 14612 14613 <td class="entry_units"> 14614 </td> 14615 14616 <td class="entry_range"> 14617 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14618 </td> 14619 14620 <td class="entry_tags"> 14621 <ul class="entry_tags"> 14622 <li><a href="#tag_HAL2">HAL2</a></li> 14623 </ul> 14624 </td> 14625 14626 </tr> 14627 14628 14629 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14630 <!-- end of entry --> 14631 14632 14633 14634 <!-- end of kind --> 14635 </tbody> 14636 <tr><td colspan="6" class="kind">static</td></tr> 14637 14638 <thead class="entries_header"> 14639 <tr> 14640 <th class="th_name">Property Name</th> 14641 <th class="th_type">Type</th> 14642 <th class="th_description">Description</th> 14643 <th class="th_units">Units</th> 14644 <th class="th_range">Range</th> 14645 <th class="th_tags">Tags</th> 14646 </tr> 14647 </thead> 14648 14649 <tbody> 14650 14651 14652 14653 14654 14655 14656 14657 14658 14659 14660 <tr class="entry" id="static_android.request.maxNumOutputStreams"> 14661 <td class="entry_name 14662 " rowspan="3"> 14663 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams 14664 </td> 14665 <td class="entry_type"> 14666 <span class="entry_type_name">int32</span> 14667 <span class="entry_type_container">x</span> 14668 14669 <span class="entry_type_array"> 14670 3 14671 </span> 14672 <span class="entry_type_visibility"> [hidden]</span> 14673 14674 14675 <span class="entry_type_hwlevel">[legacy] </span> 14676 14677 14678 14679 14680 </td> <!-- entry_type --> 14681 14682 <td class="entry_description"> 14683 <p>The maximum numbers of different types of output streams 14684that can be configured and used simultaneously by a camera device.<wbr/></p> 14685 </td> 14686 14687 <td class="entry_units"> 14688 </td> 14689 14690 <td class="entry_range"> 14691 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p> 14692<p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p> 14693<p>For processed (but not stalling) format streams,<wbr/> >= 3 14694for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 14695>= 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> 14696 </td> 14697 14698 <td class="entry_tags"> 14699 <ul class="entry_tags"> 14700 <li><a href="#tag_BC">BC</a></li> 14701 </ul> 14702 </td> 14703 14704 </tr> 14705 <tr class="entries_header"> 14706 <th class="th_details" colspan="5">Details</th> 14707 </tr> 14708 <tr class="entry_cont"> 14709 <td class="entry_details" colspan="5"> 14710 <p>This is a 3 element tuple that contains the max number of output simultaneous 14711streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling) 14712formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and 14713stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams 14714number 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> 14715<p>This lists the upper bound of the number of output streams supported by 14716the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14717CPU resources that will consume more power.<wbr/> The image format for an output stream can 14718be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 14719The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized 14720into the 3 stream types as below:</p> 14721<ul> 14722<li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/> 14723 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li> 14724<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> 14725<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> 14726 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/> 14727 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or 14728 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li> 14729</ul> 14730 </td> 14731 </tr> 14732 14733 14734 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14735 <!-- end of entry --> 14736 14737 14738 <tr class="entry" id="static_android.request.maxNumOutputRaw"> 14739 <td class="entry_name 14740 " rowspan="3"> 14741 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw 14742 </td> 14743 <td class="entry_type"> 14744 <span class="entry_type_name">int32</span> 14745 14746 <span class="entry_type_visibility"> [public]</span> 14747 14748 <span class="entry_type_synthetic">[synthetic] </span> 14749 14750 <span class="entry_type_hwlevel">[legacy] </span> 14751 14752 14753 14754 14755 </td> <!-- entry_type --> 14756 14757 <td class="entry_description"> 14758 <p>The maximum numbers of different types of output streams 14759that can be configured and used simultaneously by a camera device 14760for any <code>RAW</code> formats.<wbr/></p> 14761 </td> 14762 14763 <td class="entry_units"> 14764 </td> 14765 14766 <td class="entry_range"> 14767 <p>>= 0</p> 14768 </td> 14769 14770 <td class="entry_tags"> 14771 </td> 14772 14773 </tr> 14774 <tr class="entries_header"> 14775 <th class="th_details" colspan="5">Details</th> 14776 </tr> 14777 <tr class="entry_cont"> 14778 <td class="entry_details" colspan="5"> 14779 <p>This value contains the max number of output simultaneous 14780streams from the raw sensor.<wbr/></p> 14781<p>This lists the upper bound of the number of output streams supported by 14782the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14783CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 14784be 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> 14785<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p> 14786<ul> 14787<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li> 14788<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li> 14789<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li> 14790</ul> 14791<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY) 14792never support raw streams.<wbr/></p> 14793 </td> 14794 </tr> 14795 14796 14797 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14798 <!-- end of entry --> 14799 14800 14801 <tr class="entry" id="static_android.request.maxNumOutputProc"> 14802 <td class="entry_name 14803 " rowspan="3"> 14804 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc 14805 </td> 14806 <td class="entry_type"> 14807 <span class="entry_type_name">int32</span> 14808 14809 <span class="entry_type_visibility"> [public]</span> 14810 14811 <span class="entry_type_synthetic">[synthetic] </span> 14812 14813 <span class="entry_type_hwlevel">[legacy] </span> 14814 14815 14816 14817 14818 </td> <!-- entry_type --> 14819 14820 <td class="entry_description"> 14821 <p>The maximum numbers of different types of output streams 14822that can be configured and used simultaneously by a camera device 14823for any processed (but not-stalling) formats.<wbr/></p> 14824 </td> 14825 14826 <td class="entry_units"> 14827 </td> 14828 14829 <td class="entry_range"> 14830 <p>>= 3 14831for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 14832>= 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> 14833 </td> 14834 14835 <td class="entry_tags"> 14836 </td> 14837 14838 </tr> 14839 <tr class="entries_header"> 14840 <th class="th_details" colspan="5">Details</th> 14841 </tr> 14842 <tr class="entry_cont"> 14843 <td class="entry_details" colspan="5"> 14844 <p>This value contains the max number of output simultaneous 14845streams for any processed (but not-stalling) formats.<wbr/></p> 14846<p>This lists the upper bound of the number of output streams supported by 14847the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14848CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 14849be 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> 14850<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/> 14851Typically:</p> 14852<ul> 14853<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li> 14854<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li> 14855<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li> 14856<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> 14857</ul> 14858<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 14859processed format -- it will return 0 for a non-stalling stream.<wbr/></p> 14860<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p> 14861 </td> 14862 </tr> 14863 14864 14865 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14866 <!-- end of entry --> 14867 14868 14869 <tr class="entry" id="static_android.request.maxNumOutputProcStalling"> 14870 <td class="entry_name 14871 " rowspan="3"> 14872 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling 14873 </td> 14874 <td class="entry_type"> 14875 <span class="entry_type_name">int32</span> 14876 14877 <span class="entry_type_visibility"> [public]</span> 14878 14879 <span class="entry_type_synthetic">[synthetic] </span> 14880 14881 <span class="entry_type_hwlevel">[legacy] </span> 14882 14883 14884 14885 14886 </td> <!-- entry_type --> 14887 14888 <td class="entry_description"> 14889 <p>The maximum numbers of different types of output streams 14890that can be configured and used simultaneously by a camera device 14891for any processed (and stalling) formats.<wbr/></p> 14892 </td> 14893 14894 <td class="entry_units"> 14895 </td> 14896 14897 <td class="entry_range"> 14898 <p>>= 1</p> 14899 </td> 14900 14901 <td class="entry_tags"> 14902 </td> 14903 14904 </tr> 14905 <tr class="entries_header"> 14906 <th class="th_details" colspan="5">Details</th> 14907 </tr> 14908 <tr class="entry_cont"> 14909 <td class="entry_details" colspan="5"> 14910 <p>This value contains the max number of output simultaneous 14911streams for any processed (but not-stalling) formats.<wbr/></p> 14912<p>This lists the upper bound of the number of output streams supported by 14913the camera device.<wbr/> Using more streams simultaneously may require more hardware and 14914CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 14915be 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> 14916<p>A processed and stalling format is defined as any non-RAW format with a stallDurations 14917> 0.<wbr/> Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a 14918stalling format.<wbr/></p> 14919<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 14920processed format -- it will return a non-0 value for a stalling stream.<wbr/></p> 14921<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p> 14922 </td> 14923 </tr> 14924 14925 14926 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14927 <!-- end of entry --> 14928 14929 14930 <tr class="entry" id="static_android.request.maxNumReprocessStreams"> 14931 <td class="entry_name 14932 entry_name_deprecated 14933 " rowspan="3"> 14934 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams 14935 </td> 14936 <td class="entry_type"> 14937 <span class="entry_type_name">int32</span> 14938 <span class="entry_type_container">x</span> 14939 14940 <span class="entry_type_array"> 14941 1 14942 </span> 14943 <span class="entry_type_visibility"> [system]</span> 14944 14945 14946 14947 <span class="entry_type_deprecated">[deprecated] </span> 14948 14949 14950 14951 </td> <!-- entry_type --> 14952 14953 <td class="entry_description"> 14954 <p>How many reprocessing streams of any type 14955can be allocated at the same time.<wbr/></p> 14956 </td> 14957 14958 <td class="entry_units"> 14959 </td> 14960 14961 <td class="entry_range"> 14962 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14963 <p>>= 0</p> 14964 </td> 14965 14966 <td class="entry_tags"> 14967 <ul class="entry_tags"> 14968 <li><a href="#tag_HAL2">HAL2</a></li> 14969 </ul> 14970 </td> 14971 14972 </tr> 14973 <tr class="entries_header"> 14974 <th class="th_details" colspan="5">Details</th> 14975 </tr> 14976 <tr class="entry_cont"> 14977 <td class="entry_details" colspan="5"> 14978 <p>Only used by HAL2.<wbr/>x.<wbr/></p> 14979<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p> 14980 </td> 14981 </tr> 14982 14983 14984 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14985 <!-- end of entry --> 14986 14987 14988 <tr class="entry" id="static_android.request.maxNumInputStreams"> 14989 <td class="entry_name 14990 " rowspan="5"> 14991 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams 14992 </td> 14993 <td class="entry_type"> 14994 <span class="entry_type_name">int32</span> 14995 14996 <span class="entry_type_visibility"> [public]</span> 14997 14998 14999 <span class="entry_type_hwlevel">[full] </span> 15000 15001 15002 15003 15004 </td> <!-- entry_type --> 15005 15006 <td class="entry_description"> 15007 <p>The maximum numbers of any type of input streams 15008that can be configured and used simultaneously by a camera device.<wbr/></p> 15009 </td> 15010 15011 <td class="entry_units"> 15012 </td> 15013 15014 <td class="entry_range"> 15015 <p>0 or 1.<wbr/></p> 15016 </td> 15017 15018 <td class="entry_tags"> 15019 <ul class="entry_tags"> 15020 <li><a href="#tag_REPROC">REPROC</a></li> 15021 </ul> 15022 </td> 15023 15024 </tr> 15025 <tr class="entries_header"> 15026 <th class="th_details" colspan="5">Details</th> 15027 </tr> 15028 <tr class="entry_cont"> 15029 <td class="entry_details" colspan="5"> 15030 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p> 15031<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 15032input stream,<wbr/> there must be at least one output stream configured to to receive the 15033reprocessed images.<wbr/></p> 15034<p>When an input stream and some output streams are used in a reprocessing request,<wbr/> 15035only the input buffer will be used to produce these output stream buffers,<wbr/> and a 15036new sensor image will not be captured.<wbr/></p> 15037<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input 15038stream image format will be PRIVATE,<wbr/> the associated output stream image format 15039should be JPEG.<wbr/></p> 15040 </td> 15041 </tr> 15042 15043 <tr class="entries_header"> 15044 <th class="th_details" colspan="5">HAL Implementation Details</th> 15045 </tr> 15046 <tr class="entry_cont"> 15047 <td class="entry_details" colspan="5"> 15048 <p>For the reprocessing flow and controls,<wbr/> see 15049hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p> 15050 </td> 15051 </tr> 15052 15053 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15054 <!-- end of entry --> 15055 15056 15057 <tr class="entry" id="static_android.request.pipelineMaxDepth"> 15058 <td class="entry_name 15059 " rowspan="5"> 15060 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth 15061 </td> 15062 <td class="entry_type"> 15063 <span class="entry_type_name">byte</span> 15064 15065 <span class="entry_type_visibility"> [public]</span> 15066 15067 15068 <span class="entry_type_hwlevel">[legacy] </span> 15069 15070 15071 15072 15073 </td> <!-- entry_type --> 15074 15075 <td class="entry_description"> 15076 <p>Specifies the number of maximum pipeline stages a frame 15077has to go through from when it's exposed to when it's available 15078to the framework.<wbr/></p> 15079 </td> 15080 15081 <td class="entry_units"> 15082 </td> 15083 15084 <td class="entry_range"> 15085 </td> 15086 15087 <td class="entry_tags"> 15088 </td> 15089 15090 </tr> 15091 <tr class="entries_header"> 15092 <th class="th_details" colspan="5">Details</th> 15093 </tr> 15094 <tr class="entry_cont"> 15095 <td class="entry_details" colspan="5"> 15096 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/> 15097one stage to readout) from the sensor.<wbr/> The ISP then usually adds 15098its own stages to do custom HW processing.<wbr/> Further stages may be 15099added by SW processing.<wbr/></p> 15100<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what 15101processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline 15102depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than 15103the max pipeline depth.<wbr/></p> 15104<p>A pipeline depth of X stages is equivalent to a pipeline latency of 15105X frame intervals.<wbr/></p> 15106<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/> 15107the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p> 15108 </td> 15109 </tr> 15110 15111 <tr class="entries_header"> 15112 <th class="th_details" colspan="5">HAL Implementation Details</th> 15113 </tr> 15114 <tr class="entry_cont"> 15115 <td class="entry_details" colspan="5"> 15116 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the 15117max batch sizes may be larger than 1.<wbr/></p> 15118 </td> 15119 </tr> 15120 15121 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15122 <!-- end of entry --> 15123 15124 15125 <tr class="entry" id="static_android.request.partialResultCount"> 15126 <td class="entry_name 15127 " rowspan="3"> 15128 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count 15129 </td> 15130 <td class="entry_type"> 15131 <span class="entry_type_name">int32</span> 15132 15133 <span class="entry_type_visibility"> [public]</span> 15134 15135 15136 15137 15138 15139 15140 </td> <!-- entry_type --> 15141 15142 <td class="entry_description"> 15143 <p>Defines how many sub-components 15144a result will be composed of.<wbr/></p> 15145 </td> 15146 15147 <td class="entry_units"> 15148 </td> 15149 15150 <td class="entry_range"> 15151 <p>>= 1</p> 15152 </td> 15153 15154 <td class="entry_tags"> 15155 </td> 15156 15157 </tr> 15158 <tr class="entries_header"> 15159 <th class="th_details" colspan="5">Details</th> 15160 </tr> 15161 <tr class="entry_cont"> 15162 <td class="entry_details" colspan="5"> 15163 <p>In order to combat the pipeline latency,<wbr/> partial results 15164may be delivered to the application layer from the camera device as 15165soon as they are available.<wbr/></p> 15166<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial 15167results are not supported,<wbr/> and only the final TotalCaptureResult will 15168be produced by the camera device.<wbr/></p> 15169<p>A typical use case for this might be: after requesting an 15170auto-focus (AF) lock the new AF state might be available 50% 15171of the way through the pipeline.<wbr/> The camera device could 15172then immediately dispatch this state via a partial result to 15173the application,<wbr/> and the rest of the metadata via later 15174partial results.<wbr/></p> 15175 </td> 15176 </tr> 15177 15178 15179 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15180 <!-- end of entry --> 15181 15182 15183 <tr class="entry" id="static_android.request.availableCapabilities"> 15184 <td class="entry_name 15185 " rowspan="5"> 15186 android.<wbr/>request.<wbr/>available<wbr/>Capabilities 15187 </td> 15188 <td class="entry_type"> 15189 <span class="entry_type_name entry_type_name_enum">byte</span> 15190 <span class="entry_type_container">x</span> 15191 15192 <span class="entry_type_array"> 15193 n 15194 </span> 15195 <span class="entry_type_visibility"> [public]</span> 15196 15197 15198 <span class="entry_type_hwlevel">[legacy] </span> 15199 15200 15201 15202 <ul class="entry_type_enum"> 15203 <li> 15204 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span> 15205 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera 15206device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>) 15207supports.<wbr/></p> 15208<p>This capability is listed by all normal devices,<wbr/> and 15209indicates that the camera device has a feature set 15210that's comparable to the baseline requirements for the 15211older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 15212<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this 15213capability,<wbr/> indicating that they support only depth measurement,<wbr/> 15214not standard color output.<wbr/></p></span> 15215 </li> 15216 <li> 15217 <span class="entry_type_enum_name">MANUAL_SENSOR</span> 15218 <span class="entry_type_enum_optional">[optional]</span> 15219 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such 15220as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/> 15221The camera device supports basic manual control of the sensor image 15222acquisition related stages.<wbr/> This means the following controls are 15223guaranteed to be supported:</p> 15224<ul> 15225<li>Manual frame duration control<ul> 15226<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li> 15227<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> 15228</ul> 15229</li> 15230<li>Manual exposure control<ul> 15231<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 15232<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 15233</ul> 15234</li> 15235<li>Manual sensitivity control<ul> 15236<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 15237<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> 15238</ul> 15239</li> 15240<li>Manual lens control (if the lens is adjustable)<ul> 15241<li>android.<wbr/>lens.<wbr/>*</li> 15242</ul> 15243</li> 15244<li>Manual flash control (if a flash unit is present)<ul> 15245<li>android.<wbr/>flash.<wbr/>*</li> 15246</ul> 15247</li> 15248<li>Manual black level locking<ul> 15249<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li> 15250</ul> 15251</li> 15252<li>Auto exposure lock<ul> 15253<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 15254</ul> 15255</li> 15256</ul> 15257<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera 15258device will accurately report the values applied by 3A in the 15259result.<wbr/></p> 15260<p>A given camera device may also support additional manual sensor controls,<wbr/> 15261but this capability only covers the above list of controls.<wbr/></p> 15262<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will 15263additionally return a min frame duration that is greater than 15264zero for each supported size-format combination.<wbr/></p></span> 15265 </li> 15266 <li> 15267 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span> 15268 <span class="entry_type_enum_optional">[optional]</span> 15269 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/> 15270The camera device supports basic manual control of the image post-processing 15271stages.<wbr/> This means the following controls are guaranteed to be supported:</p> 15272<ul> 15273<li> 15274<p>Manual tonemap control</p> 15275<ul> 15276<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li> 15277<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li> 15278<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li> 15279<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li> 15280<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li> 15281</ul> 15282</li> 15283<li> 15284<p>Manual white balance control</p> 15285<ul> 15286<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li> 15287<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li> 15288</ul> 15289</li> 15290<li>Manual lens shading map control<ul> 15291<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li> 15292<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li> 15293<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li> 15294<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li> 15295</ul> 15296</li> 15297<li>Manual aberration correction control (if aberration correction is supported)<ul> 15298<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li> 15299<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li> 15300</ul> 15301</li> 15302<li>Auto white balance lock<ul> 15303<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 15304</ul> 15305</li> 15306</ul> 15307<p>If auto white balance is enabled,<wbr/> then the camera device 15308will accurately report the values applied by AWB in the result.<wbr/></p> 15309<p>A given camera device may also support additional post-processing 15310controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span> 15311 </li> 15312 <li> 15313 <span class="entry_type_enum_name">RAW</span> 15314 <span class="entry_type_enum_optional">[optional]</span> 15315 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and 15316metadata for interpreting them.<wbr/></p> 15317<p>Devices supporting the RAW capability allow both for 15318saving DNG files,<wbr/> and for direct application processing of 15319raw sensor images.<wbr/></p> 15320<ul> 15321<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li> 15322<li>The maximum available resolution for RAW_<wbr/>SENSOR streams 15323 will match either the value in 15324 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or 15325 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 15326<li>All DNG-related optional metadata entries are provided 15327 by the camera device.<wbr/></li> 15328</ul></span> 15329 </li> 15330 <li> 15331 <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span> 15332 <span class="entry_type_enum_optional">[optional]</span> 15333 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p> 15334<ul> 15335<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> 15336<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/> 15337 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of 15338 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> 15339<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 15340 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> 15341<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> 15342<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop 15343 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 15344<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both 15345 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and 15346 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li> 15347<li>The maximum available resolution for PRIVATE streams 15348 (both input/<wbr/>output) will match the maximum available 15349 resolution of JPEG streams.<wbr/></li> 15350<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 15351<li>Only below controls are effective for reprocessing requests and 15352 will be present in capture results,<wbr/> other controls in reprocess 15353 requests will be ignored by the camera device.<wbr/><ul> 15354<li>android.<wbr/>jpeg.<wbr/>*</li> 15355<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 15356<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 15357</ul> 15358</li> 15359<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 15360 <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> 15361</ul></span> 15362 </li> 15363 <li> 15364 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span> 15365 <span class="entry_type_enum_optional">[optional]</span> 15366 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of 15367the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows 15368reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p> 15369<p>The values reported for the following controls are guaranteed to be available 15370in the CaptureResult,<wbr/> including when 3A is enabled:</p> 15371<ul> 15372<li>Exposure control<ul> 15373<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 15374</ul> 15375</li> 15376<li>Sensitivity control<ul> 15377<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 15378</ul> 15379</li> 15380<li>Lens controls (if the lens is adjustable)<ul> 15381<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li> 15382<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li> 15383</ul> 15384</li> 15385</ul> 15386<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will 15387always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span> 15388 </li> 15389 <li> 15390 <span class="entry_type_enum_name">BURST_CAPTURE</span> 15391 <span class="entry_type_enum_optional">[optional]</span> 15392 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per 15393second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set 15394to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at >= 10 frames 15395per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum 15396resolution of the device,<wbr/> whichever is smaller.<wbr/></p> 15397<p>More specifically,<wbr/> this means that a size matching the camera device's active array 15398size 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/> 15399with a minimum frame duration for that format and size of either <= 1/<wbr/>20 s,<wbr/> or 15400<= 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 15401lists at least one FPS range where the minimum FPS is >= 1 /<wbr/> minimumFrameDuration 15402for 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/> 15403then 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 15404least one resolution >= 8 megapixels,<wbr/> with a minimum frame duration of <= 1/<wbr/>20 15405s.<wbr/></p> 15406<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 15407as the maximum-size YUV_<wbr/>420_<wbr/>888 resolution is.<wbr/></p> 15408<p>If the device supports the PRIVATE_<wbr/>REPROCESSING capability,<wbr/> then the same guarantees 15409as 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> 15410<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 15411and 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> 15412are also guaranteed to be <code>true</code> so burst capture with these two locks ON yields 15413consistent image output.<wbr/></p></span> 15414 </li> 15415 <li> 15416 <span class="entry_type_enum_name">YUV_REPROCESSING</span> 15417 <span class="entry_type_enum_optional">[optional]</span> 15418 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as 15419PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the 15420following:</p> 15421<ul> 15422<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> 15423<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/> 15424 YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by 15425 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and 15426 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li> 15427<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 15428 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> 15429<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> 15430<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 15431 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 15432<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 15433 <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> 15434<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 15435 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li> 15436<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 15437<li>Only the below controls are effective for reprocessing requests and will be present 15438 in capture results.<wbr/> The reprocess requests are from the original capture results that 15439 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> 15440 output buffers.<wbr/> All other controls in the reprocess requests will be ignored by the 15441 camera device.<wbr/><ul> 15442<li>android.<wbr/>jpeg.<wbr/>*</li> 15443<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 15444<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 15445<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li> 15446</ul> 15447</li> 15448<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 15449 <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> 15450</ul></span> 15451 </li> 15452 <li> 15453 <span class="entry_type_enum_name">DEPTH_OUTPUT</span> 15454 <span class="entry_type_enum_optional">[optional]</span> 15455 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p> 15456<p>This capability requires the camera device to support the following:</p> 15457<ul> 15458<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li> 15459<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 15460 output format.<wbr/></li> 15461<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/> 15462 will list the following calibration entries in both 15463 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and 15464 <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul> 15465<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 15466<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 15467<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 15468<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li> 15469</ul> 15470</li> 15471<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> 15472<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support 15473 normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16 15474 format.<wbr/></li> 15475</ul> 15476<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/> 15477so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that 15478should be accounted for (see 15479<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/> 15480On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/> 15481using a repeating burst is recommended,<wbr/> where a depth-output target is only included 15482once every N frames,<wbr/> where N is the ratio between preview output rate and depth output 15483rate,<wbr/> including depth stall time.<wbr/></p></span> 15484 </li> 15485 <li> 15486 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span> 15487 <span class="entry_type_enum_optional">[optional]</span> 15488 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) 15489use case.<wbr/> The camera device will support high speed capture session created by 15490<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which 15491only accepts high speed request lists created by 15492<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p> 15493<p>A camera device can still support high speed video streaming by advertising the high speed 15494FPS 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 15495capture request per frame control and synchronization requirements will apply to 15496the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability describes 15497the capability of a specialized operating mode with many limitations (see below),<wbr/> which 15498is only targeted at high speed video recording.<wbr/></p> 15499<p>The supported high speed video sizes and fps ranges are specified in 15500<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/> 15501To get desired output frame rates,<wbr/> the application is only allowed to select video size 15502and FPS range combinations provided by 15503<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/> 15504The 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> 15505<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 15506ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 15507controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 15508and post-processing parameters is possible.<wbr/> All other controls operate the 15509same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 15510android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 15511<ul> 15512<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 15513<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 15514<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 15515<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 15516<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 15517<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 15518<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 15519<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 15520<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 15521<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 15522</ul> 15523<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 15524<ul> 15525<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not 15526work since aeMode is ON)</li> 15527<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 15528<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 15529<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li> 15530</ul> 15531<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 15532be lower than what camera can output,<wbr/> depending on the destination Surfaces for 15533the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 15534the application need check if the video encoder is capable of supporting the 15535high frame rate for a given video size,<wbr/> or it will end up with lower recording 15536frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame 15537rate will be bounded by the screen refresh rate.<wbr/></p> 15538<p>The camera device will only support up to 2 high speed simultaneous output surfaces 15539(preview and recording surfaces) 15540in this mode.<wbr/> Above controls will be effective only if all of below conditions are true:</p> 15541<ul> 15542<li>The application creates a camera capture session with no more than 2 surfaces via 15543<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The 15544targeted surfaces must be preview surface (either from 15545<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 15546recording surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or 15547<a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li> 15548<li>The stream sizes are selected from the sizes reported by 15549<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li> 15550<li>The FPS ranges are selected from 15551<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li> 15552</ul> 15553<p>When above conditions are NOT satistied,<wbr/> 15554<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a> 15555will fail.<wbr/></p> 15556<p>Switching to a FPS range that has different maximum FPS may trigger some camera device 15557reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 15558the application avoids unnecessary maximum target FPS changes as much as possible 15559during high speed streaming.<wbr/></p></span> 15560 </li> 15561 </ul> 15562 15563 </td> <!-- entry_type --> 15564 15565 <td class="entry_description"> 15566 <p>List of capabilities that this camera device 15567advertises as fully supporting.<wbr/></p> 15568 </td> 15569 15570 <td class="entry_units"> 15571 </td> 15572 15573 <td class="entry_range"> 15574 </td> 15575 15576 <td class="entry_tags"> 15577 </td> 15578 15579 </tr> 15580 <tr class="entries_header"> 15581 <th class="th_details" colspan="5">Details</th> 15582 </tr> 15583 <tr class="entry_cont"> 15584 <td class="entry_details" colspan="5"> 15585 <p>A capability is a contract that the camera device makes in order 15586to be able to satisfy one or more use cases.<wbr/></p> 15587<p>Listing a capability guarantees that the whole set of features 15588required to support a common use will all be available.<wbr/></p> 15589<p>Using a subset of the functionality provided by an unsupported 15590capability may be possible on a specific camera device implementation; 15591to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/> 15592<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/> 15593<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p> 15594<p>The following capabilities are guaranteed to be available on 15595<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p> 15596<ul> 15597<li>MANUAL_<wbr/>SENSOR</li> 15598<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li> 15599</ul> 15600<p>Other capabilities may be available on either FULL or LIMITED 15601devices,<wbr/> but the application should query this key to be sure.<wbr/></p> 15602 </td> 15603 </tr> 15604 15605 <tr class="entries_header"> 15606 <th class="th_details" colspan="5">HAL Implementation Details</th> 15607 </tr> 15608 <tr class="entry_cont"> 15609 <td class="entry_details" colspan="5"> 15610 <p>Additional constraint details per-capability will be available 15611in the Compatibility Test Suite.<wbr/></p> 15612<p>Minimum baseline requirements required for the 15613BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/> 15614Instead refer to "BC" tags and the camera CTS tests in the 15615android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p> 15616<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/> 15617<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the 15618request and the result in order to be considered to be 15619capability-compliant.<wbr/></p> 15620<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/> 15621then exposure time must be configurable via the request <em>and</em> 15622the actual exposure applied must be available via 15623the result.<wbr/></p> 15624<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the 15625<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p> 15626<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see 15627hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p> 15628<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the 15629CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p> 15630<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the 15631YUV_<wbr/>REPROCESSING capability must support the 15632CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p> 15633<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys 15634<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/> 15635<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> 15636<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in 15637addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT 15638enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available 15639if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace 15640DEPTH).<wbr/></p> 15641 </td> 15642 </tr> 15643 15644 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15645 <!-- end of entry --> 15646 15647 15648 <tr class="entry" id="static_android.request.availableRequestKeys"> 15649 <td class="entry_name 15650 " rowspan="5"> 15651 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys 15652 </td> 15653 <td class="entry_type"> 15654 <span class="entry_type_name">int32</span> 15655 <span class="entry_type_container">x</span> 15656 15657 <span class="entry_type_array"> 15658 n 15659 </span> 15660 <span class="entry_type_visibility"> [hidden]</span> 15661 15662 15663 <span class="entry_type_hwlevel">[legacy] </span> 15664 15665 15666 15667 15668 </td> <!-- entry_type --> 15669 15670 <td class="entry_description"> 15671 <p>A list of all keys that the camera device has available 15672to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p> 15673 </td> 15674 15675 <td class="entry_units"> 15676 </td> 15677 15678 <td class="entry_range"> 15679 </td> 15680 15681 <td class="entry_tags"> 15682 </td> 15683 15684 </tr> 15685 <tr class="entries_header"> 15686 <th class="th_details" colspan="5">Details</th> 15687 </tr> 15688 <tr class="entry_cont"> 15689 <td class="entry_details" colspan="5"> 15690 <p>Attempting to set a key into a CaptureRequest that is not 15691listed here will result in an invalid request and will be rejected 15692by the camera device.<wbr/></p> 15693<p>This field can be used to query the feature set of a camera device 15694at a more granular level than capabilities.<wbr/> This is especially 15695important for optional keys that are not listed under any capability 15696in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 15697 </td> 15698 </tr> 15699 15700 <tr class="entries_header"> 15701 <th class="th_details" colspan="5">HAL Implementation Details</th> 15702 </tr> 15703 <tr class="entry_cont"> 15704 <td class="entry_details" colspan="5"> 15705 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 15706extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 15707<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 15708vendor extensions API and not against this field.<wbr/></p> 15709<p>The HAL must not consume any request tags that are not listed either 15710here or in the vendor tag list.<wbr/></p> 15711<p>The public camera2 API will always make the vendor tags visible 15712via 15713<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> 15714 </td> 15715 </tr> 15716 15717 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15718 <!-- end of entry --> 15719 15720 15721 <tr class="entry" id="static_android.request.availableResultKeys"> 15722 <td class="entry_name 15723 " rowspan="5"> 15724 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys 15725 </td> 15726 <td class="entry_type"> 15727 <span class="entry_type_name">int32</span> 15728 <span class="entry_type_container">x</span> 15729 15730 <span class="entry_type_array"> 15731 n 15732 </span> 15733 <span class="entry_type_visibility"> [hidden]</span> 15734 15735 15736 <span class="entry_type_hwlevel">[legacy] </span> 15737 15738 15739 15740 15741 </td> <!-- entry_type --> 15742 15743 <td class="entry_description"> 15744 <p>A list of all keys that the camera device has available 15745to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p> 15746 </td> 15747 15748 <td class="entry_units"> 15749 </td> 15750 15751 <td class="entry_range"> 15752 </td> 15753 15754 <td class="entry_tags"> 15755 </td> 15756 15757 </tr> 15758 <tr class="entries_header"> 15759 <th class="th_details" colspan="5">Details</th> 15760 </tr> 15761 <tr class="entry_cont"> 15762 <td class="entry_details" colspan="5"> 15763 <p>Attempting to get a key from a CaptureResult that is not 15764listed here will always return a <code>null</code> value.<wbr/> Getting a key from 15765a CaptureResult that is listed here will generally never return a <code>null</code> 15766value.<wbr/></p> 15767<p>The following keys may return <code>null</code> unless they are enabled:</p> 15768<ul> 15769<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> 15770</ul> 15771<p>(Those sometimes-null keys will nevertheless be listed here 15772if they are available.<wbr/>)</p> 15773<p>This field can be used to query the feature set of a camera device 15774at a more granular level than capabilities.<wbr/> This is especially 15775important for optional keys that are not listed under any capability 15776in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 15777 </td> 15778 </tr> 15779 15780 <tr class="entries_header"> 15781 <th class="th_details" colspan="5">HAL Implementation Details</th> 15782 </tr> 15783 <tr class="entry_cont"> 15784 <td class="entry_details" colspan="5"> 15785 <p>Tags listed here must always have an entry in the result metadata,<wbr/> 15786even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 15787matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 15788<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 15789extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 15790<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 15791vendor extensions API and not against this field.<wbr/></p> 15792<p>The HAL must not produce any result tags that are not listed either 15793here or in the vendor tag list.<wbr/></p> 15794<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> 15795 </td> 15796 </tr> 15797 15798 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15799 <!-- end of entry --> 15800 15801 15802 <tr class="entry" id="static_android.request.availableCharacteristicsKeys"> 15803 <td class="entry_name 15804 " rowspan="5"> 15805 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys 15806 </td> 15807 <td class="entry_type"> 15808 <span class="entry_type_name">int32</span> 15809 <span class="entry_type_container">x</span> 15810 15811 <span class="entry_type_array"> 15812 n 15813 </span> 15814 <span class="entry_type_visibility"> [hidden]</span> 15815 15816 15817 <span class="entry_type_hwlevel">[legacy] </span> 15818 15819 15820 15821 15822 </td> <!-- entry_type --> 15823 15824 <td class="entry_description"> 15825 <p>A list of all keys that the camera device has available 15826to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p> 15827 </td> 15828 15829 <td class="entry_units"> 15830 </td> 15831 15832 <td class="entry_range"> 15833 </td> 15834 15835 <td class="entry_tags"> 15836 </td> 15837 15838 </tr> 15839 <tr class="entries_header"> 15840 <th class="th_details" colspan="5">Details</th> 15841 </tr> 15842 <tr class="entry_cont"> 15843 <td class="entry_details" colspan="5"> 15844 <p>This entry follows the same rules as 15845<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for 15846CameraCharacteristics instead of CaptureResult).<wbr/> See above for more 15847details.<wbr/></p> 15848 </td> 15849 </tr> 15850 15851 <tr class="entries_header"> 15852 <th class="th_details" colspan="5">HAL Implementation Details</th> 15853 </tr> 15854 <tr class="entry_cont"> 15855 <td class="entry_details" colspan="5"> 15856 <p>Keys listed here must always have an entry in the static info metadata,<wbr/> 15857even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 15858matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 15859<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 15860extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 15861<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 15862vendor extensions API and not against this field.<wbr/></p> 15863<p>The HAL must not have any tags in its static info that are not listed 15864either here or in the vendor tag list.<wbr/></p> 15865<p>The public camera2 API will always make the vendor tags visible 15866via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p> 15867 </td> 15868 </tr> 15869 15870 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15871 <!-- end of entry --> 15872 15873 15874 15875 <!-- end of kind --> 15876 </tbody> 15877 <tr><td colspan="6" class="kind">dynamic</td></tr> 15878 15879 <thead class="entries_header"> 15880 <tr> 15881 <th class="th_name">Property Name</th> 15882 <th class="th_type">Type</th> 15883 <th class="th_description">Description</th> 15884 <th class="th_units">Units</th> 15885 <th class="th_range">Range</th> 15886 <th class="th_tags">Tags</th> 15887 </tr> 15888 </thead> 15889 15890 <tbody> 15891 15892 15893 15894 15895 15896 15897 15898 15899 15900 15901 <tr class="entry" id="dynamic_android.request.frameCount"> 15902 <td class="entry_name 15903 entry_name_deprecated 15904 " rowspan="3"> 15905 android.<wbr/>request.<wbr/>frame<wbr/>Count 15906 </td> 15907 <td class="entry_type"> 15908 <span class="entry_type_name">int32</span> 15909 15910 <span class="entry_type_visibility"> [hidden]</span> 15911 15912 15913 15914 <span class="entry_type_deprecated">[deprecated] </span> 15915 15916 15917 15918 </td> <!-- entry_type --> 15919 15920 <td class="entry_description"> 15921 <p>A frame counter set by the framework.<wbr/> This value monotonically 15922increases with every new result (that is,<wbr/> each new result has a unique 15923frameCount value).<wbr/></p> 15924 </td> 15925 15926 <td class="entry_units"> 15927 count of frames 15928 </td> 15929 15930 <td class="entry_range"> 15931 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15932 <p>> 0</p> 15933 </td> 15934 15935 <td class="entry_tags"> 15936 </td> 15937 15938 </tr> 15939 <tr class="entries_header"> 15940 <th class="th_details" colspan="5">Details</th> 15941 </tr> 15942 <tr class="entry_cont"> 15943 <td class="entry_details" colspan="5"> 15944 <p>Reset on release()</p> 15945 </td> 15946 </tr> 15947 15948 15949 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15950 <!-- end of entry --> 15951 15952 15953 <tr class="entry" id="dynamic_android.request.id"> 15954 <td class="entry_name 15955 " rowspan="1"> 15956 android.<wbr/>request.<wbr/>id 15957 </td> 15958 <td class="entry_type"> 15959 <span class="entry_type_name">int32</span> 15960 15961 <span class="entry_type_visibility"> [hidden]</span> 15962 15963 15964 15965 15966 15967 15968 </td> <!-- entry_type --> 15969 15970 <td class="entry_description"> 15971 <p>An application-specified ID for the current 15972request.<wbr/> Must be maintained unchanged in output 15973frame</p> 15974 </td> 15975 15976 <td class="entry_units"> 15977 arbitrary integer assigned by application 15978 </td> 15979 15980 <td class="entry_range"> 15981 <p>Any int</p> 15982 </td> 15983 15984 <td class="entry_tags"> 15985 <ul class="entry_tags"> 15986 <li><a href="#tag_V1">V1</a></li> 15987 </ul> 15988 </td> 15989 15990 </tr> 15991 15992 15993 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15994 <!-- end of entry --> 15995 15996 15997 <tr class="entry" id="dynamic_android.request.metadataMode"> 15998 <td class="entry_name 15999 " rowspan="1"> 16000 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 16001 </td> 16002 <td class="entry_type"> 16003 <span class="entry_type_name entry_type_name_enum">byte</span> 16004 16005 <span class="entry_type_visibility"> [system]</span> 16006 16007 16008 16009 16010 16011 <ul class="entry_type_enum"> 16012 <li> 16013 <span class="entry_type_enum_name">NONE</span> 16014 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 16015for application-bound buffer data.<wbr/> If no 16016application-bound streams exist,<wbr/> no frame should be 16017placed in the output frame queue.<wbr/> If such streams 16018exist,<wbr/> a frame should be placed on the output queue 16019with null metadata but with the necessary output buffer 16020information.<wbr/> Timestamp information should still be 16021included with any output stream buffers</p></span> 16022 </li> 16023 <li> 16024 <span class="entry_type_enum_name">FULL</span> 16025 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 16026only be produced if they are separately 16027enabled</p></span> 16028 </li> 16029 </ul> 16030 16031 </td> <!-- entry_type --> 16032 16033 <td class="entry_description"> 16034 <p>How much metadata to produce on 16035output</p> 16036 </td> 16037 16038 <td class="entry_units"> 16039 </td> 16040 16041 <td class="entry_range"> 16042 </td> 16043 16044 <td class="entry_tags"> 16045 <ul class="entry_tags"> 16046 <li><a href="#tag_FUTURE">FUTURE</a></li> 16047 </ul> 16048 </td> 16049 16050 </tr> 16051 16052 16053 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16054 <!-- end of entry --> 16055 16056 16057 <tr class="entry" id="dynamic_android.request.outputStreams"> 16058 <td class="entry_name 16059 entry_name_deprecated 16060 " rowspan="3"> 16061 android.<wbr/>request.<wbr/>output<wbr/>Streams 16062 </td> 16063 <td class="entry_type"> 16064 <span class="entry_type_name">int32</span> 16065 <span class="entry_type_container">x</span> 16066 16067 <span class="entry_type_array"> 16068 n 16069 </span> 16070 <span class="entry_type_visibility"> [system]</span> 16071 16072 16073 16074 <span class="entry_type_deprecated">[deprecated] </span> 16075 16076 16077 16078 </td> <!-- entry_type --> 16079 16080 <td class="entry_description"> 16081 <p>Lists which camera output streams image data 16082from this capture must be sent to</p> 16083 </td> 16084 16085 <td class="entry_units"> 16086 List of camera stream IDs 16087 </td> 16088 16089 <td class="entry_range"> 16090 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16091 <p>List must only include streams that have been 16092created</p> 16093 </td> 16094 16095 <td class="entry_tags"> 16096 <ul class="entry_tags"> 16097 <li><a href="#tag_HAL2">HAL2</a></li> 16098 </ul> 16099 </td> 16100 16101 </tr> 16102 <tr class="entries_header"> 16103 <th class="th_details" colspan="5">Details</th> 16104 </tr> 16105 <tr class="entry_cont"> 16106 <td class="entry_details" colspan="5"> 16107 <p>If no output streams are listed,<wbr/> then the image 16108data should simply be discarded.<wbr/> The image data must 16109still be captured for metadata and statistics production,<wbr/> 16110and the lens and flash must operate as requested.<wbr/></p> 16111 </td> 16112 </tr> 16113 16114 16115 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16116 <!-- end of entry --> 16117 16118 16119 <tr class="entry" id="dynamic_android.request.pipelineDepth"> 16120 <td class="entry_name 16121 " rowspan="5"> 16122 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth 16123 </td> 16124 <td class="entry_type"> 16125 <span class="entry_type_name">byte</span> 16126 16127 <span class="entry_type_visibility"> [public]</span> 16128 16129 16130 <span class="entry_type_hwlevel">[legacy] </span> 16131 16132 16133 16134 16135 </td> <!-- entry_type --> 16136 16137 <td class="entry_description"> 16138 <p>Specifies the number of pipeline stages the frame went 16139through from when it was exposed to when the final completed result 16140was available to the framework.<wbr/></p> 16141 </td> 16142 16143 <td class="entry_units"> 16144 </td> 16145 16146 <td class="entry_range"> 16147 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p> 16148 </td> 16149 16150 <td class="entry_tags"> 16151 </td> 16152 16153 </tr> 16154 <tr class="entries_header"> 16155 <th class="th_details" colspan="5">Details</th> 16156 </tr> 16157 <tr class="entry_cont"> 16158 <td class="entry_details" colspan="5"> 16159 <p>Depending on what settings are used in the request,<wbr/> and 16160what streams are configured,<wbr/> the data may undergo less processing,<wbr/> 16161and some pipeline stages skipped.<wbr/></p> 16162<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p> 16163 </td> 16164 </tr> 16165 16166 <tr class="entries_header"> 16167 <th class="th_details" colspan="5">HAL Implementation Details</th> 16168 </tr> 16169 <tr class="entry_cont"> 16170 <td class="entry_details" colspan="5"> 16171 <p>This value must always represent the accurate count of how many 16172pipeline stages were actually used.<wbr/></p> 16173 </td> 16174 </tr> 16175 16176 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16177 <!-- end of entry --> 16178 16179 16180 16181 <!-- end of kind --> 16182 </tbody> 16183 16184 <!-- end of section --> 16185 <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr> 16186 16187 16188 <tr><td colspan="6" class="kind">controls</td></tr> 16189 16190 <thead class="entries_header"> 16191 <tr> 16192 <th class="th_name">Property Name</th> 16193 <th class="th_type">Type</th> 16194 <th class="th_description">Description</th> 16195 <th class="th_units">Units</th> 16196 <th class="th_range">Range</th> 16197 <th class="th_tags">Tags</th> 16198 </tr> 16199 </thead> 16200 16201 <tbody> 16202 16203 16204 16205 16206 16207 16208 16209 16210 16211 16212 <tr class="entry" id="controls_android.scaler.cropRegion"> 16213 <td class="entry_name 16214 " rowspan="5"> 16215 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 16216 </td> 16217 <td class="entry_type"> 16218 <span class="entry_type_name">int32</span> 16219 <span class="entry_type_container">x</span> 16220 16221 <span class="entry_type_array"> 16222 4 16223 </span> 16224 <span class="entry_type_visibility"> [public as rectangle]</span> 16225 16226 16227 <span class="entry_type_hwlevel">[legacy] </span> 16228 16229 16230 16231 16232 </td> <!-- entry_type --> 16233 16234 <td class="entry_description"> 16235 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 16236 </td> 16237 16238 <td class="entry_units"> 16239 Pixel coordinates relative to 16240 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 16241 </td> 16242 16243 <td class="entry_range"> 16244 </td> 16245 16246 <td class="entry_tags"> 16247 <ul class="entry_tags"> 16248 <li><a href="#tag_BC">BC</a></li> 16249 </ul> 16250 </td> 16251 16252 </tr> 16253 <tr class="entries_header"> 16254 <th class="th_details" colspan="5">Details</th> 16255 </tr> 16256 <tr class="entry_cont"> 16257 <td class="entry_details" colspan="5"> 16258 <p>This control can be used to implement digital zoom.<wbr/></p> 16259<p>The crop region coordinate system is based off 16260<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 16261top-left corner of the sensor active array.<wbr/></p> 16262<p>Output streams use this rectangle to produce their output,<wbr/> 16263cropping to a smaller region if necessary to maintain the 16264stream's aspect ratio,<wbr/> then scaling the sensor input to 16265match the output's configured resolution.<wbr/></p> 16266<p>The crop region is applied after the RAW to other color 16267space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 16268(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 16269croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 16270<p>For non-raw streams,<wbr/> any additional per-stream cropping will 16271be done to maximize the final pixel area of the stream.<wbr/></p> 16272<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 16273ratio,<wbr/> then 4:3 streams will use the exact crop 16274region.<wbr/> 16:9 streams will further crop vertically 16275(letterbox).<wbr/></p> 16276<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 16277outputs will crop horizontally (pillarbox),<wbr/> and 16:9 16278streams will match exactly.<wbr/> These additional crops will 16279be centered within the crop region.<wbr/></p> 16280<p>The width and height of the crop region cannot 16281be set to be smaller than 16282<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 16283<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> 16284<p>The camera device may adjust the crop region to account 16285for rounding and other hardware requirements; the final 16286crop region used will be included in the output capture 16287result.<wbr/></p> 16288 </td> 16289 </tr> 16290 16291 <tr class="entries_header"> 16292 <th class="th_details" colspan="5">HAL Implementation Details</th> 16293 </tr> 16294 <tr class="entry_cont"> 16295 <td class="entry_details" colspan="5"> 16296 <p>The output streams must maintain square pixels at all 16297times,<wbr/> no matter what the relative aspect ratios of the 16298crop region and the stream are.<wbr/> Negative values for 16299corner are allowed for raw output if full pixel array is 16300larger than active pixel array.<wbr/> Width and height may be 16301rounded to nearest larger supportable width,<wbr/> especially 16302for raw output,<wbr/> where only a few fixed scales may be 16303possible.<wbr/></p> 16304<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller 16305size than active array size,<wbr/> the HAL need follow below cropping rules:</p> 16306<ul> 16307<li> 16308<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active 16309array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from 16310<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> 16311<ol> 16312<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor 16313cropped pixel area by (tx,<wbr/> ty),<wbr/> 16314where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code> 16315and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The 16316(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the 16317<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 16318<li>Scale the width and height of requested cropRegion with scaling factor of 16319sensor<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 16320respectively.<wbr/> 16321Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image 16322with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need 16323follow the general cropping rule for this new cropRegion and effective active 16324array size.<wbr/></li> 16325</ol> 16326</li> 16327<li> 16328<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/> 16329The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/> 16330The reported cropRegion may be slightly different with the requested cropRegion since 16331the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other 16332hardware limitations.<wbr/></p> 16333</li> 16334</ul> 16335<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 16336 </td> 16337 </tr> 16338 16339 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16340 <!-- end of entry --> 16341 16342 16343 16344 <!-- end of kind --> 16345 </tbody> 16346 <tr><td colspan="6" class="kind">static</td></tr> 16347 16348 <thead class="entries_header"> 16349 <tr> 16350 <th class="th_name">Property Name</th> 16351 <th class="th_type">Type</th> 16352 <th class="th_description">Description</th> 16353 <th class="th_units">Units</th> 16354 <th class="th_range">Range</th> 16355 <th class="th_tags">Tags</th> 16356 </tr> 16357 </thead> 16358 16359 <tbody> 16360 16361 16362 16363 16364 16365 16366 16367 16368 16369 16370 <tr class="entry" id="static_android.scaler.availableFormats"> 16371 <td class="entry_name 16372 entry_name_deprecated 16373 " rowspan="5"> 16374 android.<wbr/>scaler.<wbr/>available<wbr/>Formats 16375 </td> 16376 <td class="entry_type"> 16377 <span class="entry_type_name entry_type_name_enum">int32</span> 16378 <span class="entry_type_container">x</span> 16379 16380 <span class="entry_type_array"> 16381 n 16382 </span> 16383 <span class="entry_type_visibility"> [hidden as imageFormat]</span> 16384 16385 16386 16387 <span class="entry_type_deprecated">[deprecated] </span> 16388 16389 16390 <ul class="entry_type_enum"> 16391 <li> 16392 <span class="entry_type_enum_name">RAW16</span> 16393 <span class="entry_type_enum_optional">[optional]</span> 16394 <span class="entry_type_enum_value">0x20</span> 16395 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image 16396buffers with 16-bit pixels.<wbr/></p> 16397<p>Buffers of this format are typically expected to have a 16398Bayer Color Filter Array (CFA) layout,<wbr/> which is given in 16399<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with 16400CFAs that are not representable by a format in 16401<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not 16402use this format.<wbr/></p> 16403<p>Buffers of this format will also follow the constraints given for 16404RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p> 16405<p>This format is intended to give users access to the full contents 16406of the buffers coming directly from the image sensor prior to any 16407cropping or scaling operations,<wbr/> and all coordinate systems for 16408metadata used for this format are relative to the size of the 16409active region of the image sensor before any geometric distortion 16410correction has been applied (i.<wbr/>e.<wbr/> 16411<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 16412dimensions for this format are limited to the full dimensions of 16413the 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 16414<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 16415only supported output size).<wbr/></p> 16416<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for 16417the full set of performance guarantees.<wbr/></p></span> 16418 </li> 16419 <li> 16420 <span class="entry_type_enum_name">RAW_OPAQUE</span> 16421 <span class="entry_type_enum_optional">[optional]</span> 16422 <span class="entry_type_enum_value">0x24</span> 16423 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or 16424<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a> 16425as referred in public API) is a format for raw image buffers 16426coming from an image sensor.<wbr/></p> 16427<p>The actual structure of buffers of this format is 16428platform-specific,<wbr/> but must follow several constraints:</p> 16429<ol> 16430<li>No image post-processing operations may have been applied to 16431buffers of this type.<wbr/> These buffers contain raw image data coming 16432directly from the image sensor.<wbr/></li> 16433<li>If a buffer of this format is passed to the camera device for 16434reprocessing,<wbr/> the resulting images will be identical to the images 16435produced if the buffer had come directly from the sensor and was 16436processed with the same settings.<wbr/></li> 16437</ol> 16438<p>The intended use for this format is to allow access to the native 16439raw format buffers coming directly from the camera sensor without 16440any additional conversions or decrease in framerate.<wbr/></p> 16441<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 16442performance guarantees.<wbr/></p></span> 16443 </li> 16444 <li> 16445 <span class="entry_type_enum_name">YV12</span> 16446 <span class="entry_type_enum_optional">[optional]</span> 16447 <span class="entry_type_enum_value">0x32315659</span> 16448 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span> 16449 </li> 16450 <li> 16451 <span class="entry_type_enum_name">YCrCb_420_SP</span> 16452 <span class="entry_type_enum_optional">[optional]</span> 16453 <span class="entry_type_enum_value">0x11</span> 16454 <span class="entry_type_enum_notes"><p>NV21</p></span> 16455 </li> 16456 <li> 16457 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span> 16458 <span class="entry_type_enum_value">0x22</span> 16459 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span> 16460 </li> 16461 <li> 16462 <span class="entry_type_enum_name">YCbCr_420_888</span> 16463 <span class="entry_type_enum_value">0x23</span> 16464 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span> 16465 </li> 16466 <li> 16467 <span class="entry_type_enum_name">BLOB</span> 16468 <span class="entry_type_enum_value">0x21</span> 16469 <span class="entry_type_enum_notes"><p>JPEG format</p></span> 16470 </li> 16471 </ul> 16472 16473 </td> <!-- entry_type --> 16474 16475 <td class="entry_description"> 16476 <p>The list of image formats that are supported by this 16477camera device for output streams.<wbr/></p> 16478 </td> 16479 16480 <td class="entry_units"> 16481 </td> 16482 16483 <td class="entry_range"> 16484 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16485 </td> 16486 16487 <td class="entry_tags"> 16488 <ul class="entry_tags"> 16489 <li><a href="#tag_BC">BC</a></li> 16490 </ul> 16491 </td> 16492 16493 </tr> 16494 <tr class="entries_header"> 16495 <th class="th_details" colspan="5">Details</th> 16496 </tr> 16497 <tr class="entry_cont"> 16498 <td class="entry_details" colspan="5"> 16499 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p> 16500<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p> 16501 </td> 16502 </tr> 16503 16504 <tr class="entries_header"> 16505 <th class="th_details" colspan="5">HAL Implementation Details</th> 16506 </tr> 16507 <tr class="entry_cont"> 16508 <td class="entry_details" colspan="5"> 16509 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 16510system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> 16511<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform 16512gralloc module will select a format based on the usage flags provided 16513by the camera HAL device and the other endpoint of the stream.<wbr/> It is 16514usually used by preview and recording streams,<wbr/> where the application doesn't 16515need access the image data.<wbr/></p> 16516<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream 16517needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p> 16518<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p> 16519<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly 16520recommended that any information used by the camera device when 16521processing images is fully expressed by the result metadata 16522for that image buffer.<wbr/></p> 16523 </td> 16524 </tr> 16525 16526 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16527 <!-- end of entry --> 16528 16529 16530 <tr class="entry" id="static_android.scaler.availableJpegMinDurations"> 16531 <td class="entry_name 16532 entry_name_deprecated 16533 " rowspan="3"> 16534 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations 16535 </td> 16536 <td class="entry_type"> 16537 <span class="entry_type_name">int64</span> 16538 <span class="entry_type_container">x</span> 16539 16540 <span class="entry_type_array"> 16541 n 16542 </span> 16543 <span class="entry_type_visibility"> [hidden]</span> 16544 16545 16546 16547 <span class="entry_type_deprecated">[deprecated] </span> 16548 16549 16550 16551 </td> <!-- entry_type --> 16552 16553 <td class="entry_description"> 16554 <p>The minimum frame duration that is supported 16555for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p> 16556 </td> 16557 16558 <td class="entry_units"> 16559 Nanoseconds 16560 </td> 16561 16562 <td class="entry_range"> 16563 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16564 <p>TODO: Remove property.<wbr/></p> 16565 </td> 16566 16567 <td class="entry_tags"> 16568 <ul class="entry_tags"> 16569 <li><a href="#tag_BC">BC</a></li> 16570 </ul> 16571 </td> 16572 16573 </tr> 16574 <tr class="entries_header"> 16575 <th class="th_details" colspan="5">Details</th> 16576 </tr> 16577 <tr class="entry_cont"> 16578 <td class="entry_details" colspan="5"> 16579 <p>This corresponds to the minimum steady-state frame duration when only 16580that JPEG stream is active and captured in a burst,<wbr/> with all 16581processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> 16582<p>When multiple streams are configured,<wbr/> the minimum 16583frame duration will be >= max(individual stream min 16584durations)</p> 16585 </td> 16586 </tr> 16587 16588 16589 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16590 <!-- end of entry --> 16591 16592 16593 <tr class="entry" id="static_android.scaler.availableJpegSizes"> 16594 <td class="entry_name 16595 entry_name_deprecated 16596 " rowspan="5"> 16597 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes 16598 </td> 16599 <td class="entry_type"> 16600 <span class="entry_type_name">int32</span> 16601 <span class="entry_type_container">x</span> 16602 16603 <span class="entry_type_array"> 16604 n x 2 16605 </span> 16606 <span class="entry_type_visibility"> [hidden as size]</span> 16607 16608 16609 16610 <span class="entry_type_deprecated">[deprecated] </span> 16611 16612 16613 16614 </td> <!-- entry_type --> 16615 16616 <td class="entry_description"> 16617 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p> 16618 </td> 16619 16620 <td class="entry_units"> 16621 </td> 16622 16623 <td class="entry_range"> 16624 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16625 <p>TODO: Remove property.<wbr/></p> 16626 </td> 16627 16628 <td class="entry_tags"> 16629 <ul class="entry_tags"> 16630 <li><a href="#tag_BC">BC</a></li> 16631 </ul> 16632 </td> 16633 16634 </tr> 16635 <tr class="entries_header"> 16636 <th class="th_details" colspan="5">Details</th> 16637 </tr> 16638 <tr class="entry_cont"> 16639 <td class="entry_details" colspan="5"> 16640 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support 16641sensor 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> 16642 </td> 16643 </tr> 16644 16645 <tr class="entries_header"> 16646 <th class="th_details" colspan="5">HAL Implementation Details</th> 16647 </tr> 16648 <tr class="entry_cont"> 16649 <td class="entry_details" colspan="5"> 16650 <p>The HAL must include sensor maximum resolution 16651(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/> 16652and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p> 16653 </td> 16654 </tr> 16655 16656 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16657 <!-- end of entry --> 16658 16659 16660 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom"> 16661 <td class="entry_name 16662 " rowspan="3"> 16663 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom 16664 </td> 16665 <td class="entry_type"> 16666 <span class="entry_type_name">float</span> 16667 16668 <span class="entry_type_visibility"> [public]</span> 16669 16670 16671 <span class="entry_type_hwlevel">[legacy] </span> 16672 16673 16674 16675 16676 </td> <!-- entry_type --> 16677 16678 <td class="entry_description"> 16679 <p>The maximum ratio between both active area width 16680and crop region width,<wbr/> and active area height and 16681crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 16682 </td> 16683 16684 <td class="entry_units"> 16685 Zoom scale factor 16686 </td> 16687 16688 <td class="entry_range"> 16689 <p>>=1</p> 16690 </td> 16691 16692 <td class="entry_tags"> 16693 <ul class="entry_tags"> 16694 <li><a href="#tag_BC">BC</a></li> 16695 </ul> 16696 </td> 16697 16698 </tr> 16699 <tr class="entries_header"> 16700 <th class="th_details" colspan="5">Details</th> 16701 </tr> 16702 <tr class="entry_cont"> 16703 <td class="entry_details" colspan="5"> 16704 <p>This represents the maximum amount of zooming possible by 16705the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping 16706window size.<wbr/></p> 16707<p>Crop regions that have a width or height that is smaller 16708than this ratio allows will be rounded up to the minimum 16709allowed size by the camera device.<wbr/></p> 16710 </td> 16711 </tr> 16712 16713 16714 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16715 <!-- end of entry --> 16716 16717 16718 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations"> 16719 <td class="entry_name 16720 entry_name_deprecated 16721 " rowspan="3"> 16722 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations 16723 </td> 16724 <td class="entry_type"> 16725 <span class="entry_type_name">int64</span> 16726 <span class="entry_type_container">x</span> 16727 16728 <span class="entry_type_array"> 16729 n 16730 </span> 16731 <span class="entry_type_visibility"> [hidden]</span> 16732 16733 16734 16735 <span class="entry_type_deprecated">[deprecated] </span> 16736 16737 16738 16739 </td> <!-- entry_type --> 16740 16741 <td class="entry_description"> 16742 <p>For each available processed output size (defined in 16743<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the 16744minimum supportable frame duration for that size.<wbr/></p> 16745 </td> 16746 16747 <td class="entry_units"> 16748 Nanoseconds 16749 </td> 16750 16751 <td class="entry_range"> 16752 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16753 </td> 16754 16755 <td class="entry_tags"> 16756 <ul class="entry_tags"> 16757 <li><a href="#tag_BC">BC</a></li> 16758 </ul> 16759 </td> 16760 16761 </tr> 16762 <tr class="entries_header"> 16763 <th class="th_details" colspan="5">Details</th> 16764 </tr> 16765 <tr class="entry_cont"> 16766 <td class="entry_details" colspan="5"> 16767 <p>This should correspond to the frame duration when only that processed 16768stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 16769set to FAST.<wbr/></p> 16770<p>When multiple streams are configured,<wbr/> the minimum frame duration will 16771be >= max(individual stream min durations).<wbr/></p> 16772 </td> 16773 </tr> 16774 16775 16776 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16777 <!-- end of entry --> 16778 16779 16780 <tr class="entry" id="static_android.scaler.availableProcessedSizes"> 16781 <td class="entry_name 16782 entry_name_deprecated 16783 " rowspan="5"> 16784 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes 16785 </td> 16786 <td class="entry_type"> 16787 <span class="entry_type_name">int32</span> 16788 <span class="entry_type_container">x</span> 16789 16790 <span class="entry_type_array"> 16791 n x 2 16792 </span> 16793 <span class="entry_type_visibility"> [hidden as size]</span> 16794 16795 16796 16797 <span class="entry_type_deprecated">[deprecated] </span> 16798 16799 16800 16801 </td> <!-- entry_type --> 16802 16803 <td class="entry_description"> 16804 <p>The resolutions available for use with 16805processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and 16806platform opaque YUV/<wbr/>RGB streams to the GPU or video 16807encoders.<wbr/></p> 16808 </td> 16809 16810 <td class="entry_units"> 16811 </td> 16812 16813 <td class="entry_range"> 16814 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16815 </td> 16816 16817 <td class="entry_tags"> 16818 <ul class="entry_tags"> 16819 <li><a href="#tag_BC">BC</a></li> 16820 </ul> 16821 </td> 16822 16823 </tr> 16824 <tr class="entries_header"> 16825 <th class="th_details" colspan="5">Details</th> 16826 </tr> 16827 <tr class="entry_cont"> 16828 <td class="entry_details" colspan="5"> 16829 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p> 16830<p>For a given use case,<wbr/> the actual maximum supported resolution 16831may be lower than what is listed here,<wbr/> depending on the destination 16832Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 16833the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 16834smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 16835can provide.<wbr/></p> 16836<p>Please reference the documentation for the image data destination to 16837check if it limits the maximum size for image data.<wbr/></p> 16838 </td> 16839 </tr> 16840 16841 <tr class="entries_header"> 16842 <th class="th_details" colspan="5">HAL Implementation Details</th> 16843 </tr> 16844 <tr class="entry_cont"> 16845 <td class="entry_details" colspan="5"> 16846 <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/> 16847the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a> 16848and each below resolution if it is smaller than or equal to the sensor 16849maximum resolution (if they are not listed in JPEG sizes already):</p> 16850<ul> 16851<li>240p (320 x 240)</li> 16852<li>480p (640 x 480)</li> 16853<li>720p (1280 x 720)</li> 16854<li>1080p (1920 x 1080)</li> 16855</ul> 16856<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/> 16857the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p> 16858 </td> 16859 </tr> 16860 16861 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16862 <!-- end of entry --> 16863 16864 16865 <tr class="entry" id="static_android.scaler.availableRawMinDurations"> 16866 <td class="entry_name 16867 entry_name_deprecated 16868 " rowspan="3"> 16869 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations 16870 </td> 16871 <td class="entry_type"> 16872 <span class="entry_type_name">int64</span> 16873 <span class="entry_type_container">x</span> 16874 16875 <span class="entry_type_array"> 16876 n 16877 </span> 16878 <span class="entry_type_visibility"> [system]</span> 16879 16880 16881 16882 <span class="entry_type_deprecated">[deprecated] </span> 16883 16884 16885 16886 </td> <!-- entry_type --> 16887 16888 <td class="entry_description"> 16889 <p>For each available raw output size (defined in 16890<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum 16891supportable frame duration for that size.<wbr/></p> 16892 </td> 16893 16894 <td class="entry_units"> 16895 Nanoseconds 16896 </td> 16897 16898 <td class="entry_range"> 16899 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16900 </td> 16901 16902 <td class="entry_tags"> 16903 <ul class="entry_tags"> 16904 <li><a href="#tag_BC">BC</a></li> 16905 </ul> 16906 </td> 16907 16908 </tr> 16909 <tr class="entries_header"> 16910 <th class="th_details" colspan="5">Details</th> 16911 </tr> 16912 <tr class="entry_cont"> 16913 <td class="entry_details" colspan="5"> 16914 <p>Should correspond to the frame duration when only the raw stream is 16915active.<wbr/></p> 16916<p>When multiple streams are configured,<wbr/> the minimum 16917frame duration will be >= max(individual stream min 16918durations)</p> 16919 </td> 16920 </tr> 16921 16922 16923 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16924 <!-- end of entry --> 16925 16926 16927 <tr class="entry" id="static_android.scaler.availableRawSizes"> 16928 <td class="entry_name 16929 entry_name_deprecated 16930 " rowspan="1"> 16931 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes 16932 </td> 16933 <td class="entry_type"> 16934 <span class="entry_type_name">int32</span> 16935 <span class="entry_type_container">x</span> 16936 16937 <span class="entry_type_array"> 16938 n x 2 16939 </span> 16940 <span class="entry_type_visibility"> [system as size]</span> 16941 16942 16943 16944 <span class="entry_type_deprecated">[deprecated] </span> 16945 16946 16947 16948 </td> <!-- entry_type --> 16949 16950 <td class="entry_description"> 16951 <p>The resolutions available for use with raw 16952sensor output streams,<wbr/> listed as width,<wbr/> 16953height</p> 16954 </td> 16955 16956 <td class="entry_units"> 16957 </td> 16958 16959 <td class="entry_range"> 16960 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16961 </td> 16962 16963 <td class="entry_tags"> 16964 </td> 16965 16966 </tr> 16967 16968 16969 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16970 <!-- end of entry --> 16971 16972 16973 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap"> 16974 <td class="entry_name 16975 " rowspan="5"> 16976 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map 16977 </td> 16978 <td class="entry_type"> 16979 <span class="entry_type_name">int32</span> 16980 16981 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span> 16982 16983 16984 16985 16986 16987 16988 </td> <!-- entry_type --> 16989 16990 <td class="entry_description"> 16991 <p>The mapping of image formats that are supported by this 16992camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> 16993 </td> 16994 16995 <td class="entry_units"> 16996 </td> 16997 16998 <td class="entry_range"> 16999 </td> 17000 17001 <td class="entry_tags"> 17002 <ul class="entry_tags"> 17003 <li><a href="#tag_REPROC">REPROC</a></li> 17004 </ul> 17005 </td> 17006 17007 </tr> 17008 <tr class="entries_header"> 17009 <th class="th_details" colspan="5">Details</th> 17010 </tr> 17011 <tr class="entry_cont"> 17012 <td class="entry_details" colspan="5"> 17013 <p>All camera devices with at least 1 17014<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one 17015available input format.<wbr/></p> 17016<p>The camera device will support the following map of formats,<wbr/> 17017if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p> 17018<table> 17019<thead> 17020<tr> 17021<th align="left">Input Format</th> 17022<th align="left">Output Format</th> 17023<th align="left">Capability</th> 17024</tr> 17025</thead> 17026<tbody> 17027<tr> 17028<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 17029<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17030<td align="left">PRIVATE_<wbr/>REPROCESSING</td> 17031</tr> 17032<tr> 17033<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 17034<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td> 17035<td align="left">PRIVATE_<wbr/>REPROCESSING</td> 17036</tr> 17037<tr> 17038<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> 17039<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17040<td align="left">YUV_<wbr/>REPROCESSING</td> 17041</tr> 17042<tr> 17043<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> 17044<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> 17045<td align="left">YUV_<wbr/>REPROCESSING</td> 17046</tr> 17047</tbody> 17048</table> 17049<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A 17050PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a> 17051with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p> 17052<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input 17053or 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> 17054<p>Attempting to configure an input stream with output streams not 17055listed as available in this map is not valid.<wbr/></p> 17056 </td> 17057 </tr> 17058 17059 <tr class="entries_header"> 17060 <th class="th_details" colspan="5">HAL Implementation Details</th> 17061 </tr> 17062 <tr class="entry_cont"> 17063 <td class="entry_details" colspan="5"> 17064 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition 17065of the image format enumerations.<wbr/> The PRIVATE format refers to the 17066HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine 17067the actual format by using the gralloc usage flags.<wbr/> 17068For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially 17069processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/> 17070See camera3.<wbr/>h for more details.<wbr/></p> 17071<p>This value is encoded as a variable-size array-of-arrays.<wbr/> 17072The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where 17073<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another 17074inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p> 17075<p>A code sample to read/<wbr/>write this encoding (with a device that 17076supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/> 17077and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p> 17078<pre><code>//<wbr/> reading 17079int32_<wbr/>t* contents = &entry.<wbr/>i32[0]; 17080for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) { 17081 int32_<wbr/>t format = contents[i++]; 17082 int32_<wbr/>t length = contents[i++]; 17083 int32_<wbr/>t output_<wbr/>formats[length]; 17084 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/> 17085 length * sizeof(int32_<wbr/>t)); 17086 i += length; 17087} 17088 17089//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING) 17090int32_<wbr/>t[] contents = { 17091 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 17092 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 17093}; 17094update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/> 17095 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry); 17096</code></pre> 17097<p>If the HAL claims to support any of the capabilities listed in the 17098above details,<wbr/> then it must also support all the input-output 17099combinations listed for that capability.<wbr/> It can optionally support 17100additional formats if it so chooses.<wbr/></p> 17101 </td> 17102 </tr> 17103 17104 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17105 <!-- end of entry --> 17106 17107 17108 <tr class="entry" id="static_android.scaler.availableStreamConfigurations"> 17109 <td class="entry_name 17110 " rowspan="5"> 17111 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations 17112 </td> 17113 <td class="entry_type"> 17114 <span class="entry_type_name entry_type_name_enum">int32</span> 17115 <span class="entry_type_container">x</span> 17116 17117 <span class="entry_type_array"> 17118 n x 4 17119 </span> 17120 <span class="entry_type_visibility"> [hidden as streamConfiguration]</span> 17121 17122 17123 <span class="entry_type_hwlevel">[legacy] </span> 17124 17125 17126 17127 <ul class="entry_type_enum"> 17128 <li> 17129 <span class="entry_type_enum_name">OUTPUT</span> 17130 </li> 17131 <li> 17132 <span class="entry_type_enum_name">INPUT</span> 17133 </li> 17134 </ul> 17135 17136 </td> <!-- entry_type --> 17137 17138 <td class="entry_description"> 17139 <p>The available stream configurations that this 17140camera device supports 17141(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 17142 </td> 17143 17144 <td class="entry_units"> 17145 </td> 17146 17147 <td class="entry_range"> 17148 </td> 17149 17150 <td class="entry_tags"> 17151 </td> 17152 17153 </tr> 17154 <tr class="entries_header"> 17155 <th class="th_details" colspan="5">Details</th> 17156 </tr> 17157 <tr class="entry_cont"> 17158 <td class="entry_details" colspan="5"> 17159 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> 17160tuples.<wbr/></p> 17161<p>For a given use case,<wbr/> the actual maximum supported resolution 17162may be lower than what is listed here,<wbr/> depending on the destination 17163Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 17164the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 17165smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 17166can provide.<wbr/></p> 17167<p>Please reference the documentation for the image data destination to 17168check if it limits the maximum size for image data.<wbr/></p> 17169<p>Not all output formats may be supported in a configuration with 17170an input stream of a particular format.<wbr/> For more details,<wbr/> see 17171<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 17172<p>The following table describes the minimum required output stream 17173configurations based on the hardware level 17174(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 17175<table> 17176<thead> 17177<tr> 17178<th align="center">Format</th> 17179<th align="center">Size</th> 17180<th align="center">Hardware Level</th> 17181<th align="center">Notes</th> 17182</tr> 17183</thead> 17184<tbody> 17185<tr> 17186<td align="center">JPEG</td> 17187<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 17188<td align="center">Any</td> 17189<td align="center"></td> 17190</tr> 17191<tr> 17192<td align="center">JPEG</td> 17193<td align="center">1920x1080 (1080p)</td> 17194<td align="center">Any</td> 17195<td align="center">if 1080p <= activeArraySize</td> 17196</tr> 17197<tr> 17198<td align="center">JPEG</td> 17199<td align="center">1280x720 (720)</td> 17200<td align="center">Any</td> 17201<td align="center">if 720p <= activeArraySize</td> 17202</tr> 17203<tr> 17204<td align="center">JPEG</td> 17205<td align="center">640x480 (480p)</td> 17206<td align="center">Any</td> 17207<td align="center">if 480p <= activeArraySize</td> 17208</tr> 17209<tr> 17210<td align="center">JPEG</td> 17211<td align="center">320x240 (240p)</td> 17212<td align="center">Any</td> 17213<td align="center">if 240p <= activeArraySize</td> 17214</tr> 17215<tr> 17216<td align="center">YUV_<wbr/>420_<wbr/>888</td> 17217<td align="center">all output sizes available for JPEG</td> 17218<td align="center">FULL</td> 17219<td align="center"></td> 17220</tr> 17221<tr> 17222<td align="center">YUV_<wbr/>420_<wbr/>888</td> 17223<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 17224<td align="center">LIMITED</td> 17225<td align="center"></td> 17226</tr> 17227<tr> 17228<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> 17229<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 17230<td align="center">Any</td> 17231<td align="center"></td> 17232</tr> 17233</tbody> 17234</table> 17235<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional 17236mandatory stream configurations on a per-capability basis.<wbr/></p> 17237 </td> 17238 </tr> 17239 17240 <tr class="entries_header"> 17241 <th class="th_details" colspan="5">HAL Implementation Details</th> 17242 </tr> 17243 <tr class="entry_cont"> 17244 <td class="entry_details" colspan="5"> 17245 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 17246of sensor maximum resolution for JPEG formats (regardless of hardware 17247level).<wbr/></p> 17248<p>(The following is a rewording of the above required table):</p> 17249<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 17250<ul> 17251<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 17252(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 17253(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/> 17254it does not have to be included in the supported JPEG sizes.<wbr/></li> 17255<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 17256the dimensions being a multiple of 16.<wbr/></li> 17257</ul> 17258<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 17259However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum 17260resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 17261additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 17262if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 17263ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 172643264x2448.<wbr/></p> 17265<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/> 17266the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 17267here as output streams.<wbr/></p> 17268<p>It must also include each below resolution if it is smaller than or 17269equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 17270formats),<wbr/> as output streams:</p> 17271<ul> 17272<li>240p (320 x 240)</li> 17273<li>480p (640 x 480)</li> 17274<li>720p (1280 x 720)</li> 17275<li>1080p (1920 x 1080)</li> 17276</ul> 17277<p>For LIMITED capability devices 17278(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 17279the HAL only has to list up to the maximum video size 17280supported by the device.<wbr/></p> 17281<p>Regardless of hardware level,<wbr/> every output resolution available for 17282YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 17283<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 17284<ul> 17285<li>availableFormats</li> 17286<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 17287</ul> 17288 </td> 17289 </tr> 17290 17291 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17292 <!-- end of entry --> 17293 17294 17295 <tr class="entry" id="static_android.scaler.availableMinFrameDurations"> 17296 <td class="entry_name 17297 " rowspan="3"> 17298 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations 17299 </td> 17300 <td class="entry_type"> 17301 <span class="entry_type_name">int64</span> 17302 <span class="entry_type_container">x</span> 17303 17304 <span class="entry_type_array"> 17305 4 x n 17306 </span> 17307 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 17308 17309 17310 <span class="entry_type_hwlevel">[legacy] </span> 17311 17312 17313 17314 17315 </td> <!-- entry_type --> 17316 17317 <td class="entry_description"> 17318 <p>This lists the minimum frame duration for each 17319format/<wbr/>size combination.<wbr/></p> 17320 </td> 17321 17322 <td class="entry_units"> 17323 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 17324 </td> 17325 17326 <td class="entry_range"> 17327 </td> 17328 17329 <td class="entry_tags"> 17330 <ul class="entry_tags"> 17331 <li><a href="#tag_V1">V1</a></li> 17332 </ul> 17333 </td> 17334 17335 </tr> 17336 <tr class="entries_header"> 17337 <th class="th_details" colspan="5">Details</th> 17338 </tr> 17339 <tr class="entry_cont"> 17340 <td class="entry_details" colspan="5"> 17341 <p>This should correspond to the frame duration when only that 17342stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 17343set to either OFF or FAST.<wbr/></p> 17344<p>When multiple streams are used in a request,<wbr/> the minimum frame 17345duration will be max(individual stream min durations).<wbr/></p> 17346<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 17347is the same regardless of whether the stream is input or output.<wbr/></p> 17348<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 17349<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 17350calculating the max frame rate.<wbr/></p> 17351<p>(Keep in sync with 17352<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p> 17353 </td> 17354 </tr> 17355 17356 17357 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17358 <!-- end of entry --> 17359 17360 17361 <tr class="entry" id="static_android.scaler.availableStallDurations"> 17362 <td class="entry_name 17363 " rowspan="5"> 17364 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations 17365 </td> 17366 <td class="entry_type"> 17367 <span class="entry_type_name">int64</span> 17368 <span class="entry_type_container">x</span> 17369 17370 <span class="entry_type_array"> 17371 4 x n 17372 </span> 17373 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 17374 17375 17376 <span class="entry_type_hwlevel">[legacy] </span> 17377 17378 17379 17380 17381 </td> <!-- entry_type --> 17382 17383 <td class="entry_description"> 17384 <p>This lists the maximum stall duration for each 17385output format/<wbr/>size combination.<wbr/></p> 17386 </td> 17387 17388 <td class="entry_units"> 17389 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 17390 </td> 17391 17392 <td class="entry_range"> 17393 </td> 17394 17395 <td class="entry_tags"> 17396 <ul class="entry_tags"> 17397 <li><a href="#tag_V1">V1</a></li> 17398 </ul> 17399 </td> 17400 17401 </tr> 17402 <tr class="entries_header"> 17403 <th class="th_details" colspan="5">Details</th> 17404 </tr> 17405 <tr class="entry_cont"> 17406 <td class="entry_details" colspan="5"> 17407 <p>A stall duration is how much extra time would get added 17408to the normal minimum frame duration for a repeating request 17409that has streams with non-zero stall.<wbr/></p> 17410<p>For example,<wbr/> consider JPEG captures which have the following 17411characteristics:</p> 17412<ul> 17413<li>JPEG streams act like processed YUV streams in requests for which 17414they are not included; in requests in which they are directly 17415referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a 17416JPEG stream requires the underlying YUV data to always be ready for 17417use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact 17418frame duration) on requests that actually reference a JPEG stream.<wbr/></li> 17419<li>The JPEG processor can run concurrently to the rest of the camera 17420pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> 17421</ul> 17422<p>In other words,<wbr/> using a repeating YUV request would result 17423in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single 17424JPEG request is submitted periodically,<wbr/> the frame rate will stay 17425at 30 FPS (as long as we wait for the previous JPEG to return each 17426time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then 17427the frame rate will drop from 30 FPS.<wbr/></p> 17428<p>In general,<wbr/> submitting a new request with a non-0 stall time 17429stream will <em>not</em> cause a frame rate drop unless there are still 17430outstanding buffers for that stream from previous requests.<wbr/></p> 17431<p>Submitting a repeating request with streams (call this <code>S</code>) 17432is the same as setting the minimum frame duration from 17433the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with 17434the maximum stall duration for <code>S</code>.<wbr/></p> 17435<p>If interleaving requests with and without a stall duration,<wbr/> 17436a request will stall by the maximum of the remaining times 17437for each can-stall stream with outstanding buffers.<wbr/></p> 17438<p>This means that a stalling request will not have an exposure start 17439until the stall has completed.<wbr/></p> 17440<p>This should correspond to the stall duration when only that stream is 17441active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST 17442or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY 17443effectively results in an indeterminate stall duration for all 17444streams in a request (the regular stall calculation rules are 17445ignored).<wbr/></p> 17446<p>The following formats may always have a stall duration:</p> 17447<ul> 17448<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li> 17449<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li> 17450</ul> 17451<p>The following formats will never have a stall duration:</p> 17452<ul> 17453<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> 17454<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li> 17455</ul> 17456<p>All other formats may or may not have an allowed stall duration on 17457a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 17458for more details.<wbr/></p> 17459<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about 17460calculating the max frame rate (absent stalls).<wbr/></p> 17461<p>(Keep up to date with 17462<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p> 17463 </td> 17464 </tr> 17465 17466 <tr class="entries_header"> 17467 <th class="th_details" colspan="5">HAL Implementation Details</th> 17468 </tr> 17469 <tr class="entry_cont"> 17470 <td class="entry_details" colspan="5"> 17471 <p>If possible,<wbr/> it is recommended that all non-JPEG formats 17472(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE 17473and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p> 17474 </td> 17475 </tr> 17476 17477 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17478 <!-- end of entry --> 17479 17480 17481 <tr class="entry" id="static_android.scaler.streamConfigurationMap"> 17482 <td class="entry_name 17483 " rowspan="5"> 17484 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map 17485 </td> 17486 <td class="entry_type"> 17487 <span class="entry_type_name">int32</span> 17488 17489 <span class="entry_type_visibility"> [public as streamConfigurationMap]</span> 17490 17491 <span class="entry_type_synthetic">[synthetic] </span> 17492 17493 <span class="entry_type_hwlevel">[legacy] </span> 17494 17495 17496 17497 17498 </td> <!-- entry_type --> 17499 17500 <td class="entry_description"> 17501 <p>The available stream configurations that this 17502camera device supports; also includes the minimum frame durations 17503and the stall durations for each format/<wbr/>size combination.<wbr/></p> 17504 </td> 17505 17506 <td class="entry_units"> 17507 </td> 17508 17509 <td class="entry_range"> 17510 </td> 17511 17512 <td class="entry_tags"> 17513 </td> 17514 17515 </tr> 17516 <tr class="entries_header"> 17517 <th class="th_details" colspan="5">Details</th> 17518 </tr> 17519 <tr class="entry_cont"> 17520 <td class="entry_details" colspan="5"> 17521 <p>All camera devices will support sensor maximum resolution (defined by 17522<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> 17523<p>For a given use case,<wbr/> the actual maximum supported resolution 17524may be lower than what is listed here,<wbr/> depending on the destination 17525Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 17526the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 17527smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 17528can provide.<wbr/></p> 17529<p>Please reference the documentation for the image data destination to 17530check if it limits the maximum size for image data.<wbr/></p> 17531<p>The following table describes the minimum required output stream 17532configurations based on the hardware level 17533(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 17534<table> 17535<thead> 17536<tr> 17537<th align="center">Format</th> 17538<th align="center">Size</th> 17539<th align="center">Hardware Level</th> 17540<th align="center">Notes</th> 17541</tr> 17542</thead> 17543<tbody> 17544<tr> 17545<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17546<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td> 17547<td align="center">Any</td> 17548<td align="center"></td> 17549</tr> 17550<tr> 17551<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17552<td align="center">1920x1080 (1080p)</td> 17553<td align="center">Any</td> 17554<td align="center">if 1080p <= activeArraySize</td> 17555</tr> 17556<tr> 17557<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17558<td align="center">1280x720 (720p)</td> 17559<td align="center">Any</td> 17560<td align="center">if 720p <= activeArraySize</td> 17561</tr> 17562<tr> 17563<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17564<td align="center">640x480 (480p)</td> 17565<td align="center">Any</td> 17566<td align="center">if 480p <= activeArraySize</td> 17567</tr> 17568<tr> 17569<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17570<td align="center">320x240 (240p)</td> 17571<td align="center">Any</td> 17572<td align="center">if 240p <= activeArraySize</td> 17573</tr> 17574<tr> 17575<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> 17576<td align="center">all output sizes available for JPEG</td> 17577<td align="center">FULL</td> 17578<td align="center"></td> 17579</tr> 17580<tr> 17581<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> 17582<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 17583<td align="center">LIMITED</td> 17584<td align="center"></td> 17585</tr> 17586<tr> 17587<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 17588<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 17589<td align="center">Any</td> 17590<td align="center"></td> 17591</tr> 17592</tbody> 17593</table> 17594<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 17595stream configurations on a per-capability basis.<wbr/></p> 17596<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 17597<ul> 17598<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 17599(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 17600(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/> 17601it does not have to be included in the supported JPEG sizes.<wbr/></li> 17602<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 17603the dimensions being a multiple of 16.<wbr/> 17604Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 17605However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum 17606resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 17607additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 17608if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 17609ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 176103264x2448.<wbr/></li> 17611</ul> 17612 </td> 17613 </tr> 17614 17615 <tr class="entries_header"> 17616 <th class="th_details" colspan="5">HAL Implementation Details</th> 17617 </tr> 17618 <tr class="entry_cont"> 17619 <td class="entry_details" colspan="5"> 17620 <p>Do not set this property directly 17621(it is synthetic and will not be available at the HAL layer); 17622set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p> 17623<p>Not all output formats may be supported in a configuration with 17624an input stream of a particular format.<wbr/> For more details,<wbr/> see 17625<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 17626<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 17627of sensor maximum resolution for JPEG formats (regardless of hardware 17628level).<wbr/></p> 17629<p>(The following is a rewording of the above required table):</p> 17630<p>The HAL must include sensor maximum resolution (defined by 17631<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> 17632<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/> 17633the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 17634here as output streams.<wbr/></p> 17635<p>It must also include each below resolution if it is smaller than or 17636equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 17637formats),<wbr/> as output streams:</p> 17638<ul> 17639<li>240p (320 x 240)</li> 17640<li>480p (640 x 480)</li> 17641<li>720p (1280 x 720)</li> 17642<li>1080p (1920 x 1080)</li> 17643</ul> 17644<p>For LIMITED capability devices 17645(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 17646the HAL only has to list up to the maximum video size 17647supported by the device.<wbr/></p> 17648<p>Regardless of hardware level,<wbr/> every output resolution available for 17649YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 17650<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 17651<ul> 17652<li>availableFormats</li> 17653<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 17654</ul> 17655 </td> 17656 </tr> 17657 17658 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17659 <!-- end of entry --> 17660 17661 17662 <tr class="entry" id="static_android.scaler.croppingType"> 17663 <td class="entry_name 17664 " rowspan="3"> 17665 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type 17666 </td> 17667 <td class="entry_type"> 17668 <span class="entry_type_name entry_type_name_enum">byte</span> 17669 17670 <span class="entry_type_visibility"> [public]</span> 17671 17672 17673 <span class="entry_type_hwlevel">[legacy] </span> 17674 17675 17676 17677 <ul class="entry_type_enum"> 17678 <li> 17679 <span class="entry_type_enum_name">CENTER_ONLY</span> 17680 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span> 17681 </li> 17682 <li> 17683 <span class="entry_type_enum_name">FREEFORM</span> 17684 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span> 17685 </li> 17686 </ul> 17687 17688 </td> <!-- entry_type --> 17689 17690 <td class="entry_description"> 17691 <p>The crop type that this camera device supports.<wbr/></p> 17692 </td> 17693 17694 <td class="entry_units"> 17695 </td> 17696 17697 <td class="entry_range"> 17698 </td> 17699 17700 <td class="entry_tags"> 17701 </td> 17702 17703 </tr> 17704 <tr class="entries_header"> 17705 <th class="th_details" colspan="5">Details</th> 17706 </tr> 17707 <tr class="entry_cont"> 17708 <td class="entry_details" colspan="5"> 17709 <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 17710device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the 17711crop 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>) 17712and keep the crop region width and height unchanged.<wbr/> The camera device will return the 17713final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 17714<p>Camera devices that support FREEFORM cropping will support any crop region that 17715is inside of the active array.<wbr/> The camera device will apply the same crop region and 17716return 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> 17717<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p> 17718 </td> 17719 </tr> 17720 17721 17722 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17723 <!-- end of entry --> 17724 17725 17726 17727 <!-- end of kind --> 17728 </tbody> 17729 <tr><td colspan="6" class="kind">dynamic</td></tr> 17730 17731 <thead class="entries_header"> 17732 <tr> 17733 <th class="th_name">Property Name</th> 17734 <th class="th_type">Type</th> 17735 <th class="th_description">Description</th> 17736 <th class="th_units">Units</th> 17737 <th class="th_range">Range</th> 17738 <th class="th_tags">Tags</th> 17739 </tr> 17740 </thead> 17741 17742 <tbody> 17743 17744 17745 17746 17747 17748 17749 17750 17751 17752 17753 <tr class="entry" id="dynamic_android.scaler.cropRegion"> 17754 <td class="entry_name 17755 " rowspan="5"> 17756 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 17757 </td> 17758 <td class="entry_type"> 17759 <span class="entry_type_name">int32</span> 17760 <span class="entry_type_container">x</span> 17761 17762 <span class="entry_type_array"> 17763 4 17764 </span> 17765 <span class="entry_type_visibility"> [public as rectangle]</span> 17766 17767 17768 <span class="entry_type_hwlevel">[legacy] </span> 17769 17770 17771 17772 17773 </td> <!-- entry_type --> 17774 17775 <td class="entry_description"> 17776 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 17777 </td> 17778 17779 <td class="entry_units"> 17780 Pixel coordinates relative to 17781 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 17782 </td> 17783 17784 <td class="entry_range"> 17785 </td> 17786 17787 <td class="entry_tags"> 17788 <ul class="entry_tags"> 17789 <li><a href="#tag_BC">BC</a></li> 17790 </ul> 17791 </td> 17792 17793 </tr> 17794 <tr class="entries_header"> 17795 <th class="th_details" colspan="5">Details</th> 17796 </tr> 17797 <tr class="entry_cont"> 17798 <td class="entry_details" colspan="5"> 17799 <p>This control can be used to implement digital zoom.<wbr/></p> 17800<p>The crop region coordinate system is based off 17801<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 17802top-left corner of the sensor active array.<wbr/></p> 17803<p>Output streams use this rectangle to produce their output,<wbr/> 17804cropping to a smaller region if necessary to maintain the 17805stream's aspect ratio,<wbr/> then scaling the sensor input to 17806match the output's configured resolution.<wbr/></p> 17807<p>The crop region is applied after the RAW to other color 17808space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 17809(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 17810croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 17811<p>For non-raw streams,<wbr/> any additional per-stream cropping will 17812be done to maximize the final pixel area of the stream.<wbr/></p> 17813<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 17814ratio,<wbr/> then 4:3 streams will use the exact crop 17815region.<wbr/> 16:9 streams will further crop vertically 17816(letterbox).<wbr/></p> 17817<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 17818outputs will crop horizontally (pillarbox),<wbr/> and 16:9 17819streams will match exactly.<wbr/> These additional crops will 17820be centered within the crop region.<wbr/></p> 17821<p>The width and height of the crop region cannot 17822be set to be smaller than 17823<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 17824<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> 17825<p>The camera device may adjust the crop region to account 17826for rounding and other hardware requirements; the final 17827crop region used will be included in the output capture 17828result.<wbr/></p> 17829 </td> 17830 </tr> 17831 17832 <tr class="entries_header"> 17833 <th class="th_details" colspan="5">HAL Implementation Details</th> 17834 </tr> 17835 <tr class="entry_cont"> 17836 <td class="entry_details" colspan="5"> 17837 <p>The output streams must maintain square pixels at all 17838times,<wbr/> no matter what the relative aspect ratios of the 17839crop region and the stream are.<wbr/> Negative values for 17840corner are allowed for raw output if full pixel array is 17841larger than active pixel array.<wbr/> Width and height may be 17842rounded to nearest larger supportable width,<wbr/> especially 17843for raw output,<wbr/> where only a few fixed scales may be 17844possible.<wbr/></p> 17845<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller 17846size than active array size,<wbr/> the HAL need follow below cropping rules:</p> 17847<ul> 17848<li> 17849<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active 17850array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from 17851<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> 17852<ol> 17853<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor 17854cropped pixel area by (tx,<wbr/> ty),<wbr/> 17855where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code> 17856and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The 17857(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the 17858<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 17859<li>Scale the width and height of requested cropRegion with scaling factor of 17860sensor<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 17861respectively.<wbr/> 17862Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image 17863with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need 17864follow the general cropping rule for this new cropRegion and effective active 17865array size.<wbr/></li> 17866</ol> 17867</li> 17868<li> 17869<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/> 17870The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/> 17871The reported cropRegion may be slightly different with the requested cropRegion since 17872the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other 17873hardware limitations.<wbr/></p> 17874</li> 17875</ul> 17876<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 17877 </td> 17878 </tr> 17879 17880 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17881 <!-- end of entry --> 17882 17883 17884 17885 <!-- end of kind --> 17886 </tbody> 17887 17888 <!-- end of section --> 17889 <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr> 17890 17891 17892 <tr><td colspan="6" class="kind">controls</td></tr> 17893 17894 <thead class="entries_header"> 17895 <tr> 17896 <th class="th_name">Property Name</th> 17897 <th class="th_type">Type</th> 17898 <th class="th_description">Description</th> 17899 <th class="th_units">Units</th> 17900 <th class="th_range">Range</th> 17901 <th class="th_tags">Tags</th> 17902 </tr> 17903 </thead> 17904 17905 <tbody> 17906 17907 17908 17909 17910 17911 17912 17913 17914 17915 17916 <tr class="entry" id="controls_android.sensor.exposureTime"> 17917 <td class="entry_name 17918 " rowspan="3"> 17919 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 17920 </td> 17921 <td class="entry_type"> 17922 <span class="entry_type_name">int64</span> 17923 17924 <span class="entry_type_visibility"> [public]</span> 17925 17926 17927 <span class="entry_type_hwlevel">[full] </span> 17928 17929 17930 17931 17932 </td> <!-- entry_type --> 17933 17934 <td class="entry_description"> 17935 <p>Duration each pixel is exposed to 17936light.<wbr/></p> 17937 </td> 17938 17939 <td class="entry_units"> 17940 Nanoseconds 17941 </td> 17942 17943 <td class="entry_range"> 17944 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 17945 </td> 17946 17947 <td class="entry_tags"> 17948 <ul class="entry_tags"> 17949 <li><a href="#tag_V1">V1</a></li> 17950 </ul> 17951 </td> 17952 17953 </tr> 17954 <tr class="entries_header"> 17955 <th class="th_details" colspan="5">Details</th> 17956 </tr> 17957 <tr class="entry_cont"> 17958 <td class="entry_details" colspan="5"> 17959 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 17960duration exposed to the nearest possible value (rather than expose longer).<wbr/> 17961The final exposure time used will be available in the output capture result.<wbr/></p> 17962<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 17963OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 17964 </td> 17965 </tr> 17966 17967 17968 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17969 <!-- end of entry --> 17970 17971 17972 <tr class="entry" id="controls_android.sensor.frameDuration"> 17973 <td class="entry_name 17974 " rowspan="5"> 17975 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 17976 </td> 17977 <td class="entry_type"> 17978 <span class="entry_type_name">int64</span> 17979 17980 <span class="entry_type_visibility"> [public]</span> 17981 17982 17983 <span class="entry_type_hwlevel">[full] </span> 17984 17985 17986 17987 17988 </td> <!-- entry_type --> 17989 17990 <td class="entry_description"> 17991 <p>Duration from start of frame exposure to 17992start of next frame exposure.<wbr/></p> 17993 </td> 17994 17995 <td class="entry_units"> 17996 Nanoseconds 17997 </td> 17998 17999 <td class="entry_range"> 18000 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 18001<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration 18002is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 18003 </td> 18004 18005 <td class="entry_tags"> 18006 <ul class="entry_tags"> 18007 <li><a href="#tag_V1">V1</a></li> 18008 </ul> 18009 </td> 18010 18011 </tr> 18012 <tr class="entries_header"> 18013 <th class="th_details" colspan="5">Details</th> 18014 </tr> 18015 <tr class="entry_cont"> 18016 <td class="entry_details" colspan="5"> 18017 <p>The maximum frame rate that can be supported by a camera subsystem is 18018a function of many factors:</p> 18019<ul> 18020<li>Requested resolutions of output image streams</li> 18021<li>Availability of binning /<wbr/> skipping modes on the imager</li> 18022<li>The bandwidth of the imager interface</li> 18023<li>The bandwidth of the various ISP processing blocks</li> 18024</ul> 18025<p>Since these factors can vary greatly between different ISPs and 18026sensors,<wbr/> the camera abstraction tries to represent the bandwidth 18027restrictions with as simple a model as possible.<wbr/></p> 18028<p>The model presented has the following characteristics:</p> 18029<ul> 18030<li>The image sensor is always configured to output the smallest 18031resolution possible given the application's requested output stream 18032sizes.<wbr/> The smallest resolution is defined as being at least as large 18033as the largest requested output stream size; the camera pipeline must 18034never digitally upsample sensor data when the crop region covers the 18035whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 18036resolutions are configured,<wbr/> the sensor can provide a higher frame 18037rate.<wbr/></li> 18038<li>Since any request may use any or all the currently configured 18039output streams,<wbr/> the sensor and ISP must be configured to support 18040scaling a single capture to all the streams at the same time.<wbr/> This 18041means the camera pipeline must be ready to produce the largest 18042requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 18043frame rate of a given configured stream set is governed only by the 18044largest requested stream resolution.<wbr/></li> 18045<li>Using more than one output stream in a request does not affect the 18046frame duration.<wbr/></li> 18047<li>Certain format-streams may need to do additional background processing 18048before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 18049can run concurrently to the rest of the camera pipeline,<wbr/> but 18050cannot process more than 1 capture at a time.<wbr/></li> 18051</ul> 18052<p>The necessary information for the application,<wbr/> given the model above,<wbr/> 18053is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using 18054<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 18055These are used to determine the maximum frame rate /<wbr/> minimum frame 18056duration that is possible for a given stream configuration.<wbr/></p> 18057<p>Specifically,<wbr/> the application can use the following rules to 18058determine the minimum frame duration it can request from the camera 18059device:</p> 18060<ol> 18061<li>Let the set of currently configured input/<wbr/>output streams 18062be called <code>S</code>.<wbr/></li> 18063<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking 18064it 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> 18065(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be 18066called <code>F</code>.<wbr/></li> 18067<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 18068for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 18069used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 18070</ol> 18071<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> 18072using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> 18073determines the steady state frame rate that the application will get 18074if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of 18075request be called <code>Rsimple</code>.<wbr/></p> 18076<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 18077by a single capture of a new request <code>Rstall</code> (which has at least 18078one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 18079same minimum frame duration this will not cause a frame rate loss 18080if all buffers from the previous <code>Rstall</code> have already been 18081delivered.<wbr/></p> 18082<p>For more details about stalling,<wbr/> see 18083<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p> 18084<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 18085OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 18086 </td> 18087 </tr> 18088 18089 <tr class="entries_header"> 18090 <th class="th_details" colspan="5">HAL Implementation Details</th> 18091 </tr> 18092 <tr class="entry_cont"> 18093 <td class="entry_details" colspan="5"> 18094 <p>For more details about stalling,<wbr/> see 18095<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 18096 </td> 18097 </tr> 18098 18099 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18100 <!-- end of entry --> 18101 18102 18103 <tr class="entry" id="controls_android.sensor.sensitivity"> 18104 <td class="entry_name 18105 " rowspan="5"> 18106 android.<wbr/>sensor.<wbr/>sensitivity 18107 </td> 18108 <td class="entry_type"> 18109 <span class="entry_type_name">int32</span> 18110 18111 <span class="entry_type_visibility"> [public]</span> 18112 18113 18114 <span class="entry_type_hwlevel">[full] </span> 18115 18116 18117 18118 18119 </td> <!-- entry_type --> 18120 18121 <td class="entry_description"> 18122 <p>The amount of gain applied to sensor data 18123before processing.<wbr/></p> 18124 </td> 18125 18126 <td class="entry_units"> 18127 ISO arithmetic units 18128 </td> 18129 18130 <td class="entry_range"> 18131 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 18132 </td> 18133 18134 <td class="entry_tags"> 18135 <ul class="entry_tags"> 18136 <li><a href="#tag_V1">V1</a></li> 18137 </ul> 18138 </td> 18139 18140 </tr> 18141 <tr class="entries_header"> 18142 <th class="th_details" colspan="5">Details</th> 18143 </tr> 18144 <tr class="entry_cont"> 18145 <td class="entry_details" colspan="5"> 18146 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 18147as defined in ISO 12232:2006.<wbr/></p> 18148<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 18149if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 18150is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 18151<p>If the camera device cannot apply the exact sensitivity 18152requested,<wbr/> it will reduce the gain to the nearest supported 18153value.<wbr/> The final sensitivity used will be available in the 18154output capture result.<wbr/></p> 18155 </td> 18156 </tr> 18157 18158 <tr class="entries_header"> 18159 <th class="th_details" colspan="5">HAL Implementation Details</th> 18160 </tr> 18161 <tr class="entry_cont"> 18162 <td class="entry_details" colspan="5"> 18163 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 18164 </td> 18165 </tr> 18166 18167 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18168 <!-- end of entry --> 18169 18170 18171 <tr class="entry" id="controls_android.sensor.testPatternData"> 18172 <td class="entry_name 18173 " rowspan="5"> 18174 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 18175 </td> 18176 <td class="entry_type"> 18177 <span class="entry_type_name">int32</span> 18178 <span class="entry_type_container">x</span> 18179 18180 <span class="entry_type_array"> 18181 4 18182 </span> 18183 <span class="entry_type_visibility"> [public]</span> 18184 18185 18186 18187 18188 18189 18190 </td> <!-- entry_type --> 18191 18192 <td class="entry_description"> 18193 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 18194when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 18195 </td> 18196 18197 <td class="entry_units"> 18198 </td> 18199 18200 <td class="entry_range"> 18201 </td> 18202 18203 <td class="entry_tags"> 18204 </td> 18205 18206 </tr> 18207 <tr class="entries_header"> 18208 <th class="th_details" colspan="5">Details</th> 18209 </tr> 18210 <tr class="entry_cont"> 18211 <td class="entry_details" colspan="5"> 18212 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 18213The camera device then uses the most significant X bits 18214that correspond to how many bits are in its Bayer raw sensor 18215output.<wbr/></p> 18216<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 1821710 most significant bits from each color channel.<wbr/></p> 18218 </td> 18219 </tr> 18220 18221 <tr class="entries_header"> 18222 <th class="th_details" colspan="5">HAL Implementation Details</th> 18223 </tr> 18224 <tr class="entry_cont"> 18225 <td class="entry_details" colspan="5"> 18226 18227 </td> 18228 </tr> 18229 18230 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18231 <!-- end of entry --> 18232 18233 18234 <tr class="entry" id="controls_android.sensor.testPatternMode"> 18235 <td class="entry_name 18236 " rowspan="5"> 18237 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 18238 </td> 18239 <td class="entry_type"> 18240 <span class="entry_type_name entry_type_name_enum">int32</span> 18241 18242 <span class="entry_type_visibility"> [public]</span> 18243 18244 18245 18246 18247 18248 <ul class="entry_type_enum"> 18249 <li> 18250 <span class="entry_type_enum_name">OFF</span> 18251 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 18252device returns captures from the image sensor.<wbr/></p> 18253<p>This is the default if the key is not set.<wbr/></p></span> 18254 </li> 18255 <li> 18256 <span class="entry_type_enum_name">SOLID_COLOR</span> 18257 <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 18258respective color channel provided in 18259<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 18260<p>For example:</p> 18261<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 18262</code></pre> 18263<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 18264<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 18265</code></pre> 18266<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 18267are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 18268 </li> 18269 <li> 18270 <span class="entry_type_enum_name">COLOR_BARS</span> 18271 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 18272<p>The vertical bars (left-to-right) are as follows:</p> 18273<ul> 18274<li>100% white</li> 18275<li>yellow</li> 18276<li>cyan</li> 18277<li>green</li> 18278<li>magenta</li> 18279<li>red</li> 18280<li>blue</li> 18281<li>black</li> 18282</ul> 18283<p>In general the image would look like the following:</p> 18284<pre><code>W Y C G M R B K 18285W Y C G M R B K 18286W Y C G M R B K 18287W Y C G M R B K 18288W Y C G M R B K 18289.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 18290.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 18291.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 18292 18293(B = Blue,<wbr/> K = Black) 18294</code></pre> 18295<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 18296When this is not possible,<wbr/> the bar size should be rounded 18297down to the nearest integer and the pattern can repeat 18298on the right side.<wbr/></p> 18299<p>Each bar's height must always take up the full sensor 18300pixel array height.<wbr/></p> 18301<p>Each pixel in this test pattern must be set to either 183020% intensity or 100% intensity.<wbr/></p></span> 18303 </li> 18304 <li> 18305 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 18306 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 18307each bar should start at its specified color at the top,<wbr/> 18308and fade to gray at the bottom.<wbr/></p> 18309<p>Furthermore each bar is further subdivided into a left and 18310right half.<wbr/> The left half should have a smooth gradient,<wbr/> 18311and the right half should have a quantized gradient.<wbr/></p> 18312<p>In particular,<wbr/> the right half's should consist of blocks of the 18313same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 18314<p>The least significant bits in the quantized gradient should 18315be copied from the most significant bits of the smooth gradient.<wbr/></p> 18316<p>The height of each bar should always be a multiple of 128.<wbr/> 18317When this is not the case,<wbr/> the pattern should repeat at the bottom 18318of the image.<wbr/></p></span> 18319 </li> 18320 <li> 18321 <span class="entry_type_enum_name">PN9</span> 18322 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 18323generated from a PN9 512-bit sequence (typically implemented 18324in hardware with a linear feedback shift register).<wbr/></p> 18325<p>The generator should be reset at the beginning of each frame,<wbr/> 18326and thus each subsequent raw frame with this test pattern should 18327be exactly the same as the last.<wbr/></p></span> 18328 </li> 18329 <li> 18330 <span class="entry_type_enum_name">CUSTOM1</span> 18331 <span class="entry_type_enum_value">256</span> 18332 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 18333available only on this camera device are at least this numeric 18334value.<wbr/></p> 18335<p>All of the custom test patterns will be static 18336(that is the raw image must not vary from frame to frame).<wbr/></p></span> 18337 </li> 18338 </ul> 18339 18340 </td> <!-- entry_type --> 18341 18342 <td class="entry_description"> 18343 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 18344doing a real exposure from the camera.<wbr/></p> 18345 </td> 18346 18347 <td class="entry_units"> 18348 </td> 18349 18350 <td class="entry_range"> 18351 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 18352 </td> 18353 18354 <td class="entry_tags"> 18355 </td> 18356 18357 </tr> 18358 <tr class="entries_header"> 18359 <th class="th_details" colspan="5">Details</th> 18360 </tr> 18361 <tr class="entry_cont"> 18362 <td class="entry_details" colspan="5"> 18363 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 18364by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 18365work as normal.<wbr/></p> 18366<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 18367occur (and that the test pattern remain unmodified,<wbr/> since the flash 18368would not actually affect it).<wbr/></p> 18369<p>Defaults to OFF.<wbr/></p> 18370 </td> 18371 </tr> 18372 18373 <tr class="entries_header"> 18374 <th class="th_details" colspan="5">HAL Implementation Details</th> 18375 </tr> 18376 <tr class="entry_cont"> 18377 <td class="entry_details" colspan="5"> 18378 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 18379<p>The HAL may choose to substitute test patterns from the sensor 18380with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 18381indistinguishable to the ISP whether the data came from the 18382sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 18383 </td> 18384 </tr> 18385 18386 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18387 <!-- end of entry --> 18388 18389 18390 18391 <!-- end of kind --> 18392 </tbody> 18393 <tr><td colspan="6" class="kind">static</td></tr> 18394 18395 <thead class="entries_header"> 18396 <tr> 18397 <th class="th_name">Property Name</th> 18398 <th class="th_type">Type</th> 18399 <th class="th_description">Description</th> 18400 <th class="th_units">Units</th> 18401 <th class="th_range">Range</th> 18402 <th class="th_tags">Tags</th> 18403 </tr> 18404 </thead> 18405 18406 <tbody> 18407 18408 18409 18410 18411 18412 18413 18414 18415 18416 18417 18418 18419 <tr class="entry" id="static_android.sensor.info.activeArraySize"> 18420 <td class="entry_name 18421 " rowspan="5"> 18422 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 18423 </td> 18424 <td class="entry_type"> 18425 <span class="entry_type_name">int32</span> 18426 <span class="entry_type_container">x</span> 18427 18428 <span class="entry_type_array"> 18429 4 18430 </span> 18431 <span class="entry_type_visibility"> [public as rectangle]</span> 18432 18433 18434 <span class="entry_type_hwlevel">[legacy] </span> 18435 18436 18437 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 18438 18439 18440 </td> <!-- entry_type --> 18441 18442 <td class="entry_description"> 18443 <p>The area of the image sensor which corresponds to active pixels after any geometric 18444distortion correction has been applied.<wbr/></p> 18445 </td> 18446 18447 <td class="entry_units"> 18448 Pixel coordinates on the image sensor 18449 </td> 18450 18451 <td class="entry_range"> 18452 </td> 18453 18454 <td class="entry_tags"> 18455 <ul class="entry_tags"> 18456 <li><a href="#tag_RAW">RAW</a></li> 18457 </ul> 18458 </td> 18459 18460 </tr> 18461 <tr class="entries_header"> 18462 <th class="th_details" colspan="5">Details</th> 18463 </tr> 18464 <tr class="entry_cont"> 18465 <td class="entry_details" colspan="5"> 18466 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 18467the region that actually receives light from the scene) after any geometric correction 18468has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the 18469image output formats aside from the raw formats.<wbr/></p> 18470<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 18471the full pixel array,<wbr/> and the size of the full pixel array is given by 18472<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 18473<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including 18474<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 18475this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p> 18476<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may 18477include black calibration pixels or other inactive regions,<wbr/> and geometric correction 18478resulting in scaling or cropping may have been applied.<wbr/></p> 18479 </td> 18480 </tr> 18481 18482 <tr class="entries_header"> 18483 <th class="th_details" colspan="5">HAL Implementation Details</th> 18484 </tr> 18485 <tr class="entry_cont"> 18486 <td class="entry_details" colspan="5"> 18487 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 18488>= <code>(0,<wbr/>0)</code>.<wbr/> 18489The <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> 18490 </td> 18491 </tr> 18492 18493 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18494 <!-- end of entry --> 18495 18496 18497 <tr class="entry" id="static_android.sensor.info.sensitivityRange"> 18498 <td class="entry_name 18499 " rowspan="3"> 18500 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range 18501 </td> 18502 <td class="entry_type"> 18503 <span class="entry_type_name">int32</span> 18504 <span class="entry_type_container">x</span> 18505 18506 <span class="entry_type_array"> 18507 2 18508 </span> 18509 <span class="entry_type_visibility"> [public as rangeInt]</span> 18510 18511 18512 <span class="entry_type_hwlevel">[full] </span> 18513 18514 18515 <div class="entry_type_notes">Range of supported sensitivities</div> 18516 18517 18518 </td> <!-- entry_type --> 18519 18520 <td class="entry_description"> 18521 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this 18522camera device.<wbr/></p> 18523 </td> 18524 18525 <td class="entry_units"> 18526 </td> 18527 18528 <td class="entry_range"> 18529 <p>Min <= 100,<wbr/> Max >= 800</p> 18530 </td> 18531 18532 <td class="entry_tags"> 18533 <ul class="entry_tags"> 18534 <li><a href="#tag_BC">BC</a></li> 18535 <li><a href="#tag_V1">V1</a></li> 18536 </ul> 18537 </td> 18538 18539 </tr> 18540 <tr class="entries_header"> 18541 <th class="th_details" colspan="5">Details</th> 18542 </tr> 18543 <tr class="entry_cont"> 18544 <td class="entry_details" colspan="5"> 18545 <p>The values are the standard ISO sensitivity values,<wbr/> 18546as defined in ISO 12232:2006.<wbr/></p> 18547 </td> 18548 </tr> 18549 18550 18551 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18552 <!-- end of entry --> 18553 18554 18555 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement"> 18556 <td class="entry_name 18557 " rowspan="1"> 18558 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement 18559 </td> 18560 <td class="entry_type"> 18561 <span class="entry_type_name entry_type_name_enum">byte</span> 18562 18563 <span class="entry_type_visibility"> [public]</span> 18564 18565 18566 <span class="entry_type_hwlevel">[full] </span> 18567 18568 18569 18570 <ul class="entry_type_enum"> 18571 <li> 18572 <span class="entry_type_enum_name">RGGB</span> 18573 </li> 18574 <li> 18575 <span class="entry_type_enum_name">GRBG</span> 18576 </li> 18577 <li> 18578 <span class="entry_type_enum_name">GBRG</span> 18579 </li> 18580 <li> 18581 <span class="entry_type_enum_name">BGGR</span> 18582 </li> 18583 <li> 18584 <span class="entry_type_enum_name">RGB</span> 18585 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit 18586values for each pixel,<wbr/> instead of just 1 16-bit value 18587per pixel.<wbr/></p></span> 18588 </li> 18589 </ul> 18590 18591 </td> <!-- entry_type --> 18592 18593 <td class="entry_description"> 18594 <p>The arrangement of color filters on sensor; 18595represents the colors in the top-left 2x2 section of 18596the sensor,<wbr/> in reading order.<wbr/></p> 18597 </td> 18598 18599 <td class="entry_units"> 18600 </td> 18601 18602 <td class="entry_range"> 18603 </td> 18604 18605 <td class="entry_tags"> 18606 <ul class="entry_tags"> 18607 <li><a href="#tag_RAW">RAW</a></li> 18608 </ul> 18609 </td> 18610 18611 </tr> 18612 18613 18614 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18615 <!-- end of entry --> 18616 18617 18618 <tr class="entry" id="static_android.sensor.info.exposureTimeRange"> 18619 <td class="entry_name 18620 " rowspan="3"> 18621 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range 18622 </td> 18623 <td class="entry_type"> 18624 <span class="entry_type_name">int64</span> 18625 <span class="entry_type_container">x</span> 18626 18627 <span class="entry_type_array"> 18628 2 18629 </span> 18630 <span class="entry_type_visibility"> [public as rangeLong]</span> 18631 18632 18633 <span class="entry_type_hwlevel">[full] </span> 18634 18635 18636 <div class="entry_type_notes">nanoseconds</div> 18637 18638 18639 </td> <!-- entry_type --> 18640 18641 <td class="entry_description"> 18642 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported 18643by this camera device.<wbr/></p> 18644 </td> 18645 18646 <td class="entry_units"> 18647 Nanoseconds 18648 </td> 18649 18650 <td class="entry_range"> 18651 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL 18652capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 18653the maximum exposure time will be greater than 100ms.<wbr/></p> 18654 </td> 18655 18656 <td class="entry_tags"> 18657 <ul class="entry_tags"> 18658 <li><a href="#tag_V1">V1</a></li> 18659 </ul> 18660 </td> 18661 18662 </tr> 18663 18664 <tr class="entries_header"> 18665 <th class="th_details" colspan="5">HAL Implementation Details</th> 18666 </tr> 18667 <tr class="entry_cont"> 18668 <td class="entry_details" colspan="5"> 18669 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 18670The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least 18671100ms.<wbr/></p> 18672 </td> 18673 </tr> 18674 18675 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18676 <!-- end of entry --> 18677 18678 18679 <tr class="entry" id="static_android.sensor.info.maxFrameDuration"> 18680 <td class="entry_name 18681 " rowspan="5"> 18682 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration 18683 </td> 18684 <td class="entry_type"> 18685 <span class="entry_type_name">int64</span> 18686 18687 <span class="entry_type_visibility"> [public]</span> 18688 18689 18690 <span class="entry_type_hwlevel">[full] </span> 18691 18692 18693 18694 18695 </td> <!-- entry_type --> 18696 18697 <td class="entry_description"> 18698 <p>The maximum possible frame duration (minimum frame rate) for 18699<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p> 18700 </td> 18701 18702 <td class="entry_units"> 18703 Nanoseconds 18704 </td> 18705 18706 <td class="entry_range"> 18707 <p>For FULL capability devices 18708(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p> 18709 </td> 18710 18711 <td class="entry_tags"> 18712 <ul class="entry_tags"> 18713 <li><a href="#tag_V1">V1</a></li> 18714 </ul> 18715 </td> 18716 18717 </tr> 18718 <tr class="entries_header"> 18719 <th class="th_details" colspan="5">Details</th> 18720 </tr> 18721 <tr class="entry_cont"> 18722 <td class="entry_details" colspan="5"> 18723 <p>Attempting to use frame durations beyond the maximum will result in the frame 18724duration being clipped to the maximum.<wbr/> See that control for a full definition of frame 18725durations.<wbr/></p> 18726<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> 18727for the minimum frame duration values.<wbr/></p> 18728 </td> 18729 </tr> 18730 18731 <tr class="entries_header"> 18732 <th class="th_details" colspan="5">HAL Implementation Details</th> 18733 </tr> 18734 <tr class="entry_cont"> 18735 <td class="entry_details" colspan="5"> 18736 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 18737The maximum of the range SHOULD be at least 187381 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p> 18739<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or 18740equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max 18741value (since exposure time overrides frame duration).<wbr/></p> 18742<p>Available minimum frame durations for JPEG must be no greater 18743than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED 18744minimum frame durations (for that respective size).<wbr/></p> 18745<p>Since JPEG processing is considered offline and can take longer than 18746a single uncompressed capture,<wbr/> refer to 18747<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> 18748for details about encoding this scenario.<wbr/></p> 18749 </td> 18750 </tr> 18751 18752 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18753 <!-- end of entry --> 18754 18755 18756 <tr class="entry" id="static_android.sensor.info.physicalSize"> 18757 <td class="entry_name 18758 " rowspan="5"> 18759 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size 18760 </td> 18761 <td class="entry_type"> 18762 <span class="entry_type_name">float</span> 18763 <span class="entry_type_container">x</span> 18764 18765 <span class="entry_type_array"> 18766 2 18767 </span> 18768 <span class="entry_type_visibility"> [public as sizeF]</span> 18769 18770 18771 <span class="entry_type_hwlevel">[legacy] </span> 18772 18773 18774 <div class="entry_type_notes">width x height</div> 18775 18776 18777 </td> <!-- entry_type --> 18778 18779 <td class="entry_description"> 18780 <p>The physical dimensions of the full pixel 18781array.<wbr/></p> 18782 </td> 18783 18784 <td class="entry_units"> 18785 Millimeters 18786 </td> 18787 18788 <td class="entry_range"> 18789 </td> 18790 18791 <td class="entry_tags"> 18792 <ul class="entry_tags"> 18793 <li><a href="#tag_V1">V1</a></li> 18794 <li><a href="#tag_BC">BC</a></li> 18795 </ul> 18796 </td> 18797 18798 </tr> 18799 <tr class="entries_header"> 18800 <th class="th_details" colspan="5">Details</th> 18801 </tr> 18802 <tr class="entry_cont"> 18803 <td class="entry_details" colspan="5"> 18804 <p>This is the physical size of the sensor pixel 18805array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 18806 </td> 18807 </tr> 18808 18809 <tr class="entries_header"> 18810 <th class="th_details" colspan="5">HAL Implementation Details</th> 18811 </tr> 18812 <tr class="entry_cont"> 18813 <td class="entry_details" colspan="5"> 18814 <p>Needed for FOV calculation for old API</p> 18815 </td> 18816 </tr> 18817 18818 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18819 <!-- end of entry --> 18820 18821 18822 <tr class="entry" id="static_android.sensor.info.pixelArraySize"> 18823 <td class="entry_name 18824 " rowspan="3"> 18825 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size 18826 </td> 18827 <td class="entry_type"> 18828 <span class="entry_type_name">int32</span> 18829 <span class="entry_type_container">x</span> 18830 18831 <span class="entry_type_array"> 18832 2 18833 </span> 18834 <span class="entry_type_visibility"> [public as size]</span> 18835 18836 18837 <span class="entry_type_hwlevel">[legacy] </span> 18838 18839 18840 18841 18842 </td> <!-- entry_type --> 18843 18844 <td class="entry_description"> 18845 <p>Dimensions of the full pixel array,<wbr/> possibly 18846including black calibration pixels.<wbr/></p> 18847 </td> 18848 18849 <td class="entry_units"> 18850 Pixels 18851 </td> 18852 18853 <td class="entry_range"> 18854 </td> 18855 18856 <td class="entry_tags"> 18857 <ul class="entry_tags"> 18858 <li><a href="#tag_RAW">RAW</a></li> 18859 <li><a href="#tag_BC">BC</a></li> 18860 </ul> 18861 </td> 18862 18863 </tr> 18864 <tr class="entries_header"> 18865 <th class="th_details" colspan="5">Details</th> 18866 </tr> 18867 <tr class="entry_cont"> 18868 <td class="entry_details" colspan="5"> 18869 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers 18870<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 18871the raw buffers produced by this sensor.<wbr/></p> 18872<p>If a camera device supports raw sensor formats,<wbr/> either this or 18873<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 18874output formats listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> (this depends on 18875whether or not the image sensor returns buffers containing pixels that are not 18876part of the active array region for blacklevel calibration or other purposes).<wbr/></p> 18877<p>Some parts of the full pixel array may not receive light from the scene,<wbr/> 18878or 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 18879defines the rectangle of active pixels that will be included in processed image 18880formats.<wbr/></p> 18881 </td> 18882 </tr> 18883 18884 18885 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18886 <!-- end of entry --> 18887 18888 18889 <tr class="entry" id="static_android.sensor.info.whiteLevel"> 18890 <td class="entry_name 18891 " rowspan="5"> 18892 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level 18893 </td> 18894 <td class="entry_type"> 18895 <span class="entry_type_name">int32</span> 18896 18897 <span class="entry_type_visibility"> [public]</span> 18898 18899 18900 18901 18902 18903 18904 </td> <!-- entry_type --> 18905 18906 <td class="entry_description"> 18907 <p>Maximum raw value output by sensor.<wbr/></p> 18908 </td> 18909 18910 <td class="entry_units"> 18911 </td> 18912 18913 <td class="entry_range"> 18914 <p>> 255 (8-bit output)</p> 18915 </td> 18916 18917 <td class="entry_tags"> 18918 <ul class="entry_tags"> 18919 <li><a href="#tag_RAW">RAW</a></li> 18920 </ul> 18921 </td> 18922 18923 </tr> 18924 <tr class="entries_header"> 18925 <th class="th_details" colspan="5">Details</th> 18926 </tr> 18927 <tr class="entry_cont"> 18928 <td class="entry_details" colspan="5"> 18929 <p>This specifies the fully-saturated encoding level for the raw 18930sample values from the sensor.<wbr/> This is typically caused by the 18931sensor becoming highly non-linear or clipping.<wbr/> The minimum for 18932each channel is specified by the offset in the 18933<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p> 18934<p>The white level is typically determined either by sensor bit depth 18935(8-14 bits is expected),<wbr/> or by the point where the sensor response 18936becomes too non-linear to be useful.<wbr/> The default value for this is 18937maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p> 18938<p>The white level values of captured images may vary for different 18939capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key 18940represents a coarse approximation for such case.<wbr/> It is recommended 18941to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported 18942by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p> 18943 </td> 18944 </tr> 18945 18946 <tr class="entries_header"> 18947 <th class="th_details" colspan="5">HAL Implementation Details</th> 18948 </tr> 18949 <tr class="entry_cont"> 18950 <td class="entry_details" colspan="5"> 18951 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 18952so the value for linear sensors should not be significantly lower 18953than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 18954 </td> 18955 </tr> 18956 18957 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18958 <!-- end of entry --> 18959 18960 18961 <tr class="entry" id="static_android.sensor.info.timestampSource"> 18962 <td class="entry_name 18963 " rowspan="3"> 18964 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source 18965 </td> 18966 <td class="entry_type"> 18967 <span class="entry_type_name entry_type_name_enum">byte</span> 18968 18969 <span class="entry_type_visibility"> [public]</span> 18970 18971 18972 <span class="entry_type_hwlevel">[legacy] </span> 18973 18974 18975 18976 <ul class="entry_type_enum"> 18977 <li> 18978 <span class="entry_type_enum_name">UNKNOWN</span> 18979 <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/> 18980but can not be compared to timestamps from other subsystems 18981(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different 18982camera devices in the same system.<wbr/> Timestamps between streams and results for 18983a single camera instance are comparable,<wbr/> and the timestamps for all buffers 18984and the result metadata generated by a single capture are identical.<wbr/></p></span> 18985 </li> 18986 <li> 18987 <span class="entry_type_enum_name">REALTIME</span> 18988 <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 18989<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/> 18990and they can be compared to other timestamps using that base.<wbr/></p></span> 18991 </li> 18992 </ul> 18993 18994 </td> <!-- entry_type --> 18995 18996 <td class="entry_description"> 18997 <p>The time base source for sensor capture start timestamps.<wbr/></p> 18998 </td> 18999 19000 <td class="entry_units"> 19001 </td> 19002 19003 <td class="entry_range"> 19004 </td> 19005 19006 <td class="entry_tags"> 19007 <ul class="entry_tags"> 19008 <li><a href="#tag_V1">V1</a></li> 19009 </ul> 19010 </td> 19011 19012 </tr> 19013 <tr class="entries_header"> 19014 <th class="th_details" colspan="5">Details</th> 19015 </tr> 19016 <tr class="entry_cont"> 19017 <td class="entry_details" colspan="5"> 19018 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but 19019may not based on a time source that can be compared to other system time sources.<wbr/></p> 19020<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they 19021can be compared against other system time sources/<wbr/>timestamps.<wbr/></p> 19022 </td> 19023 </tr> 19024 19025 19026 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19027 <!-- end of entry --> 19028 19029 19030 <tr class="entry" id="static_android.sensor.info.lensShadingApplied"> 19031 <td class="entry_name 19032 " rowspan="3"> 19033 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied 19034 </td> 19035 <td class="entry_type"> 19036 <span class="entry_type_name entry_type_name_enum">byte</span> 19037 19038 <span class="entry_type_visibility"> [public as boolean]</span> 19039 19040 19041 19042 19043 19044 <ul class="entry_type_enum"> 19045 <li> 19046 <span class="entry_type_enum_name">FALSE</span> 19047 </li> 19048 <li> 19049 <span class="entry_type_enum_name">TRUE</span> 19050 </li> 19051 </ul> 19052 19053 </td> <!-- entry_type --> 19054 19055 <td class="entry_description"> 19056 <p>Whether the RAW images output from this camera device are subject to 19057lens shading correction.<wbr/></p> 19058 </td> 19059 19060 <td class="entry_units"> 19061 </td> 19062 19063 <td class="entry_range"> 19064 </td> 19065 19066 <td class="entry_tags"> 19067 </td> 19068 19069 </tr> 19070 <tr class="entries_header"> 19071 <th class="th_details" colspan="5">Details</th> 19072 </tr> 19073 <tr class="entry_cont"> 19074 <td class="entry_details" colspan="5"> 19075 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will 19076have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will 19077not be adjusted for lens shading correction.<wbr/> 19078See <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> 19079<p>This key will be <code>null</code> for all devices do not report this information.<wbr/> 19080Devices with RAW capability will always report this information in this key.<wbr/></p> 19081 </td> 19082 </tr> 19083 19084 19085 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19086 <!-- end of entry --> 19087 19088 19089 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize"> 19090 <td class="entry_name 19091 " rowspan="5"> 19092 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 19093 </td> 19094 <td class="entry_type"> 19095 <span class="entry_type_name">int32</span> 19096 <span class="entry_type_container">x</span> 19097 19098 <span class="entry_type_array"> 19099 4 19100 </span> 19101 <span class="entry_type_visibility"> [public as rectangle]</span> 19102 19103 19104 <span class="entry_type_hwlevel">[legacy] </span> 19105 19106 19107 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 19108 19109 19110 </td> <!-- entry_type --> 19111 19112 <td class="entry_description"> 19113 <p>The area of the image sensor which corresponds to active pixels prior to the 19114application of any geometric distortion correction.<wbr/></p> 19115 </td> 19116 19117 <td class="entry_units"> 19118 Pixel coordinates on the image sensor 19119 </td> 19120 19121 <td class="entry_range"> 19122 </td> 19123 19124 <td class="entry_tags"> 19125 <ul class="entry_tags"> 19126 <li><a href="#tag_RAW">RAW</a></li> 19127 </ul> 19128 </td> 19129 19130 </tr> 19131 <tr class="entries_header"> 19132 <th class="th_details" colspan="5">Details</th> 19133 </tr> 19134 <tr class="entry_cont"> 19135 <td class="entry_details" colspan="5"> 19136 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 19137the region that actually receives light from the scene) before any geometric correction 19138has been applied,<wbr/> and should be treated as the active region rectangle for any of the 19139raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading 19140correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as 19141the origin,<wbr/> (0,<wbr/>0).<wbr/></p> 19142<p>The size of this region determines the maximum field of view and the maximum number of 19143pixels that an image from this sensor can contain,<wbr/> prior to the application of 19144geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a 19145post-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> 19146field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image 19147can be calculated by applying the geometric distortion correction fields to this 19148rectangle,<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> 19149<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the 19150dimensions 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/> 19151(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in 19152<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p> 19153<ol> 19154<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in 19155<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 19156to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li> 19157<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/> 19158(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw 19159buffers is defined relative to the top,<wbr/> left of the 19160<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> 19161<li>If the resulting corrected pixel coordinate is within the region given in 19162<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 19163processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/> 19164when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li> 19165</ol> 19166<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> 19167is (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/> 19168<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 19169correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in 19170pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer 19171with 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) 19172relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in 19173<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19174<p>The currently supported fields that correct for geometric distortion are:</p> 19175<ol> 19176<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li> 19177</ol> 19178<p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same 19179as the post-distortion-corrected rectangle given in 19180<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19181<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 19182the full pixel array,<wbr/> and the size of the full pixel array is given by 19183<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19184<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the 19185full array may include black calibration pixels or other inactive regions.<wbr/></p> 19186 </td> 19187 </tr> 19188 19189 <tr class="entries_header"> 19190 <th class="th_details" colspan="5">HAL Implementation Details</th> 19191 </tr> 19192 <tr class="entry_cont"> 19193 <td class="entry_details" colspan="5"> 19194 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 19195>= <code>(0,<wbr/>0)</code>.<wbr/> 19196The <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> 19197<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is 19198the same as the post-correction active array region given in 19199<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19200 </td> 19201 </tr> 19202 19203 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19204 <!-- end of entry --> 19205 19206 19207 19208 19209 19210 <tr class="entry" id="static_android.sensor.referenceIlluminant1"> 19211 <td class="entry_name 19212 " rowspan="5"> 19213 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1 19214 </td> 19215 <td class="entry_type"> 19216 <span class="entry_type_name entry_type_name_enum">byte</span> 19217 19218 <span class="entry_type_visibility"> [public]</span> 19219 19220 19221 19222 19223 19224 <ul class="entry_type_enum"> 19225 <li> 19226 <span class="entry_type_enum_name">DAYLIGHT</span> 19227 <span class="entry_type_enum_value">1</span> 19228 </li> 19229 <li> 19230 <span class="entry_type_enum_name">FLUORESCENT</span> 19231 <span class="entry_type_enum_value">2</span> 19232 </li> 19233 <li> 19234 <span class="entry_type_enum_name">TUNGSTEN</span> 19235 <span class="entry_type_enum_value">3</span> 19236 <span class="entry_type_enum_notes"><p>Incandescent light</p></span> 19237 </li> 19238 <li> 19239 <span class="entry_type_enum_name">FLASH</span> 19240 <span class="entry_type_enum_value">4</span> 19241 </li> 19242 <li> 19243 <span class="entry_type_enum_name">FINE_WEATHER</span> 19244 <span class="entry_type_enum_value">9</span> 19245 </li> 19246 <li> 19247 <span class="entry_type_enum_name">CLOUDY_WEATHER</span> 19248 <span class="entry_type_enum_value">10</span> 19249 </li> 19250 <li> 19251 <span class="entry_type_enum_name">SHADE</span> 19252 <span class="entry_type_enum_value">11</span> 19253 </li> 19254 <li> 19255 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span> 19256 <span class="entry_type_enum_value">12</span> 19257 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span> 19258 </li> 19259 <li> 19260 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span> 19261 <span class="entry_type_enum_value">13</span> 19262 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span> 19263 </li> 19264 <li> 19265 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span> 19266 <span class="entry_type_enum_value">14</span> 19267 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span> 19268 </li> 19269 <li> 19270 <span class="entry_type_enum_name">WHITE_FLUORESCENT</span> 19271 <span class="entry_type_enum_value">15</span> 19272 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span> 19273 </li> 19274 <li> 19275 <span class="entry_type_enum_name">STANDARD_A</span> 19276 <span class="entry_type_enum_value">17</span> 19277 </li> 19278 <li> 19279 <span class="entry_type_enum_name">STANDARD_B</span> 19280 <span class="entry_type_enum_value">18</span> 19281 </li> 19282 <li> 19283 <span class="entry_type_enum_name">STANDARD_C</span> 19284 <span class="entry_type_enum_value">19</span> 19285 </li> 19286 <li> 19287 <span class="entry_type_enum_name">D55</span> 19288 <span class="entry_type_enum_value">20</span> 19289 </li> 19290 <li> 19291 <span class="entry_type_enum_name">D65</span> 19292 <span class="entry_type_enum_value">21</span> 19293 </li> 19294 <li> 19295 <span class="entry_type_enum_name">D75</span> 19296 <span class="entry_type_enum_value">22</span> 19297 </li> 19298 <li> 19299 <span class="entry_type_enum_name">D50</span> 19300 <span class="entry_type_enum_value">23</span> 19301 </li> 19302 <li> 19303 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span> 19304 <span class="entry_type_enum_value">24</span> 19305 </li> 19306 </ul> 19307 19308 </td> <!-- entry_type --> 19309 19310 <td class="entry_description"> 19311 <p>The standard reference illuminant used as the scene light source when 19312calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 19313<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 19314<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p> 19315 </td> 19316 19317 <td class="entry_units"> 19318 </td> 19319 19320 <td class="entry_range"> 19321 </td> 19322 19323 <td class="entry_tags"> 19324 <ul class="entry_tags"> 19325 <li><a href="#tag_RAW">RAW</a></li> 19326 </ul> 19327 </td> 19328 19329 </tr> 19330 <tr class="entries_header"> 19331 <th class="th_details" colspan="5">Details</th> 19332 </tr> 19333 <tr class="entry_cont"> 19334 <td class="entry_details" colspan="5"> 19335 <p>The values in this key correspond to the values defined for the 19336EXIF LightSource tag.<wbr/> These illuminants are standard light sources 19337that are often used calibrating camera devices.<wbr/></p> 19338<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 19339<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 19340<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p> 19341<p>Some devices may choose to provide a second set of calibration 19342information for improved quality,<wbr/> including 19343<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p> 19344 </td> 19345 </tr> 19346 19347 <tr class="entries_header"> 19348 <th class="th_details" colspan="5">HAL Implementation Details</th> 19349 </tr> 19350 <tr class="entry_cont"> 19351 <td class="entry_details" colspan="5"> 19352 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 19353and corresponding matrices must be present to support the RAW capability 19354and DNG output.<wbr/></p> 19355<p>When producing raw images with a color profile that has only been 19356calibrated against a single light source,<wbr/> it is valid to omit 19357<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the 19358<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/> 19359and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 19360<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be 19361chosen so that it is representative of typical scene lighting.<wbr/> In 19362general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p> 19363<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and 19364<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be 19365chosen to represent the typical range of scene lighting conditions.<wbr/> 19366In general,<wbr/> low color temperature illuminant such as Standard-A will 19367be chosen for the first reference illuminant and a higher color 19368temperature illuminant such as D65 will be chosen for the second 19369reference illuminant.<wbr/></p> 19370 </td> 19371 </tr> 19372 19373 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19374 <!-- end of entry --> 19375 19376 19377 <tr class="entry" id="static_android.sensor.referenceIlluminant2"> 19378 <td class="entry_name 19379 " rowspan="3"> 19380 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2 19381 </td> 19382 <td class="entry_type"> 19383 <span class="entry_type_name">byte</span> 19384 19385 <span class="entry_type_visibility"> [public]</span> 19386 19387 19388 19389 19390 19391 19392 </td> <!-- entry_type --> 19393 19394 <td class="entry_description"> 19395 <p>The standard reference illuminant used as the scene light source when 19396calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 19397<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 19398<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 19399 </td> 19400 19401 <td class="entry_units"> 19402 </td> 19403 19404 <td class="entry_range"> 19405 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p> 19406 </td> 19407 19408 <td class="entry_tags"> 19409 <ul class="entry_tags"> 19410 <li><a href="#tag_RAW">RAW</a></li> 19411 </ul> 19412 </td> 19413 19414 </tr> 19415 <tr class="entries_header"> 19416 <th class="th_details" colspan="5">Details</th> 19417 </tr> 19418 <tr class="entry_cont"> 19419 <td class="entry_details" colspan="5"> 19420 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p> 19421<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 19422<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 19423<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p> 19424 </td> 19425 </tr> 19426 19427 19428 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19429 <!-- end of entry --> 19430 19431 19432 <tr class="entry" id="static_android.sensor.calibrationTransform1"> 19433 <td class="entry_name 19434 " rowspan="3"> 19435 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1 19436 </td> 19437 <td class="entry_type"> 19438 <span class="entry_type_name">rational</span> 19439 <span class="entry_type_container">x</span> 19440 19441 <span class="entry_type_array"> 19442 3 x 3 19443 </span> 19444 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19445 19446 19447 19448 19449 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19450 19451 19452 </td> <!-- entry_type --> 19453 19454 <td class="entry_description"> 19455 <p>A per-device calibration transform matrix that maps from the 19456reference sensor colorspace to the actual device sensor colorspace.<wbr/></p> 19457 </td> 19458 19459 <td class="entry_units"> 19460 </td> 19461 19462 <td class="entry_range"> 19463 </td> 19464 19465 <td class="entry_tags"> 19466 <ul class="entry_tags"> 19467 <li><a href="#tag_RAW">RAW</a></li> 19468 </ul> 19469 </td> 19470 19471 </tr> 19472 <tr class="entries_header"> 19473 <th class="th_details" colspan="5">Details</th> 19474 </tr> 19475 <tr class="entry_cont"> 19476 <td class="entry_details" colspan="5"> 19477 <p>This matrix is used to correct for per-device variations in the 19478sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 19479<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19480contains a per-device calibration transform that maps colors 19481from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 19482colorspace) into this camera device's native sensor color 19483space under the first reference illuminant 19484(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 19485 </td> 19486 </tr> 19487 19488 19489 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19490 <!-- end of entry --> 19491 19492 19493 <tr class="entry" id="static_android.sensor.calibrationTransform2"> 19494 <td class="entry_name 19495 " rowspan="3"> 19496 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2 19497 </td> 19498 <td class="entry_type"> 19499 <span class="entry_type_name">rational</span> 19500 <span class="entry_type_container">x</span> 19501 19502 <span class="entry_type_array"> 19503 3 x 3 19504 </span> 19505 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19506 19507 19508 19509 19510 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19511 19512 19513 </td> <!-- entry_type --> 19514 19515 <td class="entry_description"> 19516 <p>A per-device calibration transform matrix that maps from the 19517reference sensor colorspace to the actual device sensor colorspace 19518(this is the colorspace of the raw buffer data).<wbr/></p> 19519 </td> 19520 19521 <td class="entry_units"> 19522 </td> 19523 19524 <td class="entry_range"> 19525 </td> 19526 19527 <td class="entry_tags"> 19528 <ul class="entry_tags"> 19529 <li><a href="#tag_RAW">RAW</a></li> 19530 </ul> 19531 </td> 19532 19533 </tr> 19534 <tr class="entries_header"> 19535 <th class="th_details" colspan="5">Details</th> 19536 </tr> 19537 <tr class="entry_cont"> 19538 <td class="entry_details" colspan="5"> 19539 <p>This matrix is used to correct for per-device variations in the 19540sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 19541<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19542contains a per-device calibration transform that maps colors 19543from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 19544colorspace) into this camera device's native sensor color 19545space under the second reference illuminant 19546(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 19547<p>This matrix will only be present if the second reference 19548illuminant is present.<wbr/></p> 19549 </td> 19550 </tr> 19551 19552 19553 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19554 <!-- end of entry --> 19555 19556 19557 <tr class="entry" id="static_android.sensor.colorTransform1"> 19558 <td class="entry_name 19559 " rowspan="3"> 19560 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1 19561 </td> 19562 <td class="entry_type"> 19563 <span class="entry_type_name">rational</span> 19564 <span class="entry_type_container">x</span> 19565 19566 <span class="entry_type_array"> 19567 3 x 3 19568 </span> 19569 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19570 19571 19572 19573 19574 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19575 19576 19577 </td> <!-- entry_type --> 19578 19579 <td class="entry_description"> 19580 <p>A matrix that transforms color values from CIE XYZ color space to 19581reference sensor color space.<wbr/></p> 19582 </td> 19583 19584 <td class="entry_units"> 19585 </td> 19586 19587 <td class="entry_range"> 19588 </td> 19589 19590 <td class="entry_tags"> 19591 <ul class="entry_tags"> 19592 <li><a href="#tag_RAW">RAW</a></li> 19593 </ul> 19594 </td> 19595 19596 </tr> 19597 <tr class="entries_header"> 19598 <th class="th_details" colspan="5">Details</th> 19599 </tr> 19600 <tr class="entry_cont"> 19601 <td class="entry_details" colspan="5"> 19602 <p>This matrix is used to convert from the standard CIE XYZ color 19603space to the reference sensor colorspace,<wbr/> and is used when processing 19604raw buffer data.<wbr/></p> 19605<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19606contains a color transform matrix that maps colors from the CIE 19607XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 19608"golden module" colorspace) under the first reference illuminant 19609(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 19610<p>The white points chosen in both the reference sensor color space 19611and the CIE XYZ colorspace when calculating this transform will 19612match the standard white point for the first reference illuminant 19613(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 19614 </td> 19615 </tr> 19616 19617 19618 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19619 <!-- end of entry --> 19620 19621 19622 <tr class="entry" id="static_android.sensor.colorTransform2"> 19623 <td class="entry_name 19624 " rowspan="3"> 19625 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2 19626 </td> 19627 <td class="entry_type"> 19628 <span class="entry_type_name">rational</span> 19629 <span class="entry_type_container">x</span> 19630 19631 <span class="entry_type_array"> 19632 3 x 3 19633 </span> 19634 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19635 19636 19637 19638 19639 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19640 19641 19642 </td> <!-- entry_type --> 19643 19644 <td class="entry_description"> 19645 <p>A matrix that transforms color values from CIE XYZ color space to 19646reference sensor color space.<wbr/></p> 19647 </td> 19648 19649 <td class="entry_units"> 19650 </td> 19651 19652 <td class="entry_range"> 19653 </td> 19654 19655 <td class="entry_tags"> 19656 <ul class="entry_tags"> 19657 <li><a href="#tag_RAW">RAW</a></li> 19658 </ul> 19659 </td> 19660 19661 </tr> 19662 <tr class="entries_header"> 19663 <th class="th_details" colspan="5">Details</th> 19664 </tr> 19665 <tr class="entry_cont"> 19666 <td class="entry_details" colspan="5"> 19667 <p>This matrix is used to convert from the standard CIE XYZ color 19668space to the reference sensor colorspace,<wbr/> and is used when processing 19669raw buffer data.<wbr/></p> 19670<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19671contains a color transform matrix that maps colors from the CIE 19672XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 19673"golden module" colorspace) under the second reference illuminant 19674(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 19675<p>The white points chosen in both the reference sensor color space 19676and the CIE XYZ colorspace when calculating this transform will 19677match the standard white point for the second reference illuminant 19678(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 19679<p>This matrix will only be present if the second reference 19680illuminant is present.<wbr/></p> 19681 </td> 19682 </tr> 19683 19684 19685 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19686 <!-- end of entry --> 19687 19688 19689 <tr class="entry" id="static_android.sensor.forwardMatrix1"> 19690 <td class="entry_name 19691 " rowspan="3"> 19692 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1 19693 </td> 19694 <td class="entry_type"> 19695 <span class="entry_type_name">rational</span> 19696 <span class="entry_type_container">x</span> 19697 19698 <span class="entry_type_array"> 19699 3 x 3 19700 </span> 19701 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19702 19703 19704 19705 19706 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19707 19708 19709 </td> <!-- entry_type --> 19710 19711 <td class="entry_description"> 19712 <p>A matrix that transforms white balanced camera colors from the reference 19713sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 19714 </td> 19715 19716 <td class="entry_units"> 19717 </td> 19718 19719 <td class="entry_range"> 19720 </td> 19721 19722 <td class="entry_tags"> 19723 <ul class="entry_tags"> 19724 <li><a href="#tag_RAW">RAW</a></li> 19725 </ul> 19726 </td> 19727 19728 </tr> 19729 <tr class="entries_header"> 19730 <th class="th_details" colspan="5">Details</th> 19731 </tr> 19732 <tr class="entry_cont"> 19733 <td class="entry_details" colspan="5"> 19734 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 19735is used when processing raw buffer data.<wbr/></p> 19736<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 19737a color transform matrix that maps white balanced colors from the 19738reference sensor color space to the CIE XYZ color space with a D50 white 19739point.<wbr/></p> 19740<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 19741this matrix is chosen so that the standard white point for this reference 19742illuminant in the reference sensor colorspace is mapped to D50 in the 19743CIE XYZ colorspace.<wbr/></p> 19744 </td> 19745 </tr> 19746 19747 19748 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19749 <!-- end of entry --> 19750 19751 19752 <tr class="entry" id="static_android.sensor.forwardMatrix2"> 19753 <td class="entry_name 19754 " rowspan="3"> 19755 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2 19756 </td> 19757 <td class="entry_type"> 19758 <span class="entry_type_name">rational</span> 19759 <span class="entry_type_container">x</span> 19760 19761 <span class="entry_type_array"> 19762 3 x 3 19763 </span> 19764 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19765 19766 19767 19768 19769 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19770 19771 19772 </td> <!-- entry_type --> 19773 19774 <td class="entry_description"> 19775 <p>A matrix that transforms white balanced camera colors from the reference 19776sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 19777 </td> 19778 19779 <td class="entry_units"> 19780 </td> 19781 19782 <td class="entry_range"> 19783 </td> 19784 19785 <td class="entry_tags"> 19786 <ul class="entry_tags"> 19787 <li><a href="#tag_RAW">RAW</a></li> 19788 </ul> 19789 </td> 19790 19791 </tr> 19792 <tr class="entries_header"> 19793 <th class="th_details" colspan="5">Details</th> 19794 </tr> 19795 <tr class="entry_cont"> 19796 <td class="entry_details" colspan="5"> 19797 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 19798is used when processing raw buffer data.<wbr/></p> 19799<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 19800a color transform matrix that maps white balanced colors from the 19801reference sensor color space to the CIE XYZ color space with a D50 white 19802point.<wbr/></p> 19803<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>) 19804this matrix is chosen so that the standard white point for this reference 19805illuminant in the reference sensor colorspace is mapped to D50 in the 19806CIE XYZ colorspace.<wbr/></p> 19807<p>This matrix will only be present if the second reference 19808illuminant is present.<wbr/></p> 19809 </td> 19810 </tr> 19811 19812 19813 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19814 <!-- end of entry --> 19815 19816 19817 <tr class="entry" id="static_android.sensor.baseGainFactor"> 19818 <td class="entry_name 19819 " rowspan="1"> 19820 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor 19821 </td> 19822 <td class="entry_type"> 19823 <span class="entry_type_name">rational</span> 19824 19825 <span class="entry_type_visibility"> [system]</span> 19826 19827 19828 19829 19830 19831 19832 </td> <!-- entry_type --> 19833 19834 <td class="entry_description"> 19835 <p>Gain factor from electrons to raw units when 19836ISO=100</p> 19837 </td> 19838 19839 <td class="entry_units"> 19840 </td> 19841 19842 <td class="entry_range"> 19843 </td> 19844 19845 <td class="entry_tags"> 19846 <ul class="entry_tags"> 19847 <li><a href="#tag_FUTURE">FUTURE</a></li> 19848 </ul> 19849 </td> 19850 19851 </tr> 19852 19853 19854 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19855 <!-- end of entry --> 19856 19857 19858 <tr class="entry" id="static_android.sensor.blackLevelPattern"> 19859 <td class="entry_name 19860 " rowspan="5"> 19861 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern 19862 </td> 19863 <td class="entry_type"> 19864 <span class="entry_type_name">int32</span> 19865 <span class="entry_type_container">x</span> 19866 19867 <span class="entry_type_array"> 19868 4 19869 </span> 19870 <span class="entry_type_visibility"> [public as blackLevelPattern]</span> 19871 19872 19873 19874 19875 <div class="entry_type_notes">2x2 raw count block</div> 19876 19877 19878 </td> <!-- entry_type --> 19879 19880 <td class="entry_description"> 19881 <p>A fixed black level offset for each of the color filter arrangement 19882(CFA) mosaic channels.<wbr/></p> 19883 </td> 19884 19885 <td class="entry_units"> 19886 </td> 19887 19888 <td class="entry_range"> 19889 <p>>= 0 for each.<wbr/></p> 19890 </td> 19891 19892 <td class="entry_tags"> 19893 <ul class="entry_tags"> 19894 <li><a href="#tag_RAW">RAW</a></li> 19895 </ul> 19896 </td> 19897 19898 </tr> 19899 <tr class="entries_header"> 19900 <th class="th_details" colspan="5">Details</th> 19901 </tr> 19902 <tr class="entry_cont"> 19903 <td class="entry_details" colspan="5"> 19904 <p>This key specifies the zero light value for each of the CFA mosaic 19905channels in the camera sensor.<wbr/> The maximal value output by the 19906sensor 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> 19907<p>The values are given in the same order as channels listed for the CFA 19908layout 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 19909nth value given corresponds to the black level offset for the nth 19910color channel listed in the CFA.<wbr/></p> 19911<p>The black level values of captured images may vary for different 19912capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key 19913represents a coarse approximation for such case.<wbr/> It is recommended to 19914use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from 19915<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when 19916supported by the camera device,<wbr/> which provides more accurate black 19917level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use 19918pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black 19919level values for each frame.<wbr/></p> 19920 </td> 19921 </tr> 19922 19923 <tr class="entries_header"> 19924 <th class="th_details" colspan="5">HAL Implementation Details</th> 19925 </tr> 19926 <tr class="entry_cont"> 19927 <td class="entry_details" colspan="5"> 19928 <p>The values are given in row-column scan order,<wbr/> with the first value 19929corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 19930 </td> 19931 </tr> 19932 19933 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19934 <!-- end of entry --> 19935 19936 19937 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity"> 19938 <td class="entry_name 19939 " rowspan="3"> 19940 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity 19941 </td> 19942 <td class="entry_type"> 19943 <span class="entry_type_name">int32</span> 19944 19945 <span class="entry_type_visibility"> [public]</span> 19946 19947 19948 <span class="entry_type_hwlevel">[full] </span> 19949 19950 19951 19952 19953 </td> <!-- entry_type --> 19954 19955 <td class="entry_description"> 19956 <p>Maximum sensitivity that is implemented 19957purely through analog gain.<wbr/></p> 19958 </td> 19959 19960 <td class="entry_units"> 19961 </td> 19962 19963 <td class="entry_range"> 19964 </td> 19965 19966 <td class="entry_tags"> 19967 <ul class="entry_tags"> 19968 <li><a href="#tag_V1">V1</a></li> 19969 <li><a href="#tag_FULL">FULL</a></li> 19970 </ul> 19971 </td> 19972 19973 </tr> 19974 <tr class="entries_header"> 19975 <th class="th_details" colspan="5">Details</th> 19976 </tr> 19977 <tr class="entry_cont"> 19978 <td class="entry_details" colspan="5"> 19979 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or 19980equal to this,<wbr/> all applied gain must be analog.<wbr/> For 19981values above this,<wbr/> the gain applied can be a mix of analog and 19982digital.<wbr/></p> 19983 </td> 19984 </tr> 19985 19986 19987 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19988 <!-- end of entry --> 19989 19990 19991 <tr class="entry" id="static_android.sensor.orientation"> 19992 <td class="entry_name 19993 " rowspan="3"> 19994 android.<wbr/>sensor.<wbr/>orientation 19995 </td> 19996 <td class="entry_type"> 19997 <span class="entry_type_name">int32</span> 19998 19999 <span class="entry_type_visibility"> [public]</span> 20000 20001 20002 <span class="entry_type_hwlevel">[legacy] </span> 20003 20004 20005 20006 20007 </td> <!-- entry_type --> 20008 20009 <td class="entry_description"> 20010 <p>Clockwise angle through which the output image needs to be rotated to be 20011upright on the device screen in its native orientation.<wbr/></p> 20012 </td> 20013 20014 <td class="entry_units"> 20015 Degrees of clockwise rotation; always a multiple of 20016 90 20017 </td> 20018 20019 <td class="entry_range"> 20020 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 20021 </td> 20022 20023 <td class="entry_tags"> 20024 <ul class="entry_tags"> 20025 <li><a href="#tag_BC">BC</a></li> 20026 </ul> 20027 </td> 20028 20029 </tr> 20030 <tr class="entries_header"> 20031 <th class="th_details" colspan="5">Details</th> 20032 </tr> 20033 <tr class="entry_cont"> 20034 <td class="entry_details" colspan="5"> 20035 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in 20036the sensor's coordinate system.<wbr/></p> 20037 </td> 20038 </tr> 20039 20040 20041 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20042 <!-- end of entry --> 20043 20044 20045 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions"> 20046 <td class="entry_name 20047 " rowspan="3"> 20048 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions 20049 </td> 20050 <td class="entry_type"> 20051 <span class="entry_type_name">int32</span> 20052 <span class="entry_type_container">x</span> 20053 20054 <span class="entry_type_array"> 20055 3 20056 </span> 20057 <span class="entry_type_visibility"> [system]</span> 20058 20059 20060 20061 20062 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div> 20063 20064 20065 </td> <!-- entry_type --> 20066 20067 <td class="entry_description"> 20068 <p>The number of input samples for each dimension of 20069<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p> 20070 </td> 20071 20072 <td class="entry_units"> 20073 </td> 20074 20075 <td class="entry_range"> 20076 <p>Hue >= 1,<wbr/> 20077Saturation >= 2,<wbr/> 20078Value >= 1</p> 20079 </td> 20080 20081 <td class="entry_tags"> 20082 <ul class="entry_tags"> 20083 <li><a href="#tag_RAW">RAW</a></li> 20084 </ul> 20085 </td> 20086 20087 </tr> 20088 <tr class="entries_header"> 20089 <th class="th_details" colspan="5">Details</th> 20090 </tr> 20091 <tr class="entry_cont"> 20092 <td class="entry_details" colspan="5"> 20093 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value 20094dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the 20095dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th 20096element.<wbr/></p> 20097 </td> 20098 </tr> 20099 20100 20101 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20102 <!-- end of entry --> 20103 20104 20105 <tr class="entry" id="static_android.sensor.availableTestPatternModes"> 20106 <td class="entry_name 20107 " rowspan="5"> 20108 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes 20109 </td> 20110 <td class="entry_type"> 20111 <span class="entry_type_name">int32</span> 20112 <span class="entry_type_container">x</span> 20113 20114 <span class="entry_type_array"> 20115 n 20116 </span> 20117 <span class="entry_type_visibility"> [public]</span> 20118 20119 20120 20121 20122 <div class="entry_type_notes">list of enums</div> 20123 20124 20125 </td> <!-- entry_type --> 20126 20127 <td class="entry_description"> 20128 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> 20129supported by this camera device.<wbr/></p> 20130 </td> 20131 20132 <td class="entry_units"> 20133 </td> 20134 20135 <td class="entry_range"> 20136 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p> 20137 </td> 20138 20139 <td class="entry_tags"> 20140 </td> 20141 20142 </tr> 20143 <tr class="entries_header"> 20144 <th class="th_details" colspan="5">Details</th> 20145 </tr> 20146 <tr class="entry_cont"> 20147 <td class="entry_details" colspan="5"> 20148 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p> 20149 </td> 20150 </tr> 20151 20152 <tr class="entries_header"> 20153 <th class="th_details" colspan="5">HAL Implementation Details</th> 20154 </tr> 20155 <tr class="entry_cont"> 20156 <td class="entry_details" colspan="5"> 20157 <p>All custom modes must be >= CUSTOM1.<wbr/></p> 20158 </td> 20159 </tr> 20160 20161 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20162 <!-- end of entry --> 20163 20164 20165 <tr class="entry" id="static_android.sensor.opticalBlackRegions"> 20166 <td class="entry_name 20167 " rowspan="5"> 20168 android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions 20169 </td> 20170 <td class="entry_type"> 20171 <span class="entry_type_name">int32</span> 20172 <span class="entry_type_container">x</span> 20173 20174 <span class="entry_type_array"> 20175 4 x num_regions 20176 </span> 20177 <span class="entry_type_visibility"> [public as rectangle]</span> 20178 20179 20180 20181 20182 20183 20184 </td> <!-- entry_type --> 20185 20186 <td class="entry_description"> 20187 <p>List of disjoint rectangles indicating the sensor 20188optically shielded black pixel regions.<wbr/></p> 20189 </td> 20190 20191 <td class="entry_units"> 20192 </td> 20193 20194 <td class="entry_range"> 20195 </td> 20196 20197 <td class="entry_tags"> 20198 </td> 20199 20200 </tr> 20201 <tr class="entries_header"> 20202 <th class="th_details" colspan="5">Details</th> 20203 </tr> 20204 <tr class="entry_cont"> 20205 <td class="entry_details" colspan="5"> 20206 <p>In most camera sensors,<wbr/> the active array is surrounded by some 20207optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels 20208provides a reliable black reference for black level compensation 20209in active array region.<wbr/></p> 20210<p>This key provides a list of disjoint rectangles specifying the 20211regions of optically shielded (with metal shield) black pixel 20212regions if the camera device is capable of reading out these black 20213pixels in the output raw images.<wbr/> In comparison to the fixed black 20214level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key 20215may provide a more accurate way for the application to calculate 20216black level of each captured raw images.<wbr/></p> 20217<p>When this key is reported,<wbr/> the <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> and 20218<a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p> 20219 </td> 20220 </tr> 20221 20222 <tr class="entries_header"> 20223 <th class="th_details" colspan="5">HAL Implementation Details</th> 20224 </tr> 20225 <tr class="entry_cont"> 20226 <td class="entry_details" colspan="5"> 20227 <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin) 20228must be >= (0,<wbr/>0) and <= 20229<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> The (width,<wbr/> height) must be 20230<= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be 20231outside the region reported by 20232<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 20233<p>The HAL must report minimal number of disjoint regions for the 20234optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can 20235be covered by one rectangle,<wbr/> the HAL must not split this region into 20236multiple rectangles.<wbr/></p> 20237 </td> 20238 </tr> 20239 20240 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20241 <!-- end of entry --> 20242 20243 20244 <tr class="entry" id="static_android.sensor.opaqueRawSize"> 20245 <td class="entry_name 20246 " rowspan="5"> 20247 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size 20248 </td> 20249 <td class="entry_type"> 20250 <span class="entry_type_name">int32</span> 20251 <span class="entry_type_container">x</span> 20252 20253 <span class="entry_type_array"> 20254 n x 3 20255 </span> 20256 <span class="entry_type_visibility"> [system]</span> 20257 20258 20259 20260 20261 20262 20263 </td> <!-- entry_type --> 20264 20265 <td class="entry_description"> 20266 <p>Size in bytes for all the listed opaque RAW buffer sizes</p> 20267 </td> 20268 20269 <td class="entry_units"> 20270 </td> 20271 20272 <td class="entry_range"> 20273 <p>Must be large enough to fit the opaque RAW of corresponding size produced by 20274the camera</p> 20275 </td> 20276 20277 <td class="entry_tags"> 20278 </td> 20279 20280 </tr> 20281 <tr class="entries_header"> 20282 <th class="th_details" colspan="5">Details</th> 20283 </tr> 20284 <tr class="entry_cont"> 20285 <td class="entry_details" colspan="5"> 20286 <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/> 20287This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/> 20288All RAW_<wbr/>OPAQUE output stream configuration listed in 20289<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in 20290this key.<wbr/></p> 20291 </td> 20292 </tr> 20293 20294 <tr class="entries_header"> 20295 <th class="th_details" colspan="5">HAL Implementation Details</th> 20296 </tr> 20297 <tr class="entry_cont"> 20298 <td class="entry_details" colspan="5"> 20299 <p>This key is added in HAL3.<wbr/>4.<wbr/> 20300For HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this key.<wbr/> 20301For HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera framework 20302will derive this key by assuming each pixel takes two bytes and no padding bytes 20303between rows.<wbr/></p> 20304 </td> 20305 </tr> 20306 20307 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20308 <!-- end of entry --> 20309 20310 20311 20312 <!-- end of kind --> 20313 </tbody> 20314 <tr><td colspan="6" class="kind">dynamic</td></tr> 20315 20316 <thead class="entries_header"> 20317 <tr> 20318 <th class="th_name">Property Name</th> 20319 <th class="th_type">Type</th> 20320 <th class="th_description">Description</th> 20321 <th class="th_units">Units</th> 20322 <th class="th_range">Range</th> 20323 <th class="th_tags">Tags</th> 20324 </tr> 20325 </thead> 20326 20327 <tbody> 20328 20329 20330 20331 20332 20333 20334 20335 20336 20337 20338 <tr class="entry" id="dynamic_android.sensor.exposureTime"> 20339 <td class="entry_name 20340 " rowspan="3"> 20341 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 20342 </td> 20343 <td class="entry_type"> 20344 <span class="entry_type_name">int64</span> 20345 20346 <span class="entry_type_visibility"> [public]</span> 20347 20348 20349 <span class="entry_type_hwlevel">[full] </span> 20350 20351 20352 20353 20354 </td> <!-- entry_type --> 20355 20356 <td class="entry_description"> 20357 <p>Duration each pixel is exposed to 20358light.<wbr/></p> 20359 </td> 20360 20361 <td class="entry_units"> 20362 Nanoseconds 20363 </td> 20364 20365 <td class="entry_range"> 20366 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 20367 </td> 20368 20369 <td class="entry_tags"> 20370 <ul class="entry_tags"> 20371 <li><a href="#tag_V1">V1</a></li> 20372 </ul> 20373 </td> 20374 20375 </tr> 20376 <tr class="entries_header"> 20377 <th class="th_details" colspan="5">Details</th> 20378 </tr> 20379 <tr class="entry_cont"> 20380 <td class="entry_details" colspan="5"> 20381 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 20382duration exposed to the nearest possible value (rather than expose longer).<wbr/> 20383The final exposure time used will be available in the output capture result.<wbr/></p> 20384<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 20385OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 20386 </td> 20387 </tr> 20388 20389 20390 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20391 <!-- end of entry --> 20392 20393 20394 <tr class="entry" id="dynamic_android.sensor.frameDuration"> 20395 <td class="entry_name 20396 " rowspan="5"> 20397 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 20398 </td> 20399 <td class="entry_type"> 20400 <span class="entry_type_name">int64</span> 20401 20402 <span class="entry_type_visibility"> [public]</span> 20403 20404 20405 <span class="entry_type_hwlevel">[full] </span> 20406 20407 20408 20409 20410 </td> <!-- entry_type --> 20411 20412 <td class="entry_description"> 20413 <p>Duration from start of frame exposure to 20414start of next frame exposure.<wbr/></p> 20415 </td> 20416 20417 <td class="entry_units"> 20418 Nanoseconds 20419 </td> 20420 20421 <td class="entry_range"> 20422 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 20423<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration 20424is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 20425 </td> 20426 20427 <td class="entry_tags"> 20428 <ul class="entry_tags"> 20429 <li><a href="#tag_V1">V1</a></li> 20430 </ul> 20431 </td> 20432 20433 </tr> 20434 <tr class="entries_header"> 20435 <th class="th_details" colspan="5">Details</th> 20436 </tr> 20437 <tr class="entry_cont"> 20438 <td class="entry_details" colspan="5"> 20439 <p>The maximum frame rate that can be supported by a camera subsystem is 20440a function of many factors:</p> 20441<ul> 20442<li>Requested resolutions of output image streams</li> 20443<li>Availability of binning /<wbr/> skipping modes on the imager</li> 20444<li>The bandwidth of the imager interface</li> 20445<li>The bandwidth of the various ISP processing blocks</li> 20446</ul> 20447<p>Since these factors can vary greatly between different ISPs and 20448sensors,<wbr/> the camera abstraction tries to represent the bandwidth 20449restrictions with as simple a model as possible.<wbr/></p> 20450<p>The model presented has the following characteristics:</p> 20451<ul> 20452<li>The image sensor is always configured to output the smallest 20453resolution possible given the application's requested output stream 20454sizes.<wbr/> The smallest resolution is defined as being at least as large 20455as the largest requested output stream size; the camera pipeline must 20456never digitally upsample sensor data when the crop region covers the 20457whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 20458resolutions are configured,<wbr/> the sensor can provide a higher frame 20459rate.<wbr/></li> 20460<li>Since any request may use any or all the currently configured 20461output streams,<wbr/> the sensor and ISP must be configured to support 20462scaling a single capture to all the streams at the same time.<wbr/> This 20463means the camera pipeline must be ready to produce the largest 20464requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 20465frame rate of a given configured stream set is governed only by the 20466largest requested stream resolution.<wbr/></li> 20467<li>Using more than one output stream in a request does not affect the 20468frame duration.<wbr/></li> 20469<li>Certain format-streams may need to do additional background processing 20470before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 20471can run concurrently to the rest of the camera pipeline,<wbr/> but 20472cannot process more than 1 capture at a time.<wbr/></li> 20473</ul> 20474<p>The necessary information for the application,<wbr/> given the model above,<wbr/> 20475is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using 20476<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 20477These are used to determine the maximum frame rate /<wbr/> minimum frame 20478duration that is possible for a given stream configuration.<wbr/></p> 20479<p>Specifically,<wbr/> the application can use the following rules to 20480determine the minimum frame duration it can request from the camera 20481device:</p> 20482<ol> 20483<li>Let the set of currently configured input/<wbr/>output streams 20484be called <code>S</code>.<wbr/></li> 20485<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking 20486it 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> 20487(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be 20488called <code>F</code>.<wbr/></li> 20489<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 20490for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 20491used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 20492</ol> 20493<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> 20494using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> 20495determines the steady state frame rate that the application will get 20496if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of 20497request be called <code>Rsimple</code>.<wbr/></p> 20498<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 20499by a single capture of a new request <code>Rstall</code> (which has at least 20500one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 20501same minimum frame duration this will not cause a frame rate loss 20502if all buffers from the previous <code>Rstall</code> have already been 20503delivered.<wbr/></p> 20504<p>For more details about stalling,<wbr/> see 20505<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p> 20506<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 20507OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 20508 </td> 20509 </tr> 20510 20511 <tr class="entries_header"> 20512 <th class="th_details" colspan="5">HAL Implementation Details</th> 20513 </tr> 20514 <tr class="entry_cont"> 20515 <td class="entry_details" colspan="5"> 20516 <p>For more details about stalling,<wbr/> see 20517<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 20518 </td> 20519 </tr> 20520 20521 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20522 <!-- end of entry --> 20523 20524 20525 <tr class="entry" id="dynamic_android.sensor.sensitivity"> 20526 <td class="entry_name 20527 " rowspan="5"> 20528 android.<wbr/>sensor.<wbr/>sensitivity 20529 </td> 20530 <td class="entry_type"> 20531 <span class="entry_type_name">int32</span> 20532 20533 <span class="entry_type_visibility"> [public]</span> 20534 20535 20536 <span class="entry_type_hwlevel">[full] </span> 20537 20538 20539 20540 20541 </td> <!-- entry_type --> 20542 20543 <td class="entry_description"> 20544 <p>The amount of gain applied to sensor data 20545before processing.<wbr/></p> 20546 </td> 20547 20548 <td class="entry_units"> 20549 ISO arithmetic units 20550 </td> 20551 20552 <td class="entry_range"> 20553 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 20554 </td> 20555 20556 <td class="entry_tags"> 20557 <ul class="entry_tags"> 20558 <li><a href="#tag_V1">V1</a></li> 20559 </ul> 20560 </td> 20561 20562 </tr> 20563 <tr class="entries_header"> 20564 <th class="th_details" colspan="5">Details</th> 20565 </tr> 20566 <tr class="entry_cont"> 20567 <td class="entry_details" colspan="5"> 20568 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 20569as defined in ISO 12232:2006.<wbr/></p> 20570<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 20571if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 20572is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 20573<p>If the camera device cannot apply the exact sensitivity 20574requested,<wbr/> it will reduce the gain to the nearest supported 20575value.<wbr/> The final sensitivity used will be available in the 20576output capture result.<wbr/></p> 20577 </td> 20578 </tr> 20579 20580 <tr class="entries_header"> 20581 <th class="th_details" colspan="5">HAL Implementation Details</th> 20582 </tr> 20583 <tr class="entry_cont"> 20584 <td class="entry_details" colspan="5"> 20585 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 20586 </td> 20587 </tr> 20588 20589 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20590 <!-- end of entry --> 20591 20592 20593 <tr class="entry" id="dynamic_android.sensor.timestamp"> 20594 <td class="entry_name 20595 " rowspan="5"> 20596 android.<wbr/>sensor.<wbr/>timestamp 20597 </td> 20598 <td class="entry_type"> 20599 <span class="entry_type_name">int64</span> 20600 20601 <span class="entry_type_visibility"> [public]</span> 20602 20603 20604 <span class="entry_type_hwlevel">[legacy] </span> 20605 20606 20607 20608 20609 </td> <!-- entry_type --> 20610 20611 <td class="entry_description"> 20612 <p>Time at start of exposure of first 20613row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p> 20614 </td> 20615 20616 <td class="entry_units"> 20617 Nanoseconds 20618 </td> 20619 20620 <td class="entry_range"> 20621 <p>> 0</p> 20622 </td> 20623 20624 <td class="entry_tags"> 20625 <ul class="entry_tags"> 20626 <li><a href="#tag_BC">BC</a></li> 20627 </ul> 20628 </td> 20629 20630 </tr> 20631 <tr class="entries_header"> 20632 <th class="th_details" colspan="5">Details</th> 20633 </tr> 20634 <tr class="entry_cont"> 20635 <td class="entry_details" colspan="5"> 20636 <p>The timestamps are also included in all image 20637buffers produced for the same capture,<wbr/> and will be identical 20638on all the outputs.<wbr/></p> 20639<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/> 20640the timestamps measure time since an unspecified starting point,<wbr/> 20641and are monotonically increasing.<wbr/> They can be compared with the 20642timestamps for other captures from the same camera device,<wbr/> but are 20643not guaranteed to be comparable to any other time source.<wbr/></p> 20644<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the 20645timestamps 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 20646be compared to other timestamps from other subsystems that 20647are using that base.<wbr/></p> 20648<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of 20649the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the 20650timestamp</a> in the TotalCaptureResult that was used to create the 20651reprocess capture request.<wbr/></p> 20652 </td> 20653 </tr> 20654 20655 <tr class="entries_header"> 20656 <th class="th_details" colspan="5">HAL Implementation Details</th> 20657 </tr> 20658 <tr class="entry_cont"> 20659 <td class="entry_details" colspan="5"> 20660 <p>All timestamps must be in reference to the kernel's 20661CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for 20662time spent asleep.<wbr/> This allows for synchronization with 20663sensors that continue to operate while the system is 20664otherwise asleep.<wbr/></p> 20665<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> 20666The timestamp must be synchronized with the timestamps from other 20667sensor subsystems that are using the same timebase.<wbr/></p> 20668<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up 20669with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the 20670capture request.<wbr/></p> 20671 </td> 20672 </tr> 20673 20674 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20675 <!-- end of entry --> 20676 20677 20678 <tr class="entry" id="dynamic_android.sensor.temperature"> 20679 <td class="entry_name 20680 " rowspan="1"> 20681 android.<wbr/>sensor.<wbr/>temperature 20682 </td> 20683 <td class="entry_type"> 20684 <span class="entry_type_name">float</span> 20685 20686 <span class="entry_type_visibility"> [system]</span> 20687 20688 20689 20690 20691 20692 20693 </td> <!-- entry_type --> 20694 20695 <td class="entry_description"> 20696 <p>The temperature of the sensor,<wbr/> sampled at the time 20697exposure began for this frame.<wbr/></p> 20698<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or 20699somewhere close to it.<wbr/></p> 20700 </td> 20701 20702 <td class="entry_units"> 20703 Celsius 20704 </td> 20705 20706 <td class="entry_range"> 20707 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p> 20708 </td> 20709 20710 <td class="entry_tags"> 20711 <ul class="entry_tags"> 20712 <li><a href="#tag_FUTURE">FUTURE</a></li> 20713 </ul> 20714 </td> 20715 20716 </tr> 20717 20718 20719 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20720 <!-- end of entry --> 20721 20722 20723 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint"> 20724 <td class="entry_name 20725 " rowspan="3"> 20726 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point 20727 </td> 20728 <td class="entry_type"> 20729 <span class="entry_type_name">rational</span> 20730 <span class="entry_type_container">x</span> 20731 20732 <span class="entry_type_array"> 20733 3 20734 </span> 20735 <span class="entry_type_visibility"> [public]</span> 20736 20737 20738 20739 20740 20741 20742 </td> <!-- entry_type --> 20743 20744 <td class="entry_description"> 20745 <p>The estimated camera neutral color in the native sensor colorspace at 20746the time of capture.<wbr/></p> 20747 </td> 20748 20749 <td class="entry_units"> 20750 </td> 20751 20752 <td class="entry_range"> 20753 </td> 20754 20755 <td class="entry_tags"> 20756 <ul class="entry_tags"> 20757 <li><a href="#tag_RAW">RAW</a></li> 20758 </ul> 20759 </td> 20760 20761 </tr> 20762 <tr class="entries_header"> 20763 <th class="th_details" colspan="5">Details</th> 20764 </tr> 20765 <tr class="entry_cont"> 20766 <td class="entry_details" colspan="5"> 20767 <p>This value gives the neutral color point encoded as an RGB value in the 20768native sensor color space.<wbr/> The neutral color point indicates the 20769currently estimated white point of the scene illumination.<wbr/> It can be 20770used to interpolate between the provided color transforms when 20771processing raw sensor data.<wbr/></p> 20772<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p> 20773 </td> 20774 </tr> 20775 20776 20777 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20778 <!-- end of entry --> 20779 20780 20781 <tr class="entry" id="dynamic_android.sensor.noiseProfile"> 20782 <td class="entry_name 20783 " rowspan="5"> 20784 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile 20785 </td> 20786 <td class="entry_type"> 20787 <span class="entry_type_name">double</span> 20788 <span class="entry_type_container">x</span> 20789 20790 <span class="entry_type_array"> 20791 2 x CFA Channels 20792 </span> 20793 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span> 20794 20795 20796 20797 20798 <div class="entry_type_notes">Pairs of noise model coefficients</div> 20799 20800 20801 </td> <!-- entry_type --> 20802 20803 <td class="entry_description"> 20804 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p> 20805 </td> 20806 20807 <td class="entry_units"> 20808 </td> 20809 20810 <td class="entry_range"> 20811 </td> 20812 20813 <td class="entry_tags"> 20814 <ul class="entry_tags"> 20815 <li><a href="#tag_RAW">RAW</a></li> 20816 </ul> 20817 </td> 20818 20819 </tr> 20820 <tr class="entries_header"> 20821 <th class="th_details" colspan="5">Details</th> 20822 </tr> 20823 <tr class="entry_cont"> 20824 <td class="entry_details" colspan="5"> 20825 <p>This key contains two noise model coefficients for each CFA channel 20826corresponding to the sensor amplification (S) and sensor readout 20827noise (O).<wbr/> These are given as pairs of coefficients for each channel 20828in the same order as channels listed for the CFA layout key 20829(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is 20830represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where 20831the first member of the Pair at index n is the S coefficient and the 20832second member is the O coefficient for the nth color channel in the CFA.<wbr/></p> 20833<p>These coefficients are used in a two parameter noise model to describe 20834the amount of noise present in the image for each CFA channel.<wbr/> The 20835noise model used here is:</p> 20836<p>N(x) = sqrt(Sx + O)</p> 20837<p>Where x represents the recorded signal of a CFA channel normalized to 20838the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for 20839that channel.<wbr/></p> 20840<p>A more detailed description of the noise model can be found in the 20841Adobe DNG specification for the NoiseProfile tag.<wbr/></p> 20842 </td> 20843 </tr> 20844 20845 <tr class="entries_header"> 20846 <th class="th_details" colspan="5">HAL Implementation Details</th> 20847 </tr> 20848 <tr class="entry_cont"> 20849 <td class="entry_details" colspan="5"> 20850 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as 20851an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients 20852for the red channel,<wbr/> S1 and O1 are the coefficients for the first green 20853channel,<wbr/> etc.<wbr/></p> 20854 </td> 20855 </tr> 20856 20857 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20858 <!-- end of entry --> 20859 20860 20861 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap"> 20862 <td class="entry_name 20863 " rowspan="3"> 20864 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map 20865 </td> 20866 <td class="entry_type"> 20867 <span class="entry_type_name">float</span> 20868 <span class="entry_type_container">x</span> 20869 20870 <span class="entry_type_array"> 20871 hue_samples x saturation_samples x value_samples x 3 20872 </span> 20873 <span class="entry_type_visibility"> [system]</span> 20874 20875 20876 20877 20878 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div> 20879 20880 20881 </td> <!-- entry_type --> 20882 20883 <td class="entry_description"> 20884 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale 20885for each pixel.<wbr/></p> 20886 </td> 20887 20888 <td class="entry_units"> 20889 20890 The hue shift is given in degrees; saturation and value scale factors are 20891 unitless and are between 0 and 1 inclusive 20892 20893 </td> 20894 20895 <td class="entry_range"> 20896 </td> 20897 20898 <td class="entry_tags"> 20899 <ul class="entry_tags"> 20900 <li><a href="#tag_RAW">RAW</a></li> 20901 </ul> 20902 </td> 20903 20904 </tr> 20905 <tr class="entries_header"> 20906 <th class="th_details" colspan="5">Details</th> 20907 </tr> 20908 <tr class="entry_cont"> 20909 <td class="entry_details" colspan="5"> 20910 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in 20911<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p> 20912<p>Each entry of this map contains three floats corresponding to the 20913hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the 20914hue shift has the lowest index.<wbr/> The map entries are stored in the key 20915in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the 20916hue divisions in the middle loop,<wbr/> and the saturation divisions in the 20917inner loop.<wbr/> All zero input saturation entries are required to have a 20918value scale factor of 1.<wbr/>0.<wbr/></p> 20919 </td> 20920 </tr> 20921 20922 20923 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20924 <!-- end of entry --> 20925 20926 20927 <tr class="entry" id="dynamic_android.sensor.profileToneCurve"> 20928 <td class="entry_name 20929 " rowspan="3"> 20930 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve 20931 </td> 20932 <td class="entry_type"> 20933 <span class="entry_type_name">float</span> 20934 <span class="entry_type_container">x</span> 20935 20936 <span class="entry_type_array"> 20937 samples x 2 20938 </span> 20939 <span class="entry_type_visibility"> [system]</span> 20940 20941 20942 20943 20944 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div> 20945 20946 20947 </td> <!-- entry_type --> 20948 20949 <td class="entry_description"> 20950 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p> 20951 </td> 20952 20953 <td class="entry_units"> 20954 </td> 20955 20956 <td class="entry_range"> 20957 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of 20958<code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last 20959sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p> 20960 </td> 20961 20962 <td class="entry_tags"> 20963 <ul class="entry_tags"> 20964 <li><a href="#tag_RAW">RAW</a></li> 20965 </ul> 20966 </td> 20967 20968 </tr> 20969 <tr class="entries_header"> 20970 <th class="th_details" colspan="5">Details</th> 20971 </tr> 20972 <tr class="entry_cont"> 20973 <td class="entry_details" colspan="5"> 20974 <p>This key contains a default tone curve that can be applied while 20975processing the image as a starting point for user adjustments.<wbr/> 20976The curve is specified as a list of value pairs in linear gamma.<wbr/> 20977The curve is interpolated using a cubic spline.<wbr/></p> 20978 </td> 20979 </tr> 20980 20981 20982 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20983 <!-- end of entry --> 20984 20985 20986 <tr class="entry" id="dynamic_android.sensor.greenSplit"> 20987 <td class="entry_name 20988 " rowspan="5"> 20989 android.<wbr/>sensor.<wbr/>green<wbr/>Split 20990 </td> 20991 <td class="entry_type"> 20992 <span class="entry_type_name">float</span> 20993 20994 <span class="entry_type_visibility"> [public]</span> 20995 20996 20997 20998 20999 21000 21001 </td> <!-- entry_type --> 21002 21003 <td class="entry_description"> 21004 <p>The worst-case divergence between Bayer green channels.<wbr/></p> 21005 </td> 21006 21007 <td class="entry_units"> 21008 </td> 21009 21010 <td class="entry_range"> 21011 <p>>= 0</p> 21012 </td> 21013 21014 <td class="entry_tags"> 21015 <ul class="entry_tags"> 21016 <li><a href="#tag_RAW">RAW</a></li> 21017 </ul> 21018 </td> 21019 21020 </tr> 21021 <tr class="entries_header"> 21022 <th class="th_details" colspan="5">Details</th> 21023 </tr> 21024 <tr class="entry_cont"> 21025 <td class="entry_details" colspan="5"> 21026 <p>This value is an estimate of the worst case split between the 21027Bayer green channels in the red and blue rows in the sensor color 21028filter array.<wbr/></p> 21029<p>The green split is calculated as follows:</p> 21030<ol> 21031<li>A 5x5 pixel (or larger) window W within the active sensor array is 21032chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer 21033mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window 21034chosen is implementation defined,<wbr/> and should be chosen to provide a 21035green split estimate that is both representative of the entire image 21036for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li> 21037<li>The arithmetic mean of the green channels from the red 21038rows (mean_<wbr/>Gr) within W is computed.<wbr/></li> 21039<li>The arithmetic mean of the green channels from the blue 21040rows (mean_<wbr/>Gb) within W is computed.<wbr/></li> 21041<li>The maximum ratio R of the two means is computed as follows: 21042<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li> 21043</ol> 21044<p>The ratio R is the green split divergence reported for this property,<wbr/> 21045which represents how much the green channels differ in the mosaic 21046pattern.<wbr/> This value is typically used to determine the treatment of 21047the green mosaic channels when demosaicing.<wbr/></p> 21048<p>The green split value can be roughly interpreted as follows:</p> 21049<ul> 21050<li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li> 21051<li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software 21052correction to avoid demosaic errors (3-20% divergence).<wbr/></li> 21053<li>R > 1.<wbr/>20 will require strong software correction to produce 21054a usuable image (>20% divergence).<wbr/></li> 21055</ul> 21056 </td> 21057 </tr> 21058 21059 <tr class="entries_header"> 21060 <th class="th_details" colspan="5">HAL Implementation Details</th> 21061 </tr> 21062 <tr class="entry_cont"> 21063 <td class="entry_details" colspan="5"> 21064 <p>The green split given may be a static value based on prior 21065characterization of the camera sensor using the green split 21066calculation method given here over a large,<wbr/> representative,<wbr/> sample 21067set of images.<wbr/> Other methods of calculation that produce equivalent 21068results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p> 21069 </td> 21070 </tr> 21071 21072 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21073 <!-- end of entry --> 21074 21075 21076 <tr class="entry" id="dynamic_android.sensor.testPatternData"> 21077 <td class="entry_name 21078 " rowspan="5"> 21079 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 21080 </td> 21081 <td class="entry_type"> 21082 <span class="entry_type_name">int32</span> 21083 <span class="entry_type_container">x</span> 21084 21085 <span class="entry_type_array"> 21086 4 21087 </span> 21088 <span class="entry_type_visibility"> [public]</span> 21089 21090 21091 21092 21093 21094 21095 </td> <!-- entry_type --> 21096 21097 <td class="entry_description"> 21098 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 21099when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 21100 </td> 21101 21102 <td class="entry_units"> 21103 </td> 21104 21105 <td class="entry_range"> 21106 </td> 21107 21108 <td class="entry_tags"> 21109 </td> 21110 21111 </tr> 21112 <tr class="entries_header"> 21113 <th class="th_details" colspan="5">Details</th> 21114 </tr> 21115 <tr class="entry_cont"> 21116 <td class="entry_details" colspan="5"> 21117 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 21118The camera device then uses the most significant X bits 21119that correspond to how many bits are in its Bayer raw sensor 21120output.<wbr/></p> 21121<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 2112210 most significant bits from each color channel.<wbr/></p> 21123 </td> 21124 </tr> 21125 21126 <tr class="entries_header"> 21127 <th class="th_details" colspan="5">HAL Implementation Details</th> 21128 </tr> 21129 <tr class="entry_cont"> 21130 <td class="entry_details" colspan="5"> 21131 21132 </td> 21133 </tr> 21134 21135 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21136 <!-- end of entry --> 21137 21138 21139 <tr class="entry" id="dynamic_android.sensor.testPatternMode"> 21140 <td class="entry_name 21141 " rowspan="5"> 21142 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 21143 </td> 21144 <td class="entry_type"> 21145 <span class="entry_type_name entry_type_name_enum">int32</span> 21146 21147 <span class="entry_type_visibility"> [public]</span> 21148 21149 21150 21151 21152 21153 <ul class="entry_type_enum"> 21154 <li> 21155 <span class="entry_type_enum_name">OFF</span> 21156 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 21157device returns captures from the image sensor.<wbr/></p> 21158<p>This is the default if the key is not set.<wbr/></p></span> 21159 </li> 21160 <li> 21161 <span class="entry_type_enum_name">SOLID_COLOR</span> 21162 <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 21163respective color channel provided in 21164<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 21165<p>For example:</p> 21166<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 21167</code></pre> 21168<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 21169<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 21170</code></pre> 21171<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 21172are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 21173 </li> 21174 <li> 21175 <span class="entry_type_enum_name">COLOR_BARS</span> 21176 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 21177<p>The vertical bars (left-to-right) are as follows:</p> 21178<ul> 21179<li>100% white</li> 21180<li>yellow</li> 21181<li>cyan</li> 21182<li>green</li> 21183<li>magenta</li> 21184<li>red</li> 21185<li>blue</li> 21186<li>black</li> 21187</ul> 21188<p>In general the image would look like the following:</p> 21189<pre><code>W Y C G M R B K 21190W Y C G M R B K 21191W Y C G M R B K 21192W Y C G M R B K 21193W Y C G M R B K 21194.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21195.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21196.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21197 21198(B = Blue,<wbr/> K = Black) 21199</code></pre> 21200<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 21201When this is not possible,<wbr/> the bar size should be rounded 21202down to the nearest integer and the pattern can repeat 21203on the right side.<wbr/></p> 21204<p>Each bar's height must always take up the full sensor 21205pixel array height.<wbr/></p> 21206<p>Each pixel in this test pattern must be set to either 212070% intensity or 100% intensity.<wbr/></p></span> 21208 </li> 21209 <li> 21210 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 21211 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 21212each bar should start at its specified color at the top,<wbr/> 21213and fade to gray at the bottom.<wbr/></p> 21214<p>Furthermore each bar is further subdivided into a left and 21215right half.<wbr/> The left half should have a smooth gradient,<wbr/> 21216and the right half should have a quantized gradient.<wbr/></p> 21217<p>In particular,<wbr/> the right half's should consist of blocks of the 21218same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 21219<p>The least significant bits in the quantized gradient should 21220be copied from the most significant bits of the smooth gradient.<wbr/></p> 21221<p>The height of each bar should always be a multiple of 128.<wbr/> 21222When this is not the case,<wbr/> the pattern should repeat at the bottom 21223of the image.<wbr/></p></span> 21224 </li> 21225 <li> 21226 <span class="entry_type_enum_name">PN9</span> 21227 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 21228generated from a PN9 512-bit sequence (typically implemented 21229in hardware with a linear feedback shift register).<wbr/></p> 21230<p>The generator should be reset at the beginning of each frame,<wbr/> 21231and thus each subsequent raw frame with this test pattern should 21232be exactly the same as the last.<wbr/></p></span> 21233 </li> 21234 <li> 21235 <span class="entry_type_enum_name">CUSTOM1</span> 21236 <span class="entry_type_enum_value">256</span> 21237 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 21238available only on this camera device are at least this numeric 21239value.<wbr/></p> 21240<p>All of the custom test patterns will be static 21241(that is the raw image must not vary from frame to frame).<wbr/></p></span> 21242 </li> 21243 </ul> 21244 21245 </td> <!-- entry_type --> 21246 21247 <td class="entry_description"> 21248 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 21249doing a real exposure from the camera.<wbr/></p> 21250 </td> 21251 21252 <td class="entry_units"> 21253 </td> 21254 21255 <td class="entry_range"> 21256 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 21257 </td> 21258 21259 <td class="entry_tags"> 21260 </td> 21261 21262 </tr> 21263 <tr class="entries_header"> 21264 <th class="th_details" colspan="5">Details</th> 21265 </tr> 21266 <tr class="entry_cont"> 21267 <td class="entry_details" colspan="5"> 21268 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 21269by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 21270work as normal.<wbr/></p> 21271<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 21272occur (and that the test pattern remain unmodified,<wbr/> since the flash 21273would not actually affect it).<wbr/></p> 21274<p>Defaults to OFF.<wbr/></p> 21275 </td> 21276 </tr> 21277 21278 <tr class="entries_header"> 21279 <th class="th_details" colspan="5">HAL Implementation Details</th> 21280 </tr> 21281 <tr class="entry_cont"> 21282 <td class="entry_details" colspan="5"> 21283 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 21284<p>The HAL may choose to substitute test patterns from the sensor 21285with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 21286indistinguishable to the ISP whether the data came from the 21287sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 21288 </td> 21289 </tr> 21290 21291 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21292 <!-- end of entry --> 21293 21294 21295 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew"> 21296 <td class="entry_name 21297 " rowspan="5"> 21298 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew 21299 </td> 21300 <td class="entry_type"> 21301 <span class="entry_type_name">int64</span> 21302 21303 <span class="entry_type_visibility"> [public]</span> 21304 21305 21306 <span class="entry_type_hwlevel">[limited] </span> 21307 21308 21309 21310 21311 </td> <!-- entry_type --> 21312 21313 <td class="entry_description"> 21314 <p>Duration between the start of first row exposure 21315and the start of last row exposure.<wbr/></p> 21316 </td> 21317 21318 <td class="entry_units"> 21319 Nanoseconds 21320 </td> 21321 21322 <td class="entry_range"> 21323 <p>>= 0 and < 21324<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p> 21325 </td> 21326 21327 <td class="entry_tags"> 21328 <ul class="entry_tags"> 21329 <li><a href="#tag_V1">V1</a></li> 21330 </ul> 21331 </td> 21332 21333 </tr> 21334 <tr class="entries_header"> 21335 <th class="th_details" colspan="5">Details</th> 21336 </tr> 21337 <tr class="entry_cont"> 21338 <td class="entry_details" colspan="5"> 21339 <p>This is the exposure time skew between the first and last 21340row exposure start times.<wbr/> The first row and the last row are 21341the first and last rows inside of the 21342<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 21343<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent 21344to the frame readout time.<wbr/></p> 21345 </td> 21346 </tr> 21347 21348 <tr class="entries_header"> 21349 <th class="th_details" colspan="5">HAL Implementation Details</th> 21350 </tr> 21351 <tr class="entry_cont"> 21352 <td class="entry_details" colspan="5"> 21353 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin 21354exposure at the same time.<wbr/></p> 21355 </td> 21356 </tr> 21357 21358 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21359 <!-- end of entry --> 21360 21361 21362 <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel"> 21363 <td class="entry_name 21364 " rowspan="5"> 21365 android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level 21366 </td> 21367 <td class="entry_type"> 21368 <span class="entry_type_name">float</span> 21369 <span class="entry_type_container">x</span> 21370 21371 <span class="entry_type_array"> 21372 4 21373 </span> 21374 <span class="entry_type_visibility"> [public]</span> 21375 21376 21377 21378 21379 <div class="entry_type_notes">2x2 raw count block</div> 21380 21381 21382 </td> <!-- entry_type --> 21383 21384 <td class="entry_description"> 21385 <p>A per-frame dynamic black level offset for each of the color filter 21386arrangement (CFA) mosaic channels.<wbr/></p> 21387 </td> 21388 21389 <td class="entry_units"> 21390 </td> 21391 21392 <td class="entry_range"> 21393 <p>>= 0 for each.<wbr/></p> 21394 </td> 21395 21396 <td class="entry_tags"> 21397 <ul class="entry_tags"> 21398 <li><a href="#tag_RAW">RAW</a></li> 21399 </ul> 21400 </td> 21401 21402 </tr> 21403 <tr class="entries_header"> 21404 <th class="th_details" colspan="5">Details</th> 21405 </tr> 21406 <tr class="entry_cont"> 21407 <td class="entry_details" colspan="5"> 21408 <p>Camera sensor black levels may vary dramatically for different 21409capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black 21410level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too 21411inaccurate to represent the actual value on a per-frame basis.<wbr/> The 21412camera device internal pipeline relies on reliable black level values 21413to process the raw images appropriately.<wbr/> To get the best image 21414quality,<wbr/> the camera device may choose to estimate the per frame black 21415level values either based on optically shielded black regions 21416(<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p> 21417<p>This key reports the camera device estimated per-frame zero light 21418value for each of the CFA mosaic channels in the camera sensor.<wbr/> The 21419<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse 21420approximation of the actual black level values.<wbr/> This value is the 21421black level used in camera device internal image processing pipeline 21422and generally more accurate than the fixed black level values.<wbr/> 21423However,<wbr/> since they are estimated values by the camera device,<wbr/> they 21424may not be as accurate as the black level values calculated from the 21425optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p> 21426<p>The values are given in the same order as channels listed for the CFA 21427layout 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 21428nth value given corresponds to the black level offset for the nth 21429color channel listed in the CFA.<wbr/></p> 21430<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is 21431available or the camera device advertises this key via 21432<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> 21433 </td> 21434 </tr> 21435 21436 <tr class="entries_header"> 21437 <th class="th_details" colspan="5">HAL Implementation Details</th> 21438 </tr> 21439 <tr class="entry_cont"> 21440 <td class="entry_details" colspan="5"> 21441 <p>The values are given in row-column scan order,<wbr/> with the first value 21442corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 21443 </td> 21444 </tr> 21445 21446 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21447 <!-- end of entry --> 21448 21449 21450 <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel"> 21451 <td class="entry_name 21452 " rowspan="5"> 21453 android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level 21454 </td> 21455 <td class="entry_type"> 21456 <span class="entry_type_name">int32</span> 21457 21458 <span class="entry_type_visibility"> [public]</span> 21459 21460 21461 21462 21463 21464 21465 </td> <!-- entry_type --> 21466 21467 <td class="entry_description"> 21468 <p>Maximum raw value output by sensor for this frame.<wbr/></p> 21469 </td> 21470 21471 <td class="entry_units"> 21472 </td> 21473 21474 <td class="entry_range"> 21475 <p>>= 0</p> 21476 </td> 21477 21478 <td class="entry_tags"> 21479 <ul class="entry_tags"> 21480 <li><a href="#tag_RAW">RAW</a></li> 21481 </ul> 21482 </td> 21483 21484 </tr> 21485 <tr class="entries_header"> 21486 <th class="th_details" colspan="5">Details</th> 21487 </tr> 21488 <tr class="entry_cont"> 21489 <td class="entry_details" colspan="5"> 21490 <p>Since the android.<wbr/>sensor.<wbr/>black<wbr/>Level may change for different 21491capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white 21492level will change accordingly.<wbr/> This key is similar to 21493<a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device 21494estimated white level for each frame.<wbr/></p> 21495<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is 21496available or the camera device advertises this key via 21497<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> 21498 </td> 21499 </tr> 21500 21501 <tr class="entries_header"> 21502 <th class="th_details" colspan="5">HAL Implementation Details</th> 21503 </tr> 21504 <tr class="entry_cont"> 21505 <td class="entry_details" colspan="5"> 21506 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 21507so the value for linear sensors should not be significantly lower 21508than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 21509 </td> 21510 </tr> 21511 21512 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21513 <!-- end of entry --> 21514 21515 21516 21517 <!-- end of kind --> 21518 </tbody> 21519 21520 <!-- end of section --> 21521 <tr><td colspan="6" id="section_shading" class="section">shading</td></tr> 21522 21523 21524 <tr><td colspan="6" class="kind">controls</td></tr> 21525 21526 <thead class="entries_header"> 21527 <tr> 21528 <th class="th_name">Property Name</th> 21529 <th class="th_type">Type</th> 21530 <th class="th_description">Description</th> 21531 <th class="th_units">Units</th> 21532 <th class="th_range">Range</th> 21533 <th class="th_tags">Tags</th> 21534 </tr> 21535 </thead> 21536 21537 <tbody> 21538 21539 21540 21541 21542 21543 21544 21545 21546 21547 21548 <tr class="entry" id="controls_android.shading.mode"> 21549 <td class="entry_name 21550 " rowspan="3"> 21551 android.<wbr/>shading.<wbr/>mode 21552 </td> 21553 <td class="entry_type"> 21554 <span class="entry_type_name entry_type_name_enum">byte</span> 21555 21556 <span class="entry_type_visibility"> [public]</span> 21557 21558 21559 <span class="entry_type_hwlevel">[full] </span> 21560 21561 21562 21563 <ul class="entry_type_enum"> 21564 <li> 21565 <span class="entry_type_enum_name">OFF</span> 21566 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 21567 </li> 21568 <li> 21569 <span class="entry_type_enum_name">FAST</span> 21570 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 21571frame rate relative to sensor raw output</p></span> 21572 </li> 21573 <li> 21574 <span class="entry_type_enum_name">HIGH_QUALITY</span> 21575 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 21576cost of possibly reduced frame rate.<wbr/></p></span> 21577 </li> 21578 </ul> 21579 21580 </td> <!-- entry_type --> 21581 21582 <td class="entry_description"> 21583 <p>Quality of lens shading correction applied 21584to the image data.<wbr/></p> 21585 </td> 21586 21587 <td class="entry_units"> 21588 </td> 21589 21590 <td class="entry_range"> 21591 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 21592 </td> 21593 21594 <td class="entry_tags"> 21595 </td> 21596 21597 </tr> 21598 <tr class="entries_header"> 21599 <th class="th_details" colspan="5">Details</th> 21600 </tr> 21601 <tr class="entry_cont"> 21602 <td class="entry_details" colspan="5"> 21603 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 21604camera device,<wbr/> and an identity lens shading map data will be provided 21605if <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 21606shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 21607the 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 21608map shown below:</p> 21609<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/> 21610 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/> 21611 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/> 21612 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/> 21613 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/> 21614 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 ] 21615</code></pre> 21616<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 21617device.<wbr/> Applications can request lens shading map data by setting 21618<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 21619shading 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 21620data will be the one applied by the camera device for this capture request.<wbr/></p> 21621<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 21622the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 21623AWB 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> 21624OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 21625to be converged before using the returned shading map data.<wbr/></p> 21626 </td> 21627 </tr> 21628 21629 21630 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21631 <!-- end of entry --> 21632 21633 21634 <tr class="entry" id="controls_android.shading.strength"> 21635 <td class="entry_name 21636 " rowspan="1"> 21637 android.<wbr/>shading.<wbr/>strength 21638 </td> 21639 <td class="entry_type"> 21640 <span class="entry_type_name">byte</span> 21641 21642 <span class="entry_type_visibility"> [system]</span> 21643 21644 21645 21646 21647 21648 21649 </td> <!-- entry_type --> 21650 21651 <td class="entry_description"> 21652 <p>Control the amount of shading correction 21653applied to the images</p> 21654 </td> 21655 21656 <td class="entry_units"> 21657 unitless: 1-10; 10 is full shading 21658 compensation 21659 </td> 21660 21661 <td class="entry_range"> 21662 </td> 21663 21664 <td class="entry_tags"> 21665 <ul class="entry_tags"> 21666 <li><a href="#tag_FUTURE">FUTURE</a></li> 21667 </ul> 21668 </td> 21669 21670 </tr> 21671 21672 21673 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21674 <!-- end of entry --> 21675 21676 21677 21678 <!-- end of kind --> 21679 </tbody> 21680 <tr><td colspan="6" class="kind">dynamic</td></tr> 21681 21682 <thead class="entries_header"> 21683 <tr> 21684 <th class="th_name">Property Name</th> 21685 <th class="th_type">Type</th> 21686 <th class="th_description">Description</th> 21687 <th class="th_units">Units</th> 21688 <th class="th_range">Range</th> 21689 <th class="th_tags">Tags</th> 21690 </tr> 21691 </thead> 21692 21693 <tbody> 21694 21695 21696 21697 21698 21699 21700 21701 21702 21703 21704 <tr class="entry" id="dynamic_android.shading.mode"> 21705 <td class="entry_name 21706 " rowspan="3"> 21707 android.<wbr/>shading.<wbr/>mode 21708 </td> 21709 <td class="entry_type"> 21710 <span class="entry_type_name entry_type_name_enum">byte</span> 21711 21712 <span class="entry_type_visibility"> [public]</span> 21713 21714 21715 <span class="entry_type_hwlevel">[full] </span> 21716 21717 21718 21719 <ul class="entry_type_enum"> 21720 <li> 21721 <span class="entry_type_enum_name">OFF</span> 21722 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 21723 </li> 21724 <li> 21725 <span class="entry_type_enum_name">FAST</span> 21726 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 21727frame rate relative to sensor raw output</p></span> 21728 </li> 21729 <li> 21730 <span class="entry_type_enum_name">HIGH_QUALITY</span> 21731 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 21732cost of possibly reduced frame rate.<wbr/></p></span> 21733 </li> 21734 </ul> 21735 21736 </td> <!-- entry_type --> 21737 21738 <td class="entry_description"> 21739 <p>Quality of lens shading correction applied 21740to the image data.<wbr/></p> 21741 </td> 21742 21743 <td class="entry_units"> 21744 </td> 21745 21746 <td class="entry_range"> 21747 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 21748 </td> 21749 21750 <td class="entry_tags"> 21751 </td> 21752 21753 </tr> 21754 <tr class="entries_header"> 21755 <th class="th_details" colspan="5">Details</th> 21756 </tr> 21757 <tr class="entry_cont"> 21758 <td class="entry_details" colspan="5"> 21759 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 21760camera device,<wbr/> and an identity lens shading map data will be provided 21761if <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 21762shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 21763the 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 21764map shown below:</p> 21765<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/> 21766 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/> 21767 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/> 21768 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/> 21769 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/> 21770 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 ] 21771</code></pre> 21772<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 21773device.<wbr/> Applications can request lens shading map data by setting 21774<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 21775shading 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 21776data will be the one applied by the camera device for this capture request.<wbr/></p> 21777<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 21778the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 21779AWB 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> 21780OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 21781to be converged before using the returned shading map data.<wbr/></p> 21782 </td> 21783 </tr> 21784 21785 21786 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21787 <!-- end of entry --> 21788 21789 21790 21791 <!-- end of kind --> 21792 </tbody> 21793 <tr><td colspan="6" class="kind">static</td></tr> 21794 21795 <thead class="entries_header"> 21796 <tr> 21797 <th class="th_name">Property Name</th> 21798 <th class="th_type">Type</th> 21799 <th class="th_description">Description</th> 21800 <th class="th_units">Units</th> 21801 <th class="th_range">Range</th> 21802 <th class="th_tags">Tags</th> 21803 </tr> 21804 </thead> 21805 21806 <tbody> 21807 21808 21809 21810 21811 21812 21813 21814 21815 21816 21817 <tr class="entry" id="static_android.shading.availableModes"> 21818 <td class="entry_name 21819 " rowspan="5"> 21820 android.<wbr/>shading.<wbr/>available<wbr/>Modes 21821 </td> 21822 <td class="entry_type"> 21823 <span class="entry_type_name">byte</span> 21824 <span class="entry_type_container">x</span> 21825 21826 <span class="entry_type_array"> 21827 n 21828 </span> 21829 <span class="entry_type_visibility"> [public as enumList]</span> 21830 21831 21832 <span class="entry_type_hwlevel">[legacy] </span> 21833 21834 21835 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div> 21836 21837 21838 </td> <!-- entry_type --> 21839 21840 <td class="entry_description"> 21841 <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> 21842 </td> 21843 21844 <td class="entry_units"> 21845 </td> 21846 21847 <td class="entry_range"> 21848 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p> 21849 </td> 21850 21851 <td class="entry_tags"> 21852 </td> 21853 21854 </tr> 21855 <tr class="entries_header"> 21856 <th class="th_details" colspan="5">Details</th> 21857 </tr> 21858 <tr class="entry_cont"> 21859 <td class="entry_details" colspan="5"> 21860 <p>This list contains lens shading modes that can be set for the camera device.<wbr/> 21861Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always 21862list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/> 21863LEGACY devices will always only support FAST mode.<wbr/></p> 21864 </td> 21865 </tr> 21866 21867 <tr class="entries_header"> 21868 <th class="th_details" colspan="5">HAL Implementation Details</th> 21869 </tr> 21870 <tr class="entry_cont"> 21871 <td class="entry_details" colspan="5"> 21872 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is 21873available on the camera device,<wbr/> but the underlying implementation can be the same for 21874both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not 21875slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 21876 </td> 21877 </tr> 21878 21879 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21880 <!-- end of entry --> 21881 21882 21883 21884 <!-- end of kind --> 21885 </tbody> 21886 21887 <!-- end of section --> 21888 <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr> 21889 21890 21891 <tr><td colspan="6" class="kind">controls</td></tr> 21892 21893 <thead class="entries_header"> 21894 <tr> 21895 <th class="th_name">Property Name</th> 21896 <th class="th_type">Type</th> 21897 <th class="th_description">Description</th> 21898 <th class="th_units">Units</th> 21899 <th class="th_range">Range</th> 21900 <th class="th_tags">Tags</th> 21901 </tr> 21902 </thead> 21903 21904 <tbody> 21905 21906 21907 21908 21909 21910 21911 21912 21913 21914 21915 <tr class="entry" id="controls_android.statistics.faceDetectMode"> 21916 <td class="entry_name 21917 " rowspan="5"> 21918 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 21919 </td> 21920 <td class="entry_type"> 21921 <span class="entry_type_name entry_type_name_enum">byte</span> 21922 21923 <span class="entry_type_visibility"> [public]</span> 21924 21925 21926 <span class="entry_type_hwlevel">[legacy] </span> 21927 21928 21929 21930 <ul class="entry_type_enum"> 21931 <li> 21932 <span class="entry_type_enum_name">OFF</span> 21933 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 21934results.<wbr/></p></span> 21935 </li> 21936 <li> 21937 <span class="entry_type_enum_name">SIMPLE</span> 21938 <span class="entry_type_enum_optional">[optional]</span> 21939 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 21940 </li> 21941 <li> 21942 <span class="entry_type_enum_name">FULL</span> 21943 <span class="entry_type_enum_optional">[optional]</span> 21944 <span class="entry_type_enum_notes"><p>Return all face 21945metadata.<wbr/></p> 21946<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 21947 </li> 21948 </ul> 21949 21950 </td> <!-- entry_type --> 21951 21952 <td class="entry_description"> 21953 <p>Operating mode for the face detector 21954unit.<wbr/></p> 21955 </td> 21956 21957 <td class="entry_units"> 21958 </td> 21959 21960 <td class="entry_range"> 21961 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 21962 </td> 21963 21964 <td class="entry_tags"> 21965 <ul class="entry_tags"> 21966 <li><a href="#tag_BC">BC</a></li> 21967 </ul> 21968 </td> 21969 21970 </tr> 21971 <tr class="entries_header"> 21972 <th class="th_details" colspan="5">Details</th> 21973 </tr> 21974 <tr class="entry_cont"> 21975 <td class="entry_details" colspan="5"> 21976 <p>Whether face detection is enabled,<wbr/> and whether it 21977should output just the basic fields or the full set of 21978fields.<wbr/></p> 21979 </td> 21980 </tr> 21981 21982 <tr class="entries_header"> 21983 <th class="th_details" colspan="5">HAL Implementation Details</th> 21984 </tr> 21985 <tr class="entry_cont"> 21986 <td class="entry_details" colspan="5"> 21987 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 21988<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 21989FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 21990<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 21991 </td> 21992 </tr> 21993 21994 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21995 <!-- end of entry --> 21996 21997 21998 <tr class="entry" id="controls_android.statistics.histogramMode"> 21999 <td class="entry_name 22000 " rowspan="1"> 22001 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 22002 </td> 22003 <td class="entry_type"> 22004 <span class="entry_type_name entry_type_name_enum">byte</span> 22005 22006 <span class="entry_type_visibility"> [system as boolean]</span> 22007 22008 22009 22010 22011 22012 <ul class="entry_type_enum"> 22013 <li> 22014 <span class="entry_type_enum_name">OFF</span> 22015 </li> 22016 <li> 22017 <span class="entry_type_enum_name">ON</span> 22018 </li> 22019 </ul> 22020 22021 </td> <!-- entry_type --> 22022 22023 <td class="entry_description"> 22024 <p>Operating mode for histogram 22025generation</p> 22026 </td> 22027 22028 <td class="entry_units"> 22029 </td> 22030 22031 <td class="entry_range"> 22032 </td> 22033 22034 <td class="entry_tags"> 22035 <ul class="entry_tags"> 22036 <li><a href="#tag_FUTURE">FUTURE</a></li> 22037 </ul> 22038 </td> 22039 22040 </tr> 22041 22042 22043 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22044 <!-- end of entry --> 22045 22046 22047 <tr class="entry" id="controls_android.statistics.sharpnessMapMode"> 22048 <td class="entry_name 22049 " rowspan="1"> 22050 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 22051 </td> 22052 <td class="entry_type"> 22053 <span class="entry_type_name entry_type_name_enum">byte</span> 22054 22055 <span class="entry_type_visibility"> [system as boolean]</span> 22056 22057 22058 22059 22060 22061 <ul class="entry_type_enum"> 22062 <li> 22063 <span class="entry_type_enum_name">OFF</span> 22064 </li> 22065 <li> 22066 <span class="entry_type_enum_name">ON</span> 22067 </li> 22068 </ul> 22069 22070 </td> <!-- entry_type --> 22071 22072 <td class="entry_description"> 22073 <p>Operating mode for sharpness map 22074generation</p> 22075 </td> 22076 22077 <td class="entry_units"> 22078 </td> 22079 22080 <td class="entry_range"> 22081 </td> 22082 22083 <td class="entry_tags"> 22084 <ul class="entry_tags"> 22085 <li><a href="#tag_FUTURE">FUTURE</a></li> 22086 </ul> 22087 </td> 22088 22089 </tr> 22090 22091 22092 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22093 <!-- end of entry --> 22094 22095 22096 <tr class="entry" id="controls_android.statistics.hotPixelMapMode"> 22097 <td class="entry_name 22098 " rowspan="3"> 22099 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 22100 </td> 22101 <td class="entry_type"> 22102 <span class="entry_type_name entry_type_name_enum">byte</span> 22103 22104 <span class="entry_type_visibility"> [public as boolean]</span> 22105 22106 22107 22108 22109 22110 <ul class="entry_type_enum"> 22111 <li> 22112 <span class="entry_type_enum_name">OFF</span> 22113 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 22114 </li> 22115 <li> 22116 <span class="entry_type_enum_name">ON</span> 22117 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 22118 </li> 22119 </ul> 22120 22121 </td> <!-- entry_type --> 22122 22123 <td class="entry_description"> 22124 <p>Operating mode for hot pixel map generation.<wbr/></p> 22125 </td> 22126 22127 <td class="entry_units"> 22128 </td> 22129 22130 <td class="entry_range"> 22131 <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> 22132 </td> 22133 22134 <td class="entry_tags"> 22135 <ul class="entry_tags"> 22136 <li><a href="#tag_V1">V1</a></li> 22137 <li><a href="#tag_RAW">RAW</a></li> 22138 </ul> 22139 </td> 22140 22141 </tr> 22142 <tr class="entries_header"> 22143 <th class="th_details" colspan="5">Details</th> 22144 </tr> 22145 <tr class="entry_cont"> 22146 <td class="entry_details" colspan="5"> 22147 <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/> 22148If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 22149 </td> 22150 </tr> 22151 22152 22153 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22154 <!-- end of entry --> 22155 22156 22157 <tr class="entry" id="controls_android.statistics.lensShadingMapMode"> 22158 <td class="entry_name 22159 " rowspan="3"> 22160 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 22161 </td> 22162 <td class="entry_type"> 22163 <span class="entry_type_name entry_type_name_enum">byte</span> 22164 22165 <span class="entry_type_visibility"> [public]</span> 22166 22167 22168 <span class="entry_type_hwlevel">[full] </span> 22169 22170 22171 22172 <ul class="entry_type_enum"> 22173 <li> 22174 <span class="entry_type_enum_name">OFF</span> 22175 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 22176 </li> 22177 <li> 22178 <span class="entry_type_enum_name">ON</span> 22179 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 22180 </li> 22181 </ul> 22182 22183 </td> <!-- entry_type --> 22184 22185 <td class="entry_description"> 22186 <p>Whether the camera device will output the lens 22187shading map in output result metadata.<wbr/></p> 22188 </td> 22189 22190 <td class="entry_units"> 22191 </td> 22192 22193 <td class="entry_range"> 22194 <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> 22195 </td> 22196 22197 <td class="entry_tags"> 22198 <ul class="entry_tags"> 22199 <li><a href="#tag_RAW">RAW</a></li> 22200 </ul> 22201 </td> 22202 22203 </tr> 22204 <tr class="entries_header"> 22205 <th class="th_details" colspan="5">Details</th> 22206 </tr> 22207 <tr class="entry_cont"> 22208 <td class="entry_details" colspan="5"> 22209 <p>When set to ON,<wbr/> 22210<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 22211the output result metadata.<wbr/></p> 22212<p>ON is always supported on devices with the RAW capability.<wbr/></p> 22213 </td> 22214 </tr> 22215 22216 22217 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22218 <!-- end of entry --> 22219 22220 22221 22222 <!-- end of kind --> 22223 </tbody> 22224 <tr><td colspan="6" class="kind">static</td></tr> 22225 22226 <thead class="entries_header"> 22227 <tr> 22228 <th class="th_name">Property Name</th> 22229 <th class="th_type">Type</th> 22230 <th class="th_description">Description</th> 22231 <th class="th_units">Units</th> 22232 <th class="th_range">Range</th> 22233 <th class="th_tags">Tags</th> 22234 </tr> 22235 </thead> 22236 22237 <tbody> 22238 22239 22240 22241 22242 22243 22244 22245 22246 22247 22248 22249 22250 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes"> 22251 <td class="entry_name 22252 " rowspan="3"> 22253 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes 22254 </td> 22255 <td class="entry_type"> 22256 <span class="entry_type_name">byte</span> 22257 <span class="entry_type_container">x</span> 22258 22259 <span class="entry_type_array"> 22260 n 22261 </span> 22262 <span class="entry_type_visibility"> [public as enumList]</span> 22263 22264 22265 <span class="entry_type_hwlevel">[legacy] </span> 22266 22267 22268 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div> 22269 22270 22271 </td> <!-- entry_type --> 22272 22273 <td class="entry_description"> 22274 <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 22275supported by this camera device.<wbr/></p> 22276 </td> 22277 22278 <td class="entry_units"> 22279 </td> 22280 22281 <td class="entry_range"> 22282 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p> 22283 </td> 22284 22285 <td class="entry_tags"> 22286 </td> 22287 22288 </tr> 22289 <tr class="entries_header"> 22290 <th class="th_details" colspan="5">Details</th> 22291 </tr> 22292 <tr class="entry_cont"> 22293 <td class="entry_details" colspan="5"> 22294 <p>OFF is always supported.<wbr/></p> 22295 </td> 22296 </tr> 22297 22298 22299 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22300 <!-- end of entry --> 22301 22302 22303 <tr class="entry" id="static_android.statistics.info.histogramBucketCount"> 22304 <td class="entry_name 22305 " rowspan="1"> 22306 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count 22307 </td> 22308 <td class="entry_type"> 22309 <span class="entry_type_name">int32</span> 22310 22311 <span class="entry_type_visibility"> [system]</span> 22312 22313 22314 22315 22316 22317 22318 </td> <!-- entry_type --> 22319 22320 <td class="entry_description"> 22321 <p>Number of histogram buckets 22322supported</p> 22323 </td> 22324 22325 <td class="entry_units"> 22326 </td> 22327 22328 <td class="entry_range"> 22329 <p>>= 64</p> 22330 </td> 22331 22332 <td class="entry_tags"> 22333 <ul class="entry_tags"> 22334 <li><a href="#tag_FUTURE">FUTURE</a></li> 22335 </ul> 22336 </td> 22337 22338 </tr> 22339 22340 22341 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22342 <!-- end of entry --> 22343 22344 22345 <tr class="entry" id="static_android.statistics.info.maxFaceCount"> 22346 <td class="entry_name 22347 " rowspan="1"> 22348 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count 22349 </td> 22350 <td class="entry_type"> 22351 <span class="entry_type_name">int32</span> 22352 22353 <span class="entry_type_visibility"> [public]</span> 22354 22355 22356 <span class="entry_type_hwlevel">[legacy] </span> 22357 22358 22359 22360 22361 </td> <!-- entry_type --> 22362 22363 <td class="entry_description"> 22364 <p>The maximum number of simultaneously detectable 22365faces.<wbr/></p> 22366 </td> 22367 22368 <td class="entry_units"> 22369 </td> 22370 22371 <td class="entry_range"> 22372 <p>0 for cameras without available face detection; otherwise: 22373<code>>=4</code> for LIMITED or FULL hwlevel devices or 22374<code>>0</code> for LEGACY devices.<wbr/></p> 22375 </td> 22376 22377 <td class="entry_tags"> 22378 <ul class="entry_tags"> 22379 <li><a href="#tag_BC">BC</a></li> 22380 </ul> 22381 </td> 22382 22383 </tr> 22384 22385 22386 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22387 <!-- end of entry --> 22388 22389 22390 <tr class="entry" id="static_android.statistics.info.maxHistogramCount"> 22391 <td class="entry_name 22392 " rowspan="1"> 22393 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count 22394 </td> 22395 <td class="entry_type"> 22396 <span class="entry_type_name">int32</span> 22397 22398 <span class="entry_type_visibility"> [system]</span> 22399 22400 22401 22402 22403 22404 22405 </td> <!-- entry_type --> 22406 22407 <td class="entry_description"> 22408 <p>Maximum value possible for a histogram 22409bucket</p> 22410 </td> 22411 22412 <td class="entry_units"> 22413 </td> 22414 22415 <td class="entry_range"> 22416 </td> 22417 22418 <td class="entry_tags"> 22419 <ul class="entry_tags"> 22420 <li><a href="#tag_FUTURE">FUTURE</a></li> 22421 </ul> 22422 </td> 22423 22424 </tr> 22425 22426 22427 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22428 <!-- end of entry --> 22429 22430 22431 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue"> 22432 <td class="entry_name 22433 " rowspan="1"> 22434 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value 22435 </td> 22436 <td class="entry_type"> 22437 <span class="entry_type_name">int32</span> 22438 22439 <span class="entry_type_visibility"> [system]</span> 22440 22441 22442 22443 22444 22445 22446 </td> <!-- entry_type --> 22447 22448 <td class="entry_description"> 22449 <p>Maximum value possible for a sharpness map 22450region.<wbr/></p> 22451 </td> 22452 22453 <td class="entry_units"> 22454 </td> 22455 22456 <td class="entry_range"> 22457 </td> 22458 22459 <td class="entry_tags"> 22460 <ul class="entry_tags"> 22461 <li><a href="#tag_FUTURE">FUTURE</a></li> 22462 </ul> 22463 </td> 22464 22465 </tr> 22466 22467 22468 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22469 <!-- end of entry --> 22470 22471 22472 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize"> 22473 <td class="entry_name 22474 " rowspan="1"> 22475 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size 22476 </td> 22477 <td class="entry_type"> 22478 <span class="entry_type_name">int32</span> 22479 <span class="entry_type_container">x</span> 22480 22481 <span class="entry_type_array"> 22482 2 22483 </span> 22484 <span class="entry_type_visibility"> [system as size]</span> 22485 22486 22487 22488 22489 <div class="entry_type_notes">width x height</div> 22490 22491 22492 </td> <!-- entry_type --> 22493 22494 <td class="entry_description"> 22495 <p>Dimensions of the sharpness 22496map</p> 22497 </td> 22498 22499 <td class="entry_units"> 22500 </td> 22501 22502 <td class="entry_range"> 22503 <p>Must be at least 32 x 32</p> 22504 </td> 22505 22506 <td class="entry_tags"> 22507 <ul class="entry_tags"> 22508 <li><a href="#tag_FUTURE">FUTURE</a></li> 22509 </ul> 22510 </td> 22511 22512 </tr> 22513 22514 22515 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22516 <!-- end of entry --> 22517 22518 22519 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes"> 22520 <td class="entry_name 22521 " rowspan="3"> 22522 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes 22523 </td> 22524 <td class="entry_type"> 22525 <span class="entry_type_name">byte</span> 22526 <span class="entry_type_container">x</span> 22527 22528 <span class="entry_type_array"> 22529 n 22530 </span> 22531 <span class="entry_type_visibility"> [public as boolean]</span> 22532 22533 22534 22535 22536 <div class="entry_type_notes">list of enums</div> 22537 22538 22539 </td> <!-- entry_type --> 22540 22541 <td class="entry_description"> 22542 <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 22543supported by this camera device.<wbr/></p> 22544 </td> 22545 22546 <td class="entry_units"> 22547 </td> 22548 22549 <td class="entry_range"> 22550 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p> 22551 </td> 22552 22553 <td class="entry_tags"> 22554 <ul class="entry_tags"> 22555 <li><a href="#tag_V1">V1</a></li> 22556 <li><a href="#tag_RAW">RAW</a></li> 22557 </ul> 22558 </td> 22559 22560 </tr> 22561 <tr class="entries_header"> 22562 <th class="th_details" colspan="5">Details</th> 22563 </tr> 22564 <tr class="entry_cont"> 22565 <td class="entry_details" colspan="5"> 22566 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only 22567<code>false</code>.<wbr/></p> 22568<p>ON is always supported on devices with the RAW capability.<wbr/></p> 22569 </td> 22570 </tr> 22571 22572 22573 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22574 <!-- end of entry --> 22575 22576 22577 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes"> 22578 <td class="entry_name 22579 " rowspan="3"> 22580 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes 22581 </td> 22582 <td class="entry_type"> 22583 <span class="entry_type_name">byte</span> 22584 <span class="entry_type_container">x</span> 22585 22586 <span class="entry_type_array"> 22587 n 22588 </span> 22589 <span class="entry_type_visibility"> [public as enumList]</span> 22590 22591 22592 22593 22594 <div class="entry_type_notes">list of enums</div> 22595 22596 22597 </td> <!-- entry_type --> 22598 22599 <td class="entry_description"> 22600 <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 22601are supported by this camera device.<wbr/></p> 22602 </td> 22603 22604 <td class="entry_units"> 22605 </td> 22606 22607 <td class="entry_range"> 22608 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p> 22609 </td> 22610 22611 <td class="entry_tags"> 22612 </td> 22613 22614 </tr> 22615 <tr class="entries_header"> 22616 <th class="th_details" colspan="5">Details</th> 22617 </tr> 22618 <tr class="entry_cont"> 22619 <td class="entry_details" colspan="5"> 22620 <p>If no lens shading map output is available for this camera device,<wbr/> this key will 22621contain only OFF.<wbr/></p> 22622<p>ON is always supported on devices with the RAW capability.<wbr/> 22623LEGACY mode devices will always only support OFF.<wbr/></p> 22624 </td> 22625 </tr> 22626 22627 22628 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22629 <!-- end of entry --> 22630 22631 22632 22633 22634 22635 22636 <!-- end of kind --> 22637 </tbody> 22638 <tr><td colspan="6" class="kind">dynamic</td></tr> 22639 22640 <thead class="entries_header"> 22641 <tr> 22642 <th class="th_name">Property Name</th> 22643 <th class="th_type">Type</th> 22644 <th class="th_description">Description</th> 22645 <th class="th_units">Units</th> 22646 <th class="th_range">Range</th> 22647 <th class="th_tags">Tags</th> 22648 </tr> 22649 </thead> 22650 22651 <tbody> 22652 22653 22654 22655 22656 22657 22658 22659 22660 22661 22662 <tr class="entry" id="dynamic_android.statistics.faceDetectMode"> 22663 <td class="entry_name 22664 " rowspan="5"> 22665 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 22666 </td> 22667 <td class="entry_type"> 22668 <span class="entry_type_name entry_type_name_enum">byte</span> 22669 22670 <span class="entry_type_visibility"> [public]</span> 22671 22672 22673 <span class="entry_type_hwlevel">[legacy] </span> 22674 22675 22676 22677 <ul class="entry_type_enum"> 22678 <li> 22679 <span class="entry_type_enum_name">OFF</span> 22680 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 22681results.<wbr/></p></span> 22682 </li> 22683 <li> 22684 <span class="entry_type_enum_name">SIMPLE</span> 22685 <span class="entry_type_enum_optional">[optional]</span> 22686 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 22687 </li> 22688 <li> 22689 <span class="entry_type_enum_name">FULL</span> 22690 <span class="entry_type_enum_optional">[optional]</span> 22691 <span class="entry_type_enum_notes"><p>Return all face 22692metadata.<wbr/></p> 22693<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 22694 </li> 22695 </ul> 22696 22697 </td> <!-- entry_type --> 22698 22699 <td class="entry_description"> 22700 <p>Operating mode for the face detector 22701unit.<wbr/></p> 22702 </td> 22703 22704 <td class="entry_units"> 22705 </td> 22706 22707 <td class="entry_range"> 22708 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 22709 </td> 22710 22711 <td class="entry_tags"> 22712 <ul class="entry_tags"> 22713 <li><a href="#tag_BC">BC</a></li> 22714 </ul> 22715 </td> 22716 22717 </tr> 22718 <tr class="entries_header"> 22719 <th class="th_details" colspan="5">Details</th> 22720 </tr> 22721 <tr class="entry_cont"> 22722 <td class="entry_details" colspan="5"> 22723 <p>Whether face detection is enabled,<wbr/> and whether it 22724should output just the basic fields or the full set of 22725fields.<wbr/></p> 22726 </td> 22727 </tr> 22728 22729 <tr class="entries_header"> 22730 <th class="th_details" colspan="5">HAL Implementation Details</th> 22731 </tr> 22732 <tr class="entry_cont"> 22733 <td class="entry_details" colspan="5"> 22734 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 22735<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 22736FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 22737<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 22738 </td> 22739 </tr> 22740 22741 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22742 <!-- end of entry --> 22743 22744 22745 <tr class="entry" id="dynamic_android.statistics.faceIds"> 22746 <td class="entry_name 22747 " rowspan="3"> 22748 android.<wbr/>statistics.<wbr/>face<wbr/>Ids 22749 </td> 22750 <td class="entry_type"> 22751 <span class="entry_type_name">int32</span> 22752 <span class="entry_type_container">x</span> 22753 22754 <span class="entry_type_array"> 22755 n 22756 </span> 22757 <span class="entry_type_visibility"> [hidden]</span> 22758 22759 22760 <span class="entry_type_hwlevel">[legacy] </span> 22761 22762 22763 22764 22765 </td> <!-- entry_type --> 22766 22767 <td class="entry_description"> 22768 <p>List of unique IDs for detected faces.<wbr/></p> 22769 </td> 22770 22771 <td class="entry_units"> 22772 </td> 22773 22774 <td class="entry_range"> 22775 </td> 22776 22777 <td class="entry_tags"> 22778 <ul class="entry_tags"> 22779 <li><a href="#tag_BC">BC</a></li> 22780 </ul> 22781 </td> 22782 22783 </tr> 22784 <tr class="entries_header"> 22785 <th class="th_details" colspan="5">Details</th> 22786 </tr> 22787 <tr class="entry_cont"> 22788 <td class="entry_details" colspan="5"> 22789 <p>Each detected face is given a unique ID that is valid for as long as the face is visible 22790to the camera device.<wbr/> A face that leaves the field of view and later returns may be 22791assigned a new ID.<wbr/></p> 22792<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 22793 </td> 22794 </tr> 22795 22796 22797 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22798 <!-- end of entry --> 22799 22800 22801 <tr class="entry" id="dynamic_android.statistics.faceLandmarks"> 22802 <td class="entry_name 22803 " rowspan="3"> 22804 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks 22805 </td> 22806 <td class="entry_type"> 22807 <span class="entry_type_name">int32</span> 22808 <span class="entry_type_container">x</span> 22809 22810 <span class="entry_type_array"> 22811 n x 6 22812 </span> 22813 <span class="entry_type_visibility"> [hidden]</span> 22814 22815 22816 <span class="entry_type_hwlevel">[legacy] </span> 22817 22818 22819 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div> 22820 22821 22822 </td> <!-- entry_type --> 22823 22824 <td class="entry_description"> 22825 <p>List of landmarks for detected 22826faces.<wbr/></p> 22827 </td> 22828 22829 <td class="entry_units"> 22830 </td> 22831 22832 <td class="entry_range"> 22833 </td> 22834 22835 <td class="entry_tags"> 22836 <ul class="entry_tags"> 22837 <li><a href="#tag_BC">BC</a></li> 22838 </ul> 22839 </td> 22840 22841 </tr> 22842 <tr class="entries_header"> 22843 <th class="th_details" colspan="5">Details</th> 22844 </tr> 22845 <tr class="entry_cont"> 22846 <td class="entry_details" colspan="5"> 22847 <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 22848<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 22849<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 22850 </td> 22851 </tr> 22852 22853 22854 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22855 <!-- end of entry --> 22856 22857 22858 <tr class="entry" id="dynamic_android.statistics.faceRectangles"> 22859 <td class="entry_name 22860 " rowspan="3"> 22861 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles 22862 </td> 22863 <td class="entry_type"> 22864 <span class="entry_type_name">int32</span> 22865 <span class="entry_type_container">x</span> 22866 22867 <span class="entry_type_array"> 22868 n x 4 22869 </span> 22870 <span class="entry_type_visibility"> [hidden as rectangle]</span> 22871 22872 22873 <span class="entry_type_hwlevel">[legacy] </span> 22874 22875 22876 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div> 22877 22878 22879 </td> <!-- entry_type --> 22880 22881 <td class="entry_description"> 22882 <p>List of the bounding rectangles for detected 22883faces.<wbr/></p> 22884 </td> 22885 22886 <td class="entry_units"> 22887 </td> 22888 22889 <td class="entry_range"> 22890 </td> 22891 22892 <td class="entry_tags"> 22893 <ul class="entry_tags"> 22894 <li><a href="#tag_BC">BC</a></li> 22895 </ul> 22896 </td> 22897 22898 </tr> 22899 <tr class="entries_header"> 22900 <th class="th_details" colspan="5">Details</th> 22901 </tr> 22902 <tr class="entry_cont"> 22903 <td class="entry_details" colspan="5"> 22904 <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 22905<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 22906<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p> 22907 </td> 22908 </tr> 22909 22910 22911 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22912 <!-- end of entry --> 22913 22914 22915 <tr class="entry" id="dynamic_android.statistics.faceScores"> 22916 <td class="entry_name 22917 " rowspan="5"> 22918 android.<wbr/>statistics.<wbr/>face<wbr/>Scores 22919 </td> 22920 <td class="entry_type"> 22921 <span class="entry_type_name">byte</span> 22922 <span class="entry_type_container">x</span> 22923 22924 <span class="entry_type_array"> 22925 n 22926 </span> 22927 <span class="entry_type_visibility"> [hidden]</span> 22928 22929 22930 <span class="entry_type_hwlevel">[legacy] </span> 22931 22932 22933 22934 22935 </td> <!-- entry_type --> 22936 22937 <td class="entry_description"> 22938 <p>List of the face confidence scores for 22939detected faces</p> 22940 </td> 22941 22942 <td class="entry_units"> 22943 </td> 22944 22945 <td class="entry_range"> 22946 <p>1-100</p> 22947 </td> 22948 22949 <td class="entry_tags"> 22950 <ul class="entry_tags"> 22951 <li><a href="#tag_BC">BC</a></li> 22952 </ul> 22953 </td> 22954 22955 </tr> 22956 <tr class="entries_header"> 22957 <th class="th_details" colspan="5">Details</th> 22958 </tr> 22959 <tr class="entry_cont"> 22960 <td class="entry_details" colspan="5"> 22961 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p> 22962 </td> 22963 </tr> 22964 22965 <tr class="entries_header"> 22966 <th class="th_details" colspan="5">HAL Implementation Details</th> 22967 </tr> 22968 <tr class="entry_cont"> 22969 <td class="entry_details" colspan="5"> 22970 <p>The value should be meaningful (for example,<wbr/> setting 100 at 22971all times is illegal).<wbr/></p> 22972 </td> 22973 </tr> 22974 22975 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22976 <!-- end of entry --> 22977 22978 22979 <tr class="entry" id="dynamic_android.statistics.faces"> 22980 <td class="entry_name 22981 " rowspan="3"> 22982 android.<wbr/>statistics.<wbr/>faces 22983 </td> 22984 <td class="entry_type"> 22985 <span class="entry_type_name">int32</span> 22986 <span class="entry_type_container">x</span> 22987 22988 <span class="entry_type_array"> 22989 n 22990 </span> 22991 <span class="entry_type_visibility"> [public as face]</span> 22992 22993 <span class="entry_type_synthetic">[synthetic] </span> 22994 22995 <span class="entry_type_hwlevel">[legacy] </span> 22996 22997 22998 22999 23000 </td> <!-- entry_type --> 23001 23002 <td class="entry_description"> 23003 <p>List of the faces detected through camera face detection 23004in this capture.<wbr/></p> 23005 </td> 23006 23007 <td class="entry_units"> 23008 </td> 23009 23010 <td class="entry_range"> 23011 </td> 23012 23013 <td class="entry_tags"> 23014 </td> 23015 23016 </tr> 23017 <tr class="entries_header"> 23018 <th class="th_details" colspan="5">Details</th> 23019 </tr> 23020 <tr class="entry_cont"> 23021 <td class="entry_details" colspan="5"> 23022 <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> 23023 </td> 23024 </tr> 23025 23026 23027 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23028 <!-- end of entry --> 23029 23030 23031 <tr class="entry" id="dynamic_android.statistics.histogram"> 23032 <td class="entry_name 23033 " rowspan="3"> 23034 android.<wbr/>statistics.<wbr/>histogram 23035 </td> 23036 <td class="entry_type"> 23037 <span class="entry_type_name">int32</span> 23038 <span class="entry_type_container">x</span> 23039 23040 <span class="entry_type_array"> 23041 n x 3 23042 </span> 23043 <span class="entry_type_visibility"> [system]</span> 23044 23045 23046 23047 23048 <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> 23049 23050 23051 </td> <!-- entry_type --> 23052 23053 <td class="entry_description"> 23054 <p>A 3-channel histogram based on the raw 23055sensor data</p> 23056 </td> 23057 23058 <td class="entry_units"> 23059 </td> 23060 23061 <td class="entry_range"> 23062 </td> 23063 23064 <td class="entry_tags"> 23065 <ul class="entry_tags"> 23066 <li><a href="#tag_FUTURE">FUTURE</a></li> 23067 </ul> 23068 </td> 23069 23070 </tr> 23071 <tr class="entries_header"> 23072 <th class="th_details" colspan="5">Details</th> 23073 </tr> 23074 <tr class="entry_cont"> 23075 <td class="entry_details" colspan="5"> 23076 <p>The k'th bucket (0-based) covers the input range 23077(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/> 23078(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is 23079supported,<wbr/> all channels should have the same data</p> 23080 </td> 23081 </tr> 23082 23083 23084 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23085 <!-- end of entry --> 23086 23087 23088 <tr class="entry" id="dynamic_android.statistics.histogramMode"> 23089 <td class="entry_name 23090 " rowspan="1"> 23091 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 23092 </td> 23093 <td class="entry_type"> 23094 <span class="entry_type_name entry_type_name_enum">byte</span> 23095 23096 <span class="entry_type_visibility"> [system as boolean]</span> 23097 23098 23099 23100 23101 23102 <ul class="entry_type_enum"> 23103 <li> 23104 <span class="entry_type_enum_name">OFF</span> 23105 </li> 23106 <li> 23107 <span class="entry_type_enum_name">ON</span> 23108 </li> 23109 </ul> 23110 23111 </td> <!-- entry_type --> 23112 23113 <td class="entry_description"> 23114 <p>Operating mode for histogram 23115generation</p> 23116 </td> 23117 23118 <td class="entry_units"> 23119 </td> 23120 23121 <td class="entry_range"> 23122 </td> 23123 23124 <td class="entry_tags"> 23125 <ul class="entry_tags"> 23126 <li><a href="#tag_FUTURE">FUTURE</a></li> 23127 </ul> 23128 </td> 23129 23130 </tr> 23131 23132 23133 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23134 <!-- end of entry --> 23135 23136 23137 <tr class="entry" id="dynamic_android.statistics.sharpnessMap"> 23138 <td class="entry_name 23139 " rowspan="3"> 23140 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map 23141 </td> 23142 <td class="entry_type"> 23143 <span class="entry_type_name">int32</span> 23144 <span class="entry_type_container">x</span> 23145 23146 <span class="entry_type_array"> 23147 n x m x 3 23148 </span> 23149 <span class="entry_type_visibility"> [system]</span> 23150 23151 23152 23153 23154 <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> 23155 23156 23157 </td> <!-- entry_type --> 23158 23159 <td class="entry_description"> 23160 <p>A 3-channel sharpness map,<wbr/> based on the raw 23161sensor data</p> 23162 </td> 23163 23164 <td class="entry_units"> 23165 </td> 23166 23167 <td class="entry_range"> 23168 </td> 23169 23170 <td class="entry_tags"> 23171 <ul class="entry_tags"> 23172 <li><a href="#tag_FUTURE">FUTURE</a></li> 23173 </ul> 23174 </td> 23175 23176 </tr> 23177 <tr class="entries_header"> 23178 <th class="th_details" colspan="5">Details</th> 23179 </tr> 23180 <tr class="entry_cont"> 23181 <td class="entry_details" colspan="5"> 23182 <p>If only a monochrome sharpness map is supported,<wbr/> 23183all channels should have the same data</p> 23184 </td> 23185 </tr> 23186 23187 23188 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23189 <!-- end of entry --> 23190 23191 23192 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode"> 23193 <td class="entry_name 23194 " rowspan="1"> 23195 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 23196 </td> 23197 <td class="entry_type"> 23198 <span class="entry_type_name entry_type_name_enum">byte</span> 23199 23200 <span class="entry_type_visibility"> [system as boolean]</span> 23201 23202 23203 23204 23205 23206 <ul class="entry_type_enum"> 23207 <li> 23208 <span class="entry_type_enum_name">OFF</span> 23209 </li> 23210 <li> 23211 <span class="entry_type_enum_name">ON</span> 23212 </li> 23213 </ul> 23214 23215 </td> <!-- entry_type --> 23216 23217 <td class="entry_description"> 23218 <p>Operating mode for sharpness map 23219generation</p> 23220 </td> 23221 23222 <td class="entry_units"> 23223 </td> 23224 23225 <td class="entry_range"> 23226 </td> 23227 23228 <td class="entry_tags"> 23229 <ul class="entry_tags"> 23230 <li><a href="#tag_FUTURE">FUTURE</a></li> 23231 </ul> 23232 </td> 23233 23234 </tr> 23235 23236 23237 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23238 <!-- end of entry --> 23239 23240 23241 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap"> 23242 <td class="entry_name 23243 " rowspan="3"> 23244 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map 23245 </td> 23246 <td class="entry_type"> 23247 <span class="entry_type_name">byte</span> 23248 23249 <span class="entry_type_visibility"> [public as lensShadingMap]</span> 23250 23251 23252 <span class="entry_type_hwlevel">[full] </span> 23253 23254 23255 23256 23257 </td> <!-- entry_type --> 23258 23259 <td class="entry_description"> 23260 <p>The shading map is a low-resolution floating-point map 23261that lists the coefficients used to correct for vignetting,<wbr/> for each 23262Bayer color channel.<wbr/></p> 23263 </td> 23264 23265 <td class="entry_units"> 23266 </td> 23267 23268 <td class="entry_range"> 23269 <p>Each gain factor is >= 1</p> 23270 </td> 23271 23272 <td class="entry_tags"> 23273 </td> 23274 23275 </tr> 23276 <tr class="entries_header"> 23277 <th class="th_details" colspan="5">Details</th> 23278 </tr> 23279 <tr class="entry_cont"> 23280 <td class="entry_details" colspan="5"> 23281 <p>The least shaded section of the image should have a gain factor 23282of 1; all other sections should have gains above 1.<wbr/></p> 23283<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 23284must take into account the colorCorrection settings.<wbr/></p> 23285<p>The shading map is for the entire active pixel array,<wbr/> and is not 23286affected by the crop region specified in the request.<wbr/> Each shading map 23287entry is the value of the shading compensation map over a specific 23288pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 23289map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 23290(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 23291pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 23292The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 23293<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 23294channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 23295The shading map is stored in a fully interleaved format.<wbr/></p> 23296<p>The shading map should have on the order of 30-40 rows and columns,<wbr/> 23297and must be smaller than 64x64.<wbr/></p> 23298<p>As an example,<wbr/> given a very small map defined as:</p> 23299<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ] 23300values = 23301[ 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/> 23302 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/> 23303 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/> 23304 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/> 23305 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/> 23306 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 ] 23307</code></pre> 23308<p>The low-resolution scaling map images for each channel are 23309(displayed using nearest-neighbor interpolation):</p> 23310<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 23311<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 23312<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 23313<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 23314<p>As a visualization only,<wbr/> inverting the full-color map to recover an 23315image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 23316<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 23317 </td> 23318 </tr> 23319 23320 23321 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23322 <!-- end of entry --> 23323 23324 23325 <tr class="entry" id="dynamic_android.statistics.lensShadingMap"> 23326 <td class="entry_name 23327 " rowspan="5"> 23328 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map 23329 </td> 23330 <td class="entry_type"> 23331 <span class="entry_type_name">float</span> 23332 <span class="entry_type_container">x</span> 23333 23334 <span class="entry_type_array"> 23335 4 x n x m 23336 </span> 23337 <span class="entry_type_visibility"> [hidden]</span> 23338 23339 23340 <span class="entry_type_hwlevel">[full] </span> 23341 23342 23343 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div> 23344 23345 23346 </td> <!-- entry_type --> 23347 23348 <td class="entry_description"> 23349 <p>The shading map is a low-resolution floating-point map 23350that lists the coefficients used to correct for vignetting,<wbr/> for each 23351Bayer color channel of RAW image data.<wbr/></p> 23352 </td> 23353 23354 <td class="entry_units"> 23355 </td> 23356 23357 <td class="entry_range"> 23358 <p>Each gain factor is >= 1</p> 23359 </td> 23360 23361 <td class="entry_tags"> 23362 </td> 23363 23364 </tr> 23365 <tr class="entries_header"> 23366 <th class="th_details" colspan="5">Details</th> 23367 </tr> 23368 <tr class="entry_cont"> 23369 <td class="entry_details" colspan="5"> 23370 <p>The least shaded section of the image should have a gain factor 23371of 1; all other sections should have gains above 1.<wbr/></p> 23372<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 23373must take into account the colorCorrection settings.<wbr/></p> 23374<p>The shading map is for the entire active pixel array,<wbr/> and is not 23375affected by the crop region specified in the request.<wbr/> Each shading map 23376entry is the value of the shading compensation map over a specific 23377pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 23378map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 23379(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 23380pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 23381The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 23382<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 23383channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 23384The shading map is stored in a fully interleaved format,<wbr/> and its size 23385is 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> 23386<p>The shading map should have on the order of 30-40 rows and columns,<wbr/> 23387and must be smaller than 64x64.<wbr/></p> 23388<p>As an example,<wbr/> given a very small map defined as:</p> 23389<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 23390<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 23391[ 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/> 23392 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/> 23393 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/> 23394 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/> 23395 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/> 23396 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 ] 23397</code></pre> 23398<p>The low-resolution scaling map images for each channel are 23399(displayed using nearest-neighbor interpolation):</p> 23400<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 23401<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 23402<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 23403<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 23404<p>As a visualization only,<wbr/> inverting the full-color map to recover an 23405image of a gray wall (using bicubic interpolation for visual quality) 23406as captured by the sensor gives:</p> 23407<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 23408<p>Note that the RAW image data might be subject to lens shading 23409correction not reported on this map.<wbr/> Query 23410<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 23411to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> 23412is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading 23413correction.<wbr/> In the case full lens shading correction is applied to RAW 23414images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/> 23415In other words,<wbr/> the map reported in this key is the remaining lens shading 23416that needs to be applied on the RAW image to get images without lens shading 23417artifacts.<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 23418formats.<wbr/></p> 23419 </td> 23420 </tr> 23421 23422 <tr class="entries_header"> 23423 <th class="th_details" colspan="5">HAL Implementation Details</th> 23424 </tr> 23425 <tr class="entry_cont"> 23426 <td class="entry_details" colspan="5"> 23427 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/> 23428When AE and AWB are in AUTO modes 23429(<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 23430may have all the information it need to generate most accurate lens shading map.<wbr/> When 23431AE or AWB are in manual mode 23432(<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 23433may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid 23434generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with 23435the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p> 23436 </td> 23437 </tr> 23438 23439 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23440 <!-- end of entry --> 23441 23442 23443 <tr class="entry" id="dynamic_android.statistics.predictedColorGains"> 23444 <td class="entry_name 23445 entry_name_deprecated 23446 " rowspan="3"> 23447 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains 23448 </td> 23449 <td class="entry_type"> 23450 <span class="entry_type_name">float</span> 23451 <span class="entry_type_container">x</span> 23452 23453 <span class="entry_type_array"> 23454 4 23455 </span> 23456 <span class="entry_type_visibility"> [hidden]</span> 23457 23458 23459 23460 <span class="entry_type_deprecated">[deprecated] </span> 23461 23462 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 23463 23464 23465 </td> <!-- entry_type --> 23466 23467 <td class="entry_description"> 23468 <p>The best-fit color channel gains calculated 23469by the camera device's statistics units for the current output frame.<wbr/></p> 23470 </td> 23471 23472 <td class="entry_units"> 23473 </td> 23474 23475 <td class="entry_range"> 23476 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 23477 </td> 23478 23479 <td class="entry_tags"> 23480 </td> 23481 23482 </tr> 23483 <tr class="entries_header"> 23484 <th class="th_details" colspan="5">Details</th> 23485 </tr> 23486 <tr class="entry_cont"> 23487 <td class="entry_details" colspan="5"> 23488 <p>This may be different than the gains used for this frame,<wbr/> 23489since statistics processing on data from a new frame 23490typically completes after the transform has already been 23491applied to that frame.<wbr/></p> 23492<p>The 4 channel gains are defined in Bayer domain,<wbr/> 23493see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p> 23494<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 23495regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 23496 </td> 23497 </tr> 23498 23499 23500 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23501 <!-- end of entry --> 23502 23503 23504 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform"> 23505 <td class="entry_name 23506 entry_name_deprecated 23507 " rowspan="3"> 23508 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform 23509 </td> 23510 <td class="entry_type"> 23511 <span class="entry_type_name">rational</span> 23512 <span class="entry_type_container">x</span> 23513 23514 <span class="entry_type_array"> 23515 3 x 3 23516 </span> 23517 <span class="entry_type_visibility"> [hidden]</span> 23518 23519 23520 23521 <span class="entry_type_deprecated">[deprecated] </span> 23522 23523 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 23524 23525 23526 </td> <!-- entry_type --> 23527 23528 <td class="entry_description"> 23529 <p>The best-fit color transform matrix estimate 23530calculated by the camera device's statistics units for the current 23531output frame.<wbr/></p> 23532 </td> 23533 23534 <td class="entry_units"> 23535 </td> 23536 23537 <td class="entry_range"> 23538 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 23539 </td> 23540 23541 <td class="entry_tags"> 23542 </td> 23543 23544 </tr> 23545 <tr class="entries_header"> 23546 <th class="th_details" colspan="5">Details</th> 23547 </tr> 23548 <tr class="entry_cont"> 23549 <td class="entry_details" colspan="5"> 23550 <p>The camera device will provide the estimate from its 23551statistics unit on the white balance transforms to use 23552for the next frame.<wbr/> These are the values the camera device believes 23553are the best fit for the current output frame.<wbr/> This may 23554be different than the transform used for this frame,<wbr/> since 23555statistics processing on data from a new frame typically 23556completes after the transform has already been applied to 23557that frame.<wbr/></p> 23558<p>These estimates must be provided for all frames,<wbr/> even if 23559capture settings and color transforms are set by the application.<wbr/></p> 23560<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 23561regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 23562 </td> 23563 </tr> 23564 23565 23566 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23567 <!-- end of entry --> 23568 23569 23570 <tr class="entry" id="dynamic_android.statistics.sceneFlicker"> 23571 <td class="entry_name 23572 " rowspan="3"> 23573 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker 23574 </td> 23575 <td class="entry_type"> 23576 <span class="entry_type_name entry_type_name_enum">byte</span> 23577 23578 <span class="entry_type_visibility"> [public]</span> 23579 23580 23581 <span class="entry_type_hwlevel">[full] </span> 23582 23583 23584 23585 <ul class="entry_type_enum"> 23586 <li> 23587 <span class="entry_type_enum_name">NONE</span> 23588 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination 23589in the current scene.<wbr/></p></span> 23590 </li> 23591 <li> 23592 <span class="entry_type_enum_name">50HZ</span> 23593 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz 23594in the current scene.<wbr/></p></span> 23595 </li> 23596 <li> 23597 <span class="entry_type_enum_name">60HZ</span> 23598 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz 23599in the current scene.<wbr/></p></span> 23600 </li> 23601 </ul> 23602 23603 </td> <!-- entry_type --> 23604 23605 <td class="entry_description"> 23606 <p>The camera device estimated scene illumination lighting 23607frequency.<wbr/></p> 23608 </td> 23609 23610 <td class="entry_units"> 23611 </td> 23612 23613 <td class="entry_range"> 23614 </td> 23615 23616 <td class="entry_tags"> 23617 </td> 23618 23619 </tr> 23620 <tr class="entries_header"> 23621 <th class="th_details" colspan="5">Details</th> 23622 </tr> 23623 <tr class="entry_cont"> 23624 <td class="entry_details" colspan="5"> 23625 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate 23626that depends on the local utility power standards.<wbr/> This flicker must be 23627accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> 23628The camera device uses this entry to tell the application what the scene 23629illuminant frequency is.<wbr/></p> 23630<p>When manual exposure control is enabled 23631(<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> == 23632OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform 23633antibanding,<wbr/> and the application can ensure it selects 23634exposure times that do not cause banding issues by looking 23635into this metadata field.<wbr/> See 23636<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p> 23637<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p> 23638 </td> 23639 </tr> 23640 23641 23642 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23643 <!-- end of entry --> 23644 23645 23646 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode"> 23647 <td class="entry_name 23648 " rowspan="3"> 23649 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 23650 </td> 23651 <td class="entry_type"> 23652 <span class="entry_type_name entry_type_name_enum">byte</span> 23653 23654 <span class="entry_type_visibility"> [public as boolean]</span> 23655 23656 23657 23658 23659 23660 <ul class="entry_type_enum"> 23661 <li> 23662 <span class="entry_type_enum_name">OFF</span> 23663 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 23664 </li> 23665 <li> 23666 <span class="entry_type_enum_name">ON</span> 23667 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 23668 </li> 23669 </ul> 23670 23671 </td> <!-- entry_type --> 23672 23673 <td class="entry_description"> 23674 <p>Operating mode for hot pixel map generation.<wbr/></p> 23675 </td> 23676 23677 <td class="entry_units"> 23678 </td> 23679 23680 <td class="entry_range"> 23681 <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> 23682 </td> 23683 23684 <td class="entry_tags"> 23685 <ul class="entry_tags"> 23686 <li><a href="#tag_V1">V1</a></li> 23687 <li><a href="#tag_RAW">RAW</a></li> 23688 </ul> 23689 </td> 23690 23691 </tr> 23692 <tr class="entries_header"> 23693 <th class="th_details" colspan="5">Details</th> 23694 </tr> 23695 <tr class="entry_cont"> 23696 <td class="entry_details" colspan="5"> 23697 <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/> 23698If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 23699 </td> 23700 </tr> 23701 23702 23703 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23704 <!-- end of entry --> 23705 23706 23707 <tr class="entry" id="dynamic_android.statistics.hotPixelMap"> 23708 <td class="entry_name 23709 " rowspan="5"> 23710 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map 23711 </td> 23712 <td class="entry_type"> 23713 <span class="entry_type_name">int32</span> 23714 <span class="entry_type_container">x</span> 23715 23716 <span class="entry_type_array"> 23717 2 x n 23718 </span> 23719 <span class="entry_type_visibility"> [public as point]</span> 23720 23721 23722 23723 23724 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div> 23725 23726 23727 </td> <!-- entry_type --> 23728 23729 <td class="entry_description"> 23730 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p> 23731 </td> 23732 23733 <td class="entry_units"> 23734 </td> 23735 23736 <td class="entry_range"> 23737 <p>n <= number of pixels on the sensor.<wbr/> 23738The <code>(x,<wbr/> y)</code> coordinates must be bounded by 23739<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 23740 </td> 23741 23742 <td class="entry_tags"> 23743 <ul class="entry_tags"> 23744 <li><a href="#tag_V1">V1</a></li> 23745 <li><a href="#tag_RAW">RAW</a></li> 23746 </ul> 23747 </td> 23748 23749 </tr> 23750 <tr class="entries_header"> 23751 <th class="th_details" colspan="5">Details</th> 23752 </tr> 23753 <tr class="entry_cont"> 23754 <td class="entry_details" colspan="5"> 23755 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and 23756<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and 23757bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and 23758height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> 23759This may include hot pixels that lie outside of the active array 23760bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 23761 </td> 23762 </tr> 23763 23764 <tr class="entries_header"> 23765 <th class="th_details" colspan="5">HAL Implementation Details</th> 23766 </tr> 23767 <tr class="entry_cont"> 23768 <td class="entry_details" colspan="5"> 23769 <p>A hotpixel map contains the coordinates of pixels on the camera 23770sensor that do report valid values (usually due to defects in 23771the camera sensor).<wbr/> This includes pixels that are stuck at certain 23772values,<wbr/> or have a response that does not accuractly encode the 23773incoming light from the scene.<wbr/></p> 23774<p>To avoid performance issues,<wbr/> there should be significantly fewer hot 23775pixels than actual pixels on the camera sensor.<wbr/></p> 23776 </td> 23777 </tr> 23778 23779 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23780 <!-- end of entry --> 23781 23782 23783 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode"> 23784 <td class="entry_name 23785 " rowspan="3"> 23786 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 23787 </td> 23788 <td class="entry_type"> 23789 <span class="entry_type_name entry_type_name_enum">byte</span> 23790 23791 <span class="entry_type_visibility"> [public]</span> 23792 23793 23794 <span class="entry_type_hwlevel">[full] </span> 23795 23796 23797 23798 <ul class="entry_type_enum"> 23799 <li> 23800 <span class="entry_type_enum_name">OFF</span> 23801 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 23802 </li> 23803 <li> 23804 <span class="entry_type_enum_name">ON</span> 23805 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 23806 </li> 23807 </ul> 23808 23809 </td> <!-- entry_type --> 23810 23811 <td class="entry_description"> 23812 <p>Whether the camera device will output the lens 23813shading map in output result metadata.<wbr/></p> 23814 </td> 23815 23816 <td class="entry_units"> 23817 </td> 23818 23819 <td class="entry_range"> 23820 <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> 23821 </td> 23822 23823 <td class="entry_tags"> 23824 <ul class="entry_tags"> 23825 <li><a href="#tag_RAW">RAW</a></li> 23826 </ul> 23827 </td> 23828 23829 </tr> 23830 <tr class="entries_header"> 23831 <th class="th_details" colspan="5">Details</th> 23832 </tr> 23833 <tr class="entry_cont"> 23834 <td class="entry_details" colspan="5"> 23835 <p>When set to ON,<wbr/> 23836<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 23837the output result metadata.<wbr/></p> 23838<p>ON is always supported on devices with the RAW capability.<wbr/></p> 23839 </td> 23840 </tr> 23841 23842 23843 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23844 <!-- end of entry --> 23845 23846 23847 23848 <!-- end of kind --> 23849 </tbody> 23850 23851 <!-- end of section --> 23852 <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr> 23853 23854 23855 <tr><td colspan="6" class="kind">controls</td></tr> 23856 23857 <thead class="entries_header"> 23858 <tr> 23859 <th class="th_name">Property Name</th> 23860 <th class="th_type">Type</th> 23861 <th class="th_description">Description</th> 23862 <th class="th_units">Units</th> 23863 <th class="th_range">Range</th> 23864 <th class="th_tags">Tags</th> 23865 </tr> 23866 </thead> 23867 23868 <tbody> 23869 23870 23871 23872 23873 23874 23875 23876 23877 23878 23879 <tr class="entry" id="controls_android.tonemap.curveBlue"> 23880 <td class="entry_name 23881 " rowspan="3"> 23882 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 23883 </td> 23884 <td class="entry_type"> 23885 <span class="entry_type_name">float</span> 23886 <span class="entry_type_container">x</span> 23887 23888 <span class="entry_type_array"> 23889 n x 2 23890 </span> 23891 <span class="entry_type_visibility"> [hidden]</span> 23892 23893 23894 <span class="entry_type_hwlevel">[full] </span> 23895 23896 23897 <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> 23898 23899 23900 </td> <!-- entry_type --> 23901 23902 <td class="entry_description"> 23903 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 23904channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23905CONTRAST_<wbr/>CURVE.<wbr/></p> 23906 </td> 23907 23908 <td class="entry_units"> 23909 </td> 23910 23911 <td class="entry_range"> 23912 </td> 23913 23914 <td class="entry_tags"> 23915 </td> 23916 23917 </tr> 23918 <tr class="entries_header"> 23919 <th class="th_details" colspan="5">Details</th> 23920 </tr> 23921 <tr class="entry_cont"> 23922 <td class="entry_details" colspan="5"> 23923 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 23924 </td> 23925 </tr> 23926 23927 23928 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23929 <!-- end of entry --> 23930 23931 23932 <tr class="entry" id="controls_android.tonemap.curveGreen"> 23933 <td class="entry_name 23934 " rowspan="3"> 23935 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 23936 </td> 23937 <td class="entry_type"> 23938 <span class="entry_type_name">float</span> 23939 <span class="entry_type_container">x</span> 23940 23941 <span class="entry_type_array"> 23942 n x 2 23943 </span> 23944 <span class="entry_type_visibility"> [hidden]</span> 23945 23946 23947 <span class="entry_type_hwlevel">[full] </span> 23948 23949 23950 <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> 23951 23952 23953 </td> <!-- entry_type --> 23954 23955 <td class="entry_description"> 23956 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 23957channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 23958CONTRAST_<wbr/>CURVE.<wbr/></p> 23959 </td> 23960 23961 <td class="entry_units"> 23962 </td> 23963 23964 <td class="entry_range"> 23965 </td> 23966 23967 <td class="entry_tags"> 23968 </td> 23969 23970 </tr> 23971 <tr class="entries_header"> 23972 <th class="th_details" colspan="5">Details</th> 23973 </tr> 23974 <tr class="entry_cont"> 23975 <td class="entry_details" colspan="5"> 23976 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 23977 </td> 23978 </tr> 23979 23980 23981 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23982 <!-- end of entry --> 23983 23984 23985 <tr class="entry" id="controls_android.tonemap.curveRed"> 23986 <td class="entry_name 23987 " rowspan="5"> 23988 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 23989 </td> 23990 <td class="entry_type"> 23991 <span class="entry_type_name">float</span> 23992 <span class="entry_type_container">x</span> 23993 23994 <span class="entry_type_array"> 23995 n x 2 23996 </span> 23997 <span class="entry_type_visibility"> [hidden]</span> 23998 23999 24000 <span class="entry_type_hwlevel">[full] </span> 24001 24002 24003 <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> 24004 24005 24006 </td> <!-- entry_type --> 24007 24008 <td class="entry_description"> 24009 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 24010channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24011CONTRAST_<wbr/>CURVE.<wbr/></p> 24012 </td> 24013 24014 <td class="entry_units"> 24015 </td> 24016 24017 <td class="entry_range"> 24018 <p>0-1 on both input and output coordinates,<wbr/> normalized 24019as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 24020 </td> 24021 24022 <td class="entry_tags"> 24023 </td> 24024 24025 </tr> 24026 <tr class="entries_header"> 24027 <th class="th_details" colspan="5">Details</th> 24028 </tr> 24029 <tr class="entry_cont"> 24030 <td class="entry_details" colspan="5"> 24031 <p>Each channel's curve is defined by an array of control points:</p> 24032<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 24033 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 240342 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 24035<p>These are sorted in order of increasing <code>Pin</code>; it is 24036required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 24037define a complete mapping.<wbr/> For input values between control points,<wbr/> 24038the camera device must linearly interpolate between the control 24039points.<wbr/></p> 24040<p>Each curve can have an independent number of points,<wbr/> and the number 24041of points can be less than max (that is,<wbr/> the request doesn't have to 24042always provide a curve with number of points equivalent to 24043<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 24044<p>A few examples,<wbr/> and their corresponding graphical mappings; these 24045only specify the red channel and the precision is limited to 4 24046digits,<wbr/> for conciseness.<wbr/></p> 24047<p>Linear mapping:</p> 24048<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 ] 24049</code></pre> 24050<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 24051<p>Invert mapping:</p> 24052<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 ] 24053</code></pre> 24054<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 24055<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 24056<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 24057 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/> 24058 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/> 24059 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/> 24060 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 ] 24061</code></pre> 24062<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 24063<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 24064<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 24065 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/> 24066 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/> 24067 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/> 24068 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 ] 24069</code></pre> 24070<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24071 </td> 24072 </tr> 24073 24074 <tr class="entries_header"> 24075 <th class="th_details" colspan="5">HAL Implementation Details</th> 24076 </tr> 24077 <tr class="entry_cont"> 24078 <td class="entry_details" colspan="5"> 24079 <p>For good quality of mapping,<wbr/> at least 128 control points are 24080preferred.<wbr/></p> 24081<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 24082control points used as are available.<wbr/></p> 24083 </td> 24084 </tr> 24085 24086 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24087 <!-- end of entry --> 24088 24089 24090 <tr class="entry" id="controls_android.tonemap.curve"> 24091 <td class="entry_name 24092 " rowspan="5"> 24093 android.<wbr/>tonemap.<wbr/>curve 24094 </td> 24095 <td class="entry_type"> 24096 <span class="entry_type_name">float</span> 24097 24098 <span class="entry_type_visibility"> [public as tonemapCurve]</span> 24099 24100 <span class="entry_type_synthetic">[synthetic] </span> 24101 24102 <span class="entry_type_hwlevel">[full] </span> 24103 24104 24105 24106 24107 </td> <!-- entry_type --> 24108 24109 <td class="entry_description"> 24110 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 24111is CONTRAST_<wbr/>CURVE.<wbr/></p> 24112 </td> 24113 24114 <td class="entry_units"> 24115 </td> 24116 24117 <td class="entry_range"> 24118 </td> 24119 24120 <td class="entry_tags"> 24121 </td> 24122 24123 </tr> 24124 <tr class="entries_header"> 24125 <th class="th_details" colspan="5">Details</th> 24126 </tr> 24127 <tr class="entry_cont"> 24128 <td class="entry_details" colspan="5"> 24129 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 24130channels respectively.<wbr/> The following example uses the red channel as an 24131example.<wbr/> The same logic applies to green and blue channel.<wbr/> 24132Each channel's curve is defined by an array of control points:</p> 24133<pre><code>curveRed = 24134 [ 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) ] 241352 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 24136<p>These are sorted in order of increasing <code>Pin</code>; it is always 24137guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 24138define a complete mapping.<wbr/> For input values between control points,<wbr/> 24139the camera device must linearly interpolate between the control 24140points.<wbr/></p> 24141<p>Each curve can have an independent number of points,<wbr/> and the number 24142of points can be less than max (that is,<wbr/> the request doesn't have to 24143always provide a curve with number of points equivalent to 24144<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 24145<p>A few examples,<wbr/> and their corresponding graphical mappings; these 24146only specify the red channel and the precision is limited to 4 24147digits,<wbr/> for conciseness.<wbr/></p> 24148<p>Linear mapping:</p> 24149<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 24150</code></pre> 24151<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 24152<p>Invert mapping:</p> 24153<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 24154</code></pre> 24155<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 24156<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 24157<pre><code>curveRed = [ 24158 (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/> 24159 (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/> 24160 (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/> 24161 (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) ] 24162</code></pre> 24163<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 24164<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 24165<pre><code>curveRed = [ 24166 (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/> 24167 (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/> 24168 (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/> 24169 (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) ] 24170</code></pre> 24171<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24172 </td> 24173 </tr> 24174 24175 <tr class="entries_header"> 24176 <th class="th_details" colspan="5">HAL Implementation Details</th> 24177 </tr> 24178 <tr class="entry_cont"> 24179 <td class="entry_details" colspan="5"> 24180 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 24181curveBlue entries.<wbr/></p> 24182 </td> 24183 </tr> 24184 24185 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24186 <!-- end of entry --> 24187 24188 24189 <tr class="entry" id="controls_android.tonemap.mode"> 24190 <td class="entry_name 24191 " rowspan="3"> 24192 android.<wbr/>tonemap.<wbr/>mode 24193 </td> 24194 <td class="entry_type"> 24195 <span class="entry_type_name entry_type_name_enum">byte</span> 24196 24197 <span class="entry_type_visibility"> [public]</span> 24198 24199 24200 <span class="entry_type_hwlevel">[full] </span> 24201 24202 24203 24204 <ul class="entry_type_enum"> 24205 <li> 24206 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 24207 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 24208the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 24209<p>All color enhancement and tonemapping must be disabled,<wbr/> except 24210for applying the tonemapping curve specified by 24211<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 24212<p>Must not slow down frame rate relative to raw 24213sensor output.<wbr/></p></span> 24214 </li> 24215 <li> 24216 <span class="entry_type_enum_name">FAST</span> 24217 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 24218reducing frame rate compared to raw sensor output.<wbr/></p></span> 24219 </li> 24220 <li> 24221 <span class="entry_type_enum_name">HIGH_QUALITY</span> 24222 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 24223the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 24224 </li> 24225 <li> 24226 <span class="entry_type_enum_name">GAMMA_VALUE</span> 24227 <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 24228tonemapping.<wbr/></p> 24229<p>All color enhancement and tonemapping must be disabled,<wbr/> except 24230for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 24231<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 24232 </li> 24233 <li> 24234 <span class="entry_type_enum_name">PRESET_CURVE</span> 24235 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 24236<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 24237<p>All color enhancement and tonemapping must be disabled,<wbr/> except 24238for applying the tonemapping curve specified by 24239<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 24240<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 24241 </li> 24242 </ul> 24243 24244 </td> <!-- entry_type --> 24245 24246 <td class="entry_description"> 24247 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 24248 </td> 24249 24250 <td class="entry_units"> 24251 </td> 24252 24253 <td class="entry_range"> 24254 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 24255 </td> 24256 24257 <td class="entry_tags"> 24258 </td> 24259 24260 </tr> 24261 <tr class="entries_header"> 24262 <th class="th_details" colspan="5">Details</th> 24263 </tr> 24264 <tr class="entry_cont"> 24265 <td class="entry_details" colspan="5"> 24266 <p>When switching to an application-defined contrast curve by setting 24267<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 24268per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 24269mapping from input high-bit-depth pixel value to the output 24270low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 24271and output may change depending on the camera pipeline,<wbr/> the values 24272are specified by normalized floating-point numbers.<wbr/></p> 24273<p>More-complex color mapping operations such as 3D color look-up 24274tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 24275transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24276CONTRAST_<wbr/>CURVE.<wbr/></p> 24277<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 24278emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 24279These values are always available,<wbr/> and as close as possible to the 24280actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 24281<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 24282provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 24283roughly the same.<wbr/></p> 24284 </td> 24285 </tr> 24286 24287 24288 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24289 <!-- end of entry --> 24290 24291 24292 <tr class="entry" id="controls_android.tonemap.gamma"> 24293 <td class="entry_name 24294 " rowspan="3"> 24295 android.<wbr/>tonemap.<wbr/>gamma 24296 </td> 24297 <td class="entry_type"> 24298 <span class="entry_type_name">float</span> 24299 24300 <span class="entry_type_visibility"> [public]</span> 24301 24302 24303 24304 24305 24306 24307 </td> <!-- entry_type --> 24308 24309 <td class="entry_description"> 24310 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24311GAMMA_<wbr/>VALUE</p> 24312 </td> 24313 24314 <td class="entry_units"> 24315 </td> 24316 24317 <td class="entry_range"> 24318 </td> 24319 24320 <td class="entry_tags"> 24321 </td> 24322 24323 </tr> 24324 <tr class="entries_header"> 24325 <th class="th_details" colspan="5">Details</th> 24326 </tr> 24327 <tr class="entry_cont"> 24328 <td class="entry_details" colspan="5"> 24329 <p>The tonemap curve will be defined the following formula: 24330* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 24331where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 24332pow is the power function and gamma is the gamma value specified by this 24333key.<wbr/></p> 24334<p>The same curve will be applied to all color channels.<wbr/> The camera device 24335may clip the input gamma value to its supported range.<wbr/> The actual applied 24336value will be returned in capture result.<wbr/></p> 24337<p>The valid range of gamma value varies on different devices,<wbr/> but values 24338within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 24339 </td> 24340 </tr> 24341 24342 24343 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24344 <!-- end of entry --> 24345 24346 24347 <tr class="entry" id="controls_android.tonemap.presetCurve"> 24348 <td class="entry_name 24349 " rowspan="3"> 24350 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 24351 </td> 24352 <td class="entry_type"> 24353 <span class="entry_type_name entry_type_name_enum">byte</span> 24354 24355 <span class="entry_type_visibility"> [public]</span> 24356 24357 24358 24359 24360 24361 <ul class="entry_type_enum"> 24362 <li> 24363 <span class="entry_type_enum_name">SRGB</span> 24364 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 24365 </li> 24366 <li> 24367 <span class="entry_type_enum_name">REC709</span> 24368 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 24369 </li> 24370 </ul> 24371 24372 </td> <!-- entry_type --> 24373 24374 <td class="entry_description"> 24375 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24376PRESET_<wbr/>CURVE</p> 24377 </td> 24378 24379 <td class="entry_units"> 24380 </td> 24381 24382 <td class="entry_range"> 24383 </td> 24384 24385 <td class="entry_tags"> 24386 </td> 24387 24388 </tr> 24389 <tr class="entries_header"> 24390 <th class="th_details" colspan="5">Details</th> 24391 </tr> 24392 <tr class="entry_cont"> 24393 <td class="entry_details" colspan="5"> 24394 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 24395<p>sRGB (approximated by 16 control points):</p> 24396<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24397<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 24398<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 24399<p>Note that above figures show a 16 control points approximation of preset 24400curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 24401 </td> 24402 </tr> 24403 24404 24405 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24406 <!-- end of entry --> 24407 24408 24409 24410 <!-- end of kind --> 24411 </tbody> 24412 <tr><td colspan="6" class="kind">static</td></tr> 24413 24414 <thead class="entries_header"> 24415 <tr> 24416 <th class="th_name">Property Name</th> 24417 <th class="th_type">Type</th> 24418 <th class="th_description">Description</th> 24419 <th class="th_units">Units</th> 24420 <th class="th_range">Range</th> 24421 <th class="th_tags">Tags</th> 24422 </tr> 24423 </thead> 24424 24425 <tbody> 24426 24427 24428 24429 24430 24431 24432 24433 24434 24435 24436 <tr class="entry" id="static_android.tonemap.maxCurvePoints"> 24437 <td class="entry_name 24438 " rowspan="5"> 24439 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points 24440 </td> 24441 <td class="entry_type"> 24442 <span class="entry_type_name">int32</span> 24443 24444 <span class="entry_type_visibility"> [public]</span> 24445 24446 24447 <span class="entry_type_hwlevel">[full] </span> 24448 24449 24450 24451 24452 </td> <!-- entry_type --> 24453 24454 <td class="entry_description"> 24455 <p>Maximum number of supported points in the 24456tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 24457 </td> 24458 24459 <td class="entry_units"> 24460 </td> 24461 24462 <td class="entry_range"> 24463 </td> 24464 24465 <td class="entry_tags"> 24466 </td> 24467 24468 </tr> 24469 <tr class="entries_header"> 24470 <th class="th_details" colspan="5">Details</th> 24471 </tr> 24472 <tr class="entry_cont"> 24473 <td class="entry_details" colspan="5"> 24474 <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 24475less than this maximum,<wbr/> the camera device will resample the curve to its internal 24476representation,<wbr/> using linear interpolation.<wbr/></p> 24477<p>The output curves in the result metadata may have a different number 24478of points than the input curves,<wbr/> and will represent the actual 24479hardware curves used as closely as possible when linearly interpolated.<wbr/></p> 24480 </td> 24481 </tr> 24482 24483 <tr class="entries_header"> 24484 <th class="th_details" colspan="5">HAL Implementation Details</th> 24485 </tr> 24486 <tr class="entry_cont"> 24487 <td class="entry_details" colspan="5"> 24488 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p> 24489 </td> 24490 </tr> 24491 24492 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24493 <!-- end of entry --> 24494 24495 24496 <tr class="entry" id="static_android.tonemap.availableToneMapModes"> 24497 <td class="entry_name 24498 " rowspan="5"> 24499 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes 24500 </td> 24501 <td class="entry_type"> 24502 <span class="entry_type_name">byte</span> 24503 <span class="entry_type_container">x</span> 24504 24505 <span class="entry_type_array"> 24506 n 24507 </span> 24508 <span class="entry_type_visibility"> [public as enumList]</span> 24509 24510 24511 <span class="entry_type_hwlevel">[full] </span> 24512 24513 24514 <div class="entry_type_notes">list of enums</div> 24515 24516 24517 </td> <!-- entry_type --> 24518 24519 <td class="entry_description"> 24520 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera 24521device.<wbr/></p> 24522 </td> 24523 24524 <td class="entry_units"> 24525 </td> 24526 24527 <td class="entry_range"> 24528 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p> 24529 </td> 24530 24531 <td class="entry_tags"> 24532 </td> 24533 24534 </tr> 24535 <tr class="entries_header"> 24536 <th class="th_details" colspan="5">Details</th> 24537 </tr> 24538 <tr class="entry_cont"> 24539 <td class="entry_details" colspan="5"> 24540 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain 24541at least one of below mode combinations:</p> 24542<ul> 24543<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 24544<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 24545</ul> 24546<p>This includes all FULL level devices.<wbr/></p> 24547 </td> 24548 </tr> 24549 24550 <tr class="entries_header"> 24551 <th class="th_details" colspan="5">HAL Implementation Details</th> 24552 </tr> 24553 <tr class="entry_cont"> 24554 <td class="entry_details" colspan="5"> 24555 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available 24556on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 24557That is,<wbr/> if the highest quality implementation on the camera device does not slow down 24558capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 24559 </td> 24560 </tr> 24561 24562 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24563 <!-- end of entry --> 24564 24565 24566 24567 <!-- end of kind --> 24568 </tbody> 24569 <tr><td colspan="6" class="kind">dynamic</td></tr> 24570 24571 <thead class="entries_header"> 24572 <tr> 24573 <th class="th_name">Property Name</th> 24574 <th class="th_type">Type</th> 24575 <th class="th_description">Description</th> 24576 <th class="th_units">Units</th> 24577 <th class="th_range">Range</th> 24578 <th class="th_tags">Tags</th> 24579 </tr> 24580 </thead> 24581 24582 <tbody> 24583 24584 24585 24586 24587 24588 24589 24590 24591 24592 24593 <tr class="entry" id="dynamic_android.tonemap.curveBlue"> 24594 <td class="entry_name 24595 " rowspan="3"> 24596 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 24597 </td> 24598 <td class="entry_type"> 24599 <span class="entry_type_name">float</span> 24600 <span class="entry_type_container">x</span> 24601 24602 <span class="entry_type_array"> 24603 n x 2 24604 </span> 24605 <span class="entry_type_visibility"> [hidden]</span> 24606 24607 24608 <span class="entry_type_hwlevel">[full] </span> 24609 24610 24611 <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> 24612 24613 24614 </td> <!-- entry_type --> 24615 24616 <td class="entry_description"> 24617 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 24618channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24619CONTRAST_<wbr/>CURVE.<wbr/></p> 24620 </td> 24621 24622 <td class="entry_units"> 24623 </td> 24624 24625 <td class="entry_range"> 24626 </td> 24627 24628 <td class="entry_tags"> 24629 </td> 24630 24631 </tr> 24632 <tr class="entries_header"> 24633 <th class="th_details" colspan="5">Details</th> 24634 </tr> 24635 <tr class="entry_cont"> 24636 <td class="entry_details" colspan="5"> 24637 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 24638 </td> 24639 </tr> 24640 24641 24642 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24643 <!-- end of entry --> 24644 24645 24646 <tr class="entry" id="dynamic_android.tonemap.curveGreen"> 24647 <td class="entry_name 24648 " rowspan="3"> 24649 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 24650 </td> 24651 <td class="entry_type"> 24652 <span class="entry_type_name">float</span> 24653 <span class="entry_type_container">x</span> 24654 24655 <span class="entry_type_array"> 24656 n x 2 24657 </span> 24658 <span class="entry_type_visibility"> [hidden]</span> 24659 24660 24661 <span class="entry_type_hwlevel">[full] </span> 24662 24663 24664 <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> 24665 24666 24667 </td> <!-- entry_type --> 24668 24669 <td class="entry_description"> 24670 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 24671channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24672CONTRAST_<wbr/>CURVE.<wbr/></p> 24673 </td> 24674 24675 <td class="entry_units"> 24676 </td> 24677 24678 <td class="entry_range"> 24679 </td> 24680 24681 <td class="entry_tags"> 24682 </td> 24683 24684 </tr> 24685 <tr class="entries_header"> 24686 <th class="th_details" colspan="5">Details</th> 24687 </tr> 24688 <tr class="entry_cont"> 24689 <td class="entry_details" colspan="5"> 24690 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 24691 </td> 24692 </tr> 24693 24694 24695 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24696 <!-- end of entry --> 24697 24698 24699 <tr class="entry" id="dynamic_android.tonemap.curveRed"> 24700 <td class="entry_name 24701 " rowspan="5"> 24702 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 24703 </td> 24704 <td class="entry_type"> 24705 <span class="entry_type_name">float</span> 24706 <span class="entry_type_container">x</span> 24707 24708 <span class="entry_type_array"> 24709 n x 2 24710 </span> 24711 <span class="entry_type_visibility"> [hidden]</span> 24712 24713 24714 <span class="entry_type_hwlevel">[full] </span> 24715 24716 24717 <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> 24718 24719 24720 </td> <!-- entry_type --> 24721 24722 <td class="entry_description"> 24723 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 24724channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24725CONTRAST_<wbr/>CURVE.<wbr/></p> 24726 </td> 24727 24728 <td class="entry_units"> 24729 </td> 24730 24731 <td class="entry_range"> 24732 <p>0-1 on both input and output coordinates,<wbr/> normalized 24733as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 24734 </td> 24735 24736 <td class="entry_tags"> 24737 </td> 24738 24739 </tr> 24740 <tr class="entries_header"> 24741 <th class="th_details" colspan="5">Details</th> 24742 </tr> 24743 <tr class="entry_cont"> 24744 <td class="entry_details" colspan="5"> 24745 <p>Each channel's curve is defined by an array of control points:</p> 24746<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 24747 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 247482 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 24749<p>These are sorted in order of increasing <code>Pin</code>; it is 24750required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 24751define a complete mapping.<wbr/> For input values between control points,<wbr/> 24752the camera device must linearly interpolate between the control 24753points.<wbr/></p> 24754<p>Each curve can have an independent number of points,<wbr/> and the number 24755of points can be less than max (that is,<wbr/> the request doesn't have to 24756always provide a curve with number of points equivalent to 24757<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 24758<p>A few examples,<wbr/> and their corresponding graphical mappings; these 24759only specify the red channel and the precision is limited to 4 24760digits,<wbr/> for conciseness.<wbr/></p> 24761<p>Linear mapping:</p> 24762<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 ] 24763</code></pre> 24764<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 24765<p>Invert mapping:</p> 24766<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 ] 24767</code></pre> 24768<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 24769<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 24770<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 24771 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/> 24772 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/> 24773 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/> 24774 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 ] 24775</code></pre> 24776<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 24777<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 24778<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 24779 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/> 24780 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/> 24781 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/> 24782 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 ] 24783</code></pre> 24784<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24785 </td> 24786 </tr> 24787 24788 <tr class="entries_header"> 24789 <th class="th_details" colspan="5">HAL Implementation Details</th> 24790 </tr> 24791 <tr class="entry_cont"> 24792 <td class="entry_details" colspan="5"> 24793 <p>For good quality of mapping,<wbr/> at least 128 control points are 24794preferred.<wbr/></p> 24795<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 24796control points used as are available.<wbr/></p> 24797 </td> 24798 </tr> 24799 24800 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24801 <!-- end of entry --> 24802 24803 24804 <tr class="entry" id="dynamic_android.tonemap.curve"> 24805 <td class="entry_name 24806 " rowspan="5"> 24807 android.<wbr/>tonemap.<wbr/>curve 24808 </td> 24809 <td class="entry_type"> 24810 <span class="entry_type_name">float</span> 24811 24812 <span class="entry_type_visibility"> [public as tonemapCurve]</span> 24813 24814 <span class="entry_type_synthetic">[synthetic] </span> 24815 24816 <span class="entry_type_hwlevel">[full] </span> 24817 24818 24819 24820 24821 </td> <!-- entry_type --> 24822 24823 <td class="entry_description"> 24824 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 24825is CONTRAST_<wbr/>CURVE.<wbr/></p> 24826 </td> 24827 24828 <td class="entry_units"> 24829 </td> 24830 24831 <td class="entry_range"> 24832 </td> 24833 24834 <td class="entry_tags"> 24835 </td> 24836 24837 </tr> 24838 <tr class="entries_header"> 24839 <th class="th_details" colspan="5">Details</th> 24840 </tr> 24841 <tr class="entry_cont"> 24842 <td class="entry_details" colspan="5"> 24843 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 24844channels respectively.<wbr/> The following example uses the red channel as an 24845example.<wbr/> The same logic applies to green and blue channel.<wbr/> 24846Each channel's curve is defined by an array of control points:</p> 24847<pre><code>curveRed = 24848 [ 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) ] 248492 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 24850<p>These are sorted in order of increasing <code>Pin</code>; it is always 24851guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 24852define a complete mapping.<wbr/> For input values between control points,<wbr/> 24853the camera device must linearly interpolate between the control 24854points.<wbr/></p> 24855<p>Each curve can have an independent number of points,<wbr/> and the number 24856of points can be less than max (that is,<wbr/> the request doesn't have to 24857always provide a curve with number of points equivalent to 24858<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 24859<p>A few examples,<wbr/> and their corresponding graphical mappings; these 24860only specify the red channel and the precision is limited to 4 24861digits,<wbr/> for conciseness.<wbr/></p> 24862<p>Linear mapping:</p> 24863<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 24864</code></pre> 24865<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 24866<p>Invert mapping:</p> 24867<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 24868</code></pre> 24869<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 24870<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 24871<pre><code>curveRed = [ 24872 (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/> 24873 (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/> 24874 (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/> 24875 (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) ] 24876</code></pre> 24877<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 24878<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 24879<pre><code>curveRed = [ 24880 (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/> 24881 (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/> 24882 (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/> 24883 (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) ] 24884</code></pre> 24885<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24886 </td> 24887 </tr> 24888 24889 <tr class="entries_header"> 24890 <th class="th_details" colspan="5">HAL Implementation Details</th> 24891 </tr> 24892 <tr class="entry_cont"> 24893 <td class="entry_details" colspan="5"> 24894 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 24895curveBlue entries.<wbr/></p> 24896 </td> 24897 </tr> 24898 24899 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24900 <!-- end of entry --> 24901 24902 24903 <tr class="entry" id="dynamic_android.tonemap.mode"> 24904 <td class="entry_name 24905 " rowspan="3"> 24906 android.<wbr/>tonemap.<wbr/>mode 24907 </td> 24908 <td class="entry_type"> 24909 <span class="entry_type_name entry_type_name_enum">byte</span> 24910 24911 <span class="entry_type_visibility"> [public]</span> 24912 24913 24914 <span class="entry_type_hwlevel">[full] </span> 24915 24916 24917 24918 <ul class="entry_type_enum"> 24919 <li> 24920 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 24921 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 24922the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 24923<p>All color enhancement and tonemapping must be disabled,<wbr/> except 24924for applying the tonemapping curve specified by 24925<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 24926<p>Must not slow down frame rate relative to raw 24927sensor output.<wbr/></p></span> 24928 </li> 24929 <li> 24930 <span class="entry_type_enum_name">FAST</span> 24931 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 24932reducing frame rate compared to raw sensor output.<wbr/></p></span> 24933 </li> 24934 <li> 24935 <span class="entry_type_enum_name">HIGH_QUALITY</span> 24936 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 24937the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 24938 </li> 24939 <li> 24940 <span class="entry_type_enum_name">GAMMA_VALUE</span> 24941 <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 24942tonemapping.<wbr/></p> 24943<p>All color enhancement and tonemapping must be disabled,<wbr/> except 24944for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 24945<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 24946 </li> 24947 <li> 24948 <span class="entry_type_enum_name">PRESET_CURVE</span> 24949 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 24950<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 24951<p>All color enhancement and tonemapping must be disabled,<wbr/> except 24952for applying the tonemapping curve specified by 24953<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 24954<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 24955 </li> 24956 </ul> 24957 24958 </td> <!-- entry_type --> 24959 24960 <td class="entry_description"> 24961 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 24962 </td> 24963 24964 <td class="entry_units"> 24965 </td> 24966 24967 <td class="entry_range"> 24968 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 24969 </td> 24970 24971 <td class="entry_tags"> 24972 </td> 24973 24974 </tr> 24975 <tr class="entries_header"> 24976 <th class="th_details" colspan="5">Details</th> 24977 </tr> 24978 <tr class="entry_cont"> 24979 <td class="entry_details" colspan="5"> 24980 <p>When switching to an application-defined contrast curve by setting 24981<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 24982per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 24983mapping from input high-bit-depth pixel value to the output 24984low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 24985and output may change depending on the camera pipeline,<wbr/> the values 24986are specified by normalized floating-point numbers.<wbr/></p> 24987<p>More-complex color mapping operations such as 3D color look-up 24988tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 24989transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24990CONTRAST_<wbr/>CURVE.<wbr/></p> 24991<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 24992emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 24993These values are always available,<wbr/> and as close as possible to the 24994actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 24995<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 24996provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 24997roughly the same.<wbr/></p> 24998 </td> 24999 </tr> 25000 25001 25002 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25003 <!-- end of entry --> 25004 25005 25006 <tr class="entry" id="dynamic_android.tonemap.gamma"> 25007 <td class="entry_name 25008 " rowspan="3"> 25009 android.<wbr/>tonemap.<wbr/>gamma 25010 </td> 25011 <td class="entry_type"> 25012 <span class="entry_type_name">float</span> 25013 25014 <span class="entry_type_visibility"> [public]</span> 25015 25016 25017 25018 25019 25020 25021 </td> <!-- entry_type --> 25022 25023 <td class="entry_description"> 25024 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 25025GAMMA_<wbr/>VALUE</p> 25026 </td> 25027 25028 <td class="entry_units"> 25029 </td> 25030 25031 <td class="entry_range"> 25032 </td> 25033 25034 <td class="entry_tags"> 25035 </td> 25036 25037 </tr> 25038 <tr class="entries_header"> 25039 <th class="th_details" colspan="5">Details</th> 25040 </tr> 25041 <tr class="entry_cont"> 25042 <td class="entry_details" colspan="5"> 25043 <p>The tonemap curve will be defined the following formula: 25044* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 25045where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 25046pow is the power function and gamma is the gamma value specified by this 25047key.<wbr/></p> 25048<p>The same curve will be applied to all color channels.<wbr/> The camera device 25049may clip the input gamma value to its supported range.<wbr/> The actual applied 25050value will be returned in capture result.<wbr/></p> 25051<p>The valid range of gamma value varies on different devices,<wbr/> but values 25052within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 25053 </td> 25054 </tr> 25055 25056 25057 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25058 <!-- end of entry --> 25059 25060 25061 <tr class="entry" id="dynamic_android.tonemap.presetCurve"> 25062 <td class="entry_name 25063 " rowspan="3"> 25064 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 25065 </td> 25066 <td class="entry_type"> 25067 <span class="entry_type_name entry_type_name_enum">byte</span> 25068 25069 <span class="entry_type_visibility"> [public]</span> 25070 25071 25072 25073 25074 25075 <ul class="entry_type_enum"> 25076 <li> 25077 <span class="entry_type_enum_name">SRGB</span> 25078 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 25079 </li> 25080 <li> 25081 <span class="entry_type_enum_name">REC709</span> 25082 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 25083 </li> 25084 </ul> 25085 25086 </td> <!-- entry_type --> 25087 25088 <td class="entry_description"> 25089 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 25090PRESET_<wbr/>CURVE</p> 25091 </td> 25092 25093 <td class="entry_units"> 25094 </td> 25095 25096 <td class="entry_range"> 25097 </td> 25098 25099 <td class="entry_tags"> 25100 </td> 25101 25102 </tr> 25103 <tr class="entries_header"> 25104 <th class="th_details" colspan="5">Details</th> 25105 </tr> 25106 <tr class="entry_cont"> 25107 <td class="entry_details" colspan="5"> 25108 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 25109<p>sRGB (approximated by 16 control points):</p> 25110<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 25111<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 25112<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 25113<p>Note that above figures show a 16 control points approximation of preset 25114curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 25115 </td> 25116 </tr> 25117 25118 25119 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25120 <!-- end of entry --> 25121 25122 25123 25124 <!-- end of kind --> 25125 </tbody> 25126 25127 <!-- end of section --> 25128 <tr><td colspan="6" id="section_led" class="section">led</td></tr> 25129 25130 25131 <tr><td colspan="6" class="kind">controls</td></tr> 25132 25133 <thead class="entries_header"> 25134 <tr> 25135 <th class="th_name">Property Name</th> 25136 <th class="th_type">Type</th> 25137 <th class="th_description">Description</th> 25138 <th class="th_units">Units</th> 25139 <th class="th_range">Range</th> 25140 <th class="th_tags">Tags</th> 25141 </tr> 25142 </thead> 25143 25144 <tbody> 25145 25146 25147 25148 25149 25150 25151 25152 25153 25154 25155 <tr class="entry" id="controls_android.led.transmit"> 25156 <td class="entry_name 25157 " rowspan="1"> 25158 android.<wbr/>led.<wbr/>transmit 25159 </td> 25160 <td class="entry_type"> 25161 <span class="entry_type_name entry_type_name_enum">byte</span> 25162 25163 <span class="entry_type_visibility"> [hidden as boolean]</span> 25164 25165 25166 25167 25168 25169 <ul class="entry_type_enum"> 25170 <li> 25171 <span class="entry_type_enum_name">OFF</span> 25172 </li> 25173 <li> 25174 <span class="entry_type_enum_name">ON</span> 25175 </li> 25176 </ul> 25177 25178 </td> <!-- entry_type --> 25179 25180 <td class="entry_description"> 25181 <p>This LED is nominally used to indicate to the user 25182that the camera is powered on and may be streaming images back to the 25183Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 25184disable this when video is processed locally and not transmitted to 25185any untrusted applications.<wbr/></p> 25186<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 25187transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 25188data is stored locally on the device.<wbr/></p> 25189<p>The LED <em>may</em> be off if a trusted application is using the data that 25190doesn't violate the above rules.<wbr/></p> 25191 </td> 25192 25193 <td class="entry_units"> 25194 </td> 25195 25196 <td class="entry_range"> 25197 </td> 25198 25199 <td class="entry_tags"> 25200 </td> 25201 25202 </tr> 25203 25204 25205 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25206 <!-- end of entry --> 25207 25208 25209 25210 <!-- end of kind --> 25211 </tbody> 25212 <tr><td colspan="6" class="kind">dynamic</td></tr> 25213 25214 <thead class="entries_header"> 25215 <tr> 25216 <th class="th_name">Property Name</th> 25217 <th class="th_type">Type</th> 25218 <th class="th_description">Description</th> 25219 <th class="th_units">Units</th> 25220 <th class="th_range">Range</th> 25221 <th class="th_tags">Tags</th> 25222 </tr> 25223 </thead> 25224 25225 <tbody> 25226 25227 25228 25229 25230 25231 25232 25233 25234 25235 25236 <tr class="entry" id="dynamic_android.led.transmit"> 25237 <td class="entry_name 25238 " rowspan="1"> 25239 android.<wbr/>led.<wbr/>transmit 25240 </td> 25241 <td class="entry_type"> 25242 <span class="entry_type_name entry_type_name_enum">byte</span> 25243 25244 <span class="entry_type_visibility"> [hidden as boolean]</span> 25245 25246 25247 25248 25249 25250 <ul class="entry_type_enum"> 25251 <li> 25252 <span class="entry_type_enum_name">OFF</span> 25253 </li> 25254 <li> 25255 <span class="entry_type_enum_name">ON</span> 25256 </li> 25257 </ul> 25258 25259 </td> <!-- entry_type --> 25260 25261 <td class="entry_description"> 25262 <p>This LED is nominally used to indicate to the user 25263that the camera is powered on and may be streaming images back to the 25264Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 25265disable this when video is processed locally and not transmitted to 25266any untrusted applications.<wbr/></p> 25267<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 25268transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 25269data is stored locally on the device.<wbr/></p> 25270<p>The LED <em>may</em> be off if a trusted application is using the data that 25271doesn't violate the above rules.<wbr/></p> 25272 </td> 25273 25274 <td class="entry_units"> 25275 </td> 25276 25277 <td class="entry_range"> 25278 </td> 25279 25280 <td class="entry_tags"> 25281 </td> 25282 25283 </tr> 25284 25285 25286 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25287 <!-- end of entry --> 25288 25289 25290 25291 <!-- end of kind --> 25292 </tbody> 25293 <tr><td colspan="6" class="kind">static</td></tr> 25294 25295 <thead class="entries_header"> 25296 <tr> 25297 <th class="th_name">Property Name</th> 25298 <th class="th_type">Type</th> 25299 <th class="th_description">Description</th> 25300 <th class="th_units">Units</th> 25301 <th class="th_range">Range</th> 25302 <th class="th_tags">Tags</th> 25303 </tr> 25304 </thead> 25305 25306 <tbody> 25307 25308 25309 25310 25311 25312 25313 25314 25315 25316 25317 <tr class="entry" id="static_android.led.availableLeds"> 25318 <td class="entry_name 25319 " rowspan="1"> 25320 android.<wbr/>led.<wbr/>available<wbr/>Leds 25321 </td> 25322 <td class="entry_type"> 25323 <span class="entry_type_name entry_type_name_enum">byte</span> 25324 <span class="entry_type_container">x</span> 25325 25326 <span class="entry_type_array"> 25327 n 25328 </span> 25329 <span class="entry_type_visibility"> [hidden]</span> 25330 25331 25332 25333 25334 25335 <ul class="entry_type_enum"> 25336 <li> 25337 <span class="entry_type_enum_name">TRANSMIT</span> 25338 <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> 25339 </li> 25340 </ul> 25341 25342 </td> <!-- entry_type --> 25343 25344 <td class="entry_description"> 25345 <p>A list of camera LEDs that are available on this system.<wbr/></p> 25346 </td> 25347 25348 <td class="entry_units"> 25349 </td> 25350 25351 <td class="entry_range"> 25352 </td> 25353 25354 <td class="entry_tags"> 25355 </td> 25356 25357 </tr> 25358 25359 25360 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25361 <!-- end of entry --> 25362 25363 25364 25365 <!-- end of kind --> 25366 </tbody> 25367 25368 <!-- end of section --> 25369 <tr><td colspan="6" id="section_info" class="section">info</td></tr> 25370 25371 25372 <tr><td colspan="6" class="kind">static</td></tr> 25373 25374 <thead class="entries_header"> 25375 <tr> 25376 <th class="th_name">Property Name</th> 25377 <th class="th_type">Type</th> 25378 <th class="th_description">Description</th> 25379 <th class="th_units">Units</th> 25380 <th class="th_range">Range</th> 25381 <th class="th_tags">Tags</th> 25382 </tr> 25383 </thead> 25384 25385 <tbody> 25386 25387 25388 25389 25390 25391 25392 25393 25394 25395 25396 <tr class="entry" id="static_android.info.supportedHardwareLevel"> 25397 <td class="entry_name 25398 " rowspan="5"> 25399 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level 25400 </td> 25401 <td class="entry_type"> 25402 <span class="entry_type_name entry_type_name_enum">byte</span> 25403 25404 <span class="entry_type_visibility"> [public]</span> 25405 25406 25407 <span class="entry_type_hwlevel">[legacy] </span> 25408 25409 25410 25411 <ul class="entry_type_enum"> 25412 <li> 25413 <span class="entry_type_enum_name">LIMITED</span> 25414 <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or 25415better.<wbr/></p> 25416<p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the 25417<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p> 25418<p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic 25419support for color image capture.<wbr/> The only exception is that the device may 25420alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth 25421measurements and not color images.<wbr/></p> 25422<p><code>LIMITED</code> devices and above require the use of <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> 25423to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before 25424capturing a high-quality still image.<wbr/></p> 25425<p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only 25426required to support full-automatic operation and post-processing (<code>OFF</code> is not 25427supported for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/> or 25428<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p> 25429<p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and 25430can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span> 25431 </li> 25432 <li> 25433 <span class="entry_type_enum_name">FULL</span> 25434 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p> 25435<p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the 25436<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p> 25437<p>A <code>FULL</code> device will support below capabilities:</p> 25438<ul> 25439<li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 25440 <code>BURST_<wbr/>CAPTURE</code>)</li> 25441<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> 25442<li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains <code>MANUAL_<wbr/>SENSOR</code>)</li> 25443<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 25444 <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li> 25445<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> 25446<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> 25447</ul> 25448<p>Note: 25449Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region 25450(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level 2545123,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span> 25452 </li> 25453 <li> 25454 <span class="entry_type_enum_name">LEGACY</span> 25455 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p> 25456<p>Only the stream configurations listed in the <code>LEGACY</code> table in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> 25457documentation are supported.<wbr/></p> 25458<p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual 25459post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/> 25460No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a 25461<code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 25462<p>In addition,<wbr/> the <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is not functional on <code>LEGACY</code> 25463devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated 25464as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may 25465fire the flash for flash power metering during precapture,<wbr/> and then fire the flash 25466for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to 25467enable the flash.<wbr/></p></span> 25468 </li> 25469 <li> 25470 <span class="entry_type_enum_name">3</span> 25471 <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to 25472FULL-level capabilities.<wbr/></p> 25473<p>The stream configurations listed in the <code>LEVEL_<wbr/>3</code>,<wbr/> <code>RAW</code>,<wbr/> <code>FULL</code>,<wbr/> <code>LEGACY</code> and 25474<code>LIMITED</code> tables in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> 25475documentation are guaranteed to be supported.<wbr/></p> 25476<p>The following additional capabilities are guaranteed to be supported:</p> 25477<ul> 25478<li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 25479 <code>YUV_<wbr/>REPROCESSING</code>)</li> 25480<li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 25481 <code>RAW</code>)</li> 25482</ul></span> 25483 </li> 25484 </ul> 25485 25486 </td> <!-- entry_type --> 25487 25488 <td class="entry_description"> 25489 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p> 25490 </td> 25491 25492 <td class="entry_units"> 25493 </td> 25494 25495 <td class="entry_range"> 25496 </td> 25497 25498 <td class="entry_tags"> 25499 </td> 25500 25501 </tr> 25502 <tr class="entries_header"> 25503 <th class="th_details" colspan="5">Details</th> 25504 </tr> 25505 <tr class="entry_cont"> 25506 <td class="entry_details" colspan="5"> 25507 <p>The supported hardware level is a high-level description of the camera device's 25508capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional 25509features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/> 25510The ordering is <code>LEGACY < LIMITED < FULL < LEVEL_<wbr/>3</code>.<wbr/></p> 25511<p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing 25512numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/> 25513the following code snippet can be used:</p> 25514<pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/> 25515boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) { 25516 int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL); 25517 if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) { 25518 return requiredLevel == deviceLevel; 25519 } 25520 //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort 25521 return requiredLevel <= deviceLevel; 25522} 25523</code></pre> 25524<p>At a high level,<wbr/> the levels are:</p> 25525<ul> 25526<li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older 25527 Android devices,<wbr/> and have very limited capabilities.<wbr/></li> 25528<li><code>LIMITED</code> devices represent the 25529 baseline feature set,<wbr/> and may also include additional capabilities that are 25530 subsets of <code>FULL</code>.<wbr/></li> 25531<li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and 25532 post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li> 25533<li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along 25534 with additional output stream configurations.<wbr/></li> 25535</ul> 25536<p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The 25537<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a 25538finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or 25539ranges defined in individual <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> entries.<wbr/></p> 25540<p>Some features are not part of any particular hardware level or capability and must be 25541queried separately.<wbr/> These include:</p> 25542<ul> 25543<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li> 25544<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> 25545<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> 25546<li>Optical or electrical image stabilization 25547 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/> 25548 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li> 25549</ul> 25550 </td> 25551 </tr> 25552 25553 <tr class="entries_header"> 25554 <th class="th_details" colspan="5">HAL Implementation Details</th> 25555 </tr> 25556 <tr class="entry_cont"> 25557 <td class="entry_details" colspan="5"> 25558 <p>The camera 3 HAL device can implement one of three possible operational modes; LIMITED,<wbr/> 25559FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p> 25560<p>FULL support or better is expected from new higher-end devices.<wbr/> Limited 25561mode has hardware requirements roughly in line with those for a camera HAL device v1 25562implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict 25563superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p> 25564<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p> 25565<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in 25566the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on HALv1 devices,<wbr/> and is implemented 25567by the camera framework code.<wbr/></p> 25568 </td> 25569 </tr> 25570 25571 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25572 <!-- end of entry --> 25573 25574 25575 25576 <!-- end of kind --> 25577 </tbody> 25578 25579 <!-- end of section --> 25580 <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr> 25581 25582 25583 <tr><td colspan="6" class="kind">controls</td></tr> 25584 25585 <thead class="entries_header"> 25586 <tr> 25587 <th class="th_name">Property Name</th> 25588 <th class="th_type">Type</th> 25589 <th class="th_description">Description</th> 25590 <th class="th_units">Units</th> 25591 <th class="th_range">Range</th> 25592 <th class="th_tags">Tags</th> 25593 </tr> 25594 </thead> 25595 25596 <tbody> 25597 25598 25599 25600 25601 25602 25603 25604 25605 25606 25607 <tr class="entry" id="controls_android.blackLevel.lock"> 25608 <td class="entry_name 25609 " rowspan="5"> 25610 android.<wbr/>black<wbr/>Level.<wbr/>lock 25611 </td> 25612 <td class="entry_type"> 25613 <span class="entry_type_name entry_type_name_enum">byte</span> 25614 25615 <span class="entry_type_visibility"> [public as boolean]</span> 25616 25617 25618 <span class="entry_type_hwlevel">[full] </span> 25619 25620 25621 25622 <ul class="entry_type_enum"> 25623 <li> 25624 <span class="entry_type_enum_name">OFF</span> 25625 </li> 25626 <li> 25627 <span class="entry_type_enum_name">ON</span> 25628 </li> 25629 </ul> 25630 25631 </td> <!-- entry_type --> 25632 25633 <td class="entry_description"> 25634 <p>Whether black-level compensation is locked 25635to its current values,<wbr/> or is free to vary.<wbr/></p> 25636 </td> 25637 25638 <td class="entry_units"> 25639 </td> 25640 25641 <td class="entry_range"> 25642 </td> 25643 25644 <td class="entry_tags"> 25645 <ul class="entry_tags"> 25646 <li><a href="#tag_HAL2">HAL2</a></li> 25647 </ul> 25648 </td> 25649 25650 </tr> 25651 <tr class="entries_header"> 25652 <th class="th_details" colspan="5">Details</th> 25653 </tr> 25654 <tr class="entry_cont"> 25655 <td class="entry_details" colspan="5"> 25656 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level 25657compensation will not change until the lock is set to 25658<code>false</code> (OFF).<wbr/></p> 25659<p>Since changes to certain capture parameters (such as 25660exposure time) may require resetting of black level 25661compensation,<wbr/> the camera device must report whether setting 25662the black level lock was successful in the output result 25663metadata.<wbr/></p> 25664<p>For example,<wbr/> if a sequence of requests is as follows:</p> 25665<ul> 25666<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 25667<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 25668<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 25669<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25670<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25671<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25672</ul> 25673<p>And the exposure change in Request 4 requires the camera 25674device to reset the black level offsets,<wbr/> then the output 25675result metadata is expected to be:</p> 25676<ul> 25677<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 25678<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 25679<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 25680<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li> 25681<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25682<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 25683</ul> 25684<p>This indicates to the application that on frame 4,<wbr/> black 25685levels were reset due to exposure value changes,<wbr/> and pixel 25686values may not be consistent across captures.<wbr/></p> 25687<p>The camera device will maintain the lock to the extent 25688possible,<wbr/> only overriding the lock to OFF when changes to 25689other request parameters require a black level recalculation 25690or reset.<wbr/></p> 25691 </td> 25692 </tr> 25693 25694 <tr class="entries_header"> 25695 <th class="th_details" colspan="5">HAL Implementation Details</th> 25696 </tr> 25697 <tr class="entry_cont"> 25698 <td class="entry_details" colspan="5"> 25699 <p>If for some reason black level locking is no longer possible 25700(for example,<wbr/> the analog gain has changed,<wbr/> which forces 25701black level offsets to be recalculated),<wbr/> then the HAL must 25702override this request (and it must report 'OFF' when this 25703does happen) until the next capture for which locking is 25704possible again.<wbr/></p> 25705 </td> 25706 </tr> 25707 25708 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25709 <!-- end of entry --> 25710 25711 25712 25713 <!-- end of kind --> 25714 </tbody> 25715 <tr><td colspan="6" class="kind">dynamic</td></tr> 25716 25717 <thead class="entries_header"> 25718 <tr> 25719 <th class="th_name">Property Name</th> 25720 <th class="th_type">Type</th> 25721 <th class="th_description">Description</th> 25722 <th class="th_units">Units</th> 25723 <th class="th_range">Range</th> 25724 <th class="th_tags">Tags</th> 25725 </tr> 25726 </thead> 25727 25728 <tbody> 25729 25730 25731 25732 25733 25734 25735 25736 25737 25738 25739 <tr class="entry" id="dynamic_android.blackLevel.lock"> 25740 <td class="entry_name 25741 " rowspan="5"> 25742 android.<wbr/>black<wbr/>Level.<wbr/>lock 25743 </td> 25744 <td class="entry_type"> 25745 <span class="entry_type_name entry_type_name_enum">byte</span> 25746 25747 <span class="entry_type_visibility"> [public as boolean]</span> 25748 25749 25750 <span class="entry_type_hwlevel">[full] </span> 25751 25752 25753 25754 <ul class="entry_type_enum"> 25755 <li> 25756 <span class="entry_type_enum_name">OFF</span> 25757 </li> 25758 <li> 25759 <span class="entry_type_enum_name">ON</span> 25760 </li> 25761 </ul> 25762 25763 </td> <!-- entry_type --> 25764 25765 <td class="entry_description"> 25766 <p>Whether black-level compensation is locked 25767to its current values,<wbr/> or is free to vary.<wbr/></p> 25768 </td> 25769 25770 <td class="entry_units"> 25771 </td> 25772 25773 <td class="entry_range"> 25774 </td> 25775 25776 <td class="entry_tags"> 25777 <ul class="entry_tags"> 25778 <li><a href="#tag_HAL2">HAL2</a></li> 25779 </ul> 25780 </td> 25781 25782 </tr> 25783 <tr class="entries_header"> 25784 <th class="th_details" colspan="5">Details</th> 25785 </tr> 25786 <tr class="entry_cont"> 25787 <td class="entry_details" colspan="5"> 25788 <p>Whether the black level offset was locked for this frame.<wbr/> Should be 25789ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless 25790a change in other capture settings forced the camera device to 25791perform a black level reset.<wbr/></p> 25792 </td> 25793 </tr> 25794 25795 <tr class="entries_header"> 25796 <th class="th_details" colspan="5">HAL Implementation Details</th> 25797 </tr> 25798 <tr class="entry_cont"> 25799 <td class="entry_details" colspan="5"> 25800 <p>If for some reason black level locking is no longer possible 25801(for example,<wbr/> the analog gain has changed,<wbr/> which forces 25802black level offsets to be recalculated),<wbr/> then the HAL must 25803override this request (and it must report 'OFF' when this 25804does happen) until the next capture for which locking is 25805possible again.<wbr/></p> 25806 </td> 25807 </tr> 25808 25809 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25810 <!-- end of entry --> 25811 25812 25813 25814 <!-- end of kind --> 25815 </tbody> 25816 25817 <!-- end of section --> 25818 <tr><td colspan="6" id="section_sync" class="section">sync</td></tr> 25819 25820 25821 <tr><td colspan="6" class="kind">dynamic</td></tr> 25822 25823 <thead class="entries_header"> 25824 <tr> 25825 <th class="th_name">Property Name</th> 25826 <th class="th_type">Type</th> 25827 <th class="th_description">Description</th> 25828 <th class="th_units">Units</th> 25829 <th class="th_range">Range</th> 25830 <th class="th_tags">Tags</th> 25831 </tr> 25832 </thead> 25833 25834 <tbody> 25835 25836 25837 25838 25839 25840 25841 25842 25843 25844 25845 <tr class="entry" id="dynamic_android.sync.frameNumber"> 25846 <td class="entry_name 25847 " rowspan="5"> 25848 android.<wbr/>sync.<wbr/>frame<wbr/>Number 25849 </td> 25850 <td class="entry_type"> 25851 <span class="entry_type_name entry_type_name_enum">int64</span> 25852 25853 <span class="entry_type_visibility"> [hidden]</span> 25854 25855 25856 <span class="entry_type_hwlevel">[legacy] </span> 25857 25858 25859 25860 <ul class="entry_type_enum"> 25861 <li> 25862 <span class="entry_type_enum_name">CONVERGING</span> 25863 <span class="entry_type_enum_value">-1</span> 25864 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p> 25865<p>Synchronization is in progress,<wbr/> and reading metadata from this 25866result may include a mix of data that have taken effect since the 25867last synchronization time.<wbr/></p> 25868<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/> 25869this value will update to the actual frame number frame number 25870the result is guaranteed to be synchronized to (as long as the 25871request settings remain constant).<wbr/></p></span> 25872 </li> 25873 <li> 25874 <span class="entry_type_enum_name">UNKNOWN</span> 25875 <span class="entry_type_enum_value">-2</span> 25876 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p> 25877<p>The result may have already converged,<wbr/> or it may be in 25878progress.<wbr/> Reading from this result may include some mix 25879of settings from past requests.<wbr/></p> 25880<p>After a settings change,<wbr/> the new settings will eventually all 25881take effect for the output buffers and results.<wbr/> However,<wbr/> this 25882value will not change when that happens.<wbr/> Altering settings 25883rapidly may provide outcomes using mixes of settings from recent 25884requests.<wbr/></p> 25885<p>This value is intended primarily for backwards compatibility with 25886the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span> 25887 </li> 25888 </ul> 25889 25890 </td> <!-- entry_type --> 25891 25892 <td class="entry_description"> 25893 <p>The frame number corresponding to the last request 25894with which the output result (metadata + buffers) has been fully 25895synchronized.<wbr/></p> 25896 </td> 25897 25898 <td class="entry_units"> 25899 </td> 25900 25901 <td class="entry_range"> 25902 <p>Either a non-negative value corresponding to a 25903<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p> 25904 </td> 25905 25906 <td class="entry_tags"> 25907 <ul class="entry_tags"> 25908 <li><a href="#tag_V1">V1</a></li> 25909 </ul> 25910 </td> 25911 25912 </tr> 25913 <tr class="entries_header"> 25914 <th class="th_details" colspan="5">Details</th> 25915 </tr> 25916 <tr class="entry_cont"> 25917 <td class="entry_details" colspan="5"> 25918 <p>When a request is submitted to the camera device,<wbr/> there is usually a 25919delay of several frames before the controls get applied.<wbr/> A camera 25920device may either choose to account for this delay by implementing a 25921pipeline and carefully submit well-timed atomic control updates,<wbr/> or 25922it may start streaming control changes that span over several frame 25923boundaries.<wbr/></p> 25924<p>In the latter case,<wbr/> whenever a request's settings change relative to 25925the previous submitted request,<wbr/> the full set of changes may take 25926multiple frame durations to fully take effect.<wbr/> Some settings may 25927take effect sooner (in less frame durations) than others.<wbr/></p> 25928<p>While a set of control changes are being propagated,<wbr/> this value 25929will be CONVERGING.<wbr/></p> 25930<p>Once it is fully known that a set of control changes have been 25931finished propagating,<wbr/> and the resulting updated control settings 25932have been read back by the camera device,<wbr/> this value will be set 25933to a non-negative frame number (corresponding to the request to 25934which the results have synchronized to).<wbr/></p> 25935<p>Older camera device implementations may not have a way to detect 25936when all camera controls have been applied,<wbr/> and will always set this 25937value to UNKNOWN.<wbr/></p> 25938<p>FULL capability devices will always have this value set to the 25939frame number of the request corresponding to this result.<wbr/></p> 25940<p><em>Further details</em>:</p> 25941<ul> 25942<li>Whenever a request differs from the last request,<wbr/> any future 25943results not yet returned may have this value set to CONVERGING (this 25944could include any in-progress captures not yet returned by the camera 25945device,<wbr/> for more details see pipeline considerations below).<wbr/></li> 25946<li>Submitting a series of multiple requests that differ from the 25947previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) 25948moves the new synchronization frame to the last non-repeating 25949request (using the smallest frame number from the contiguous list of 25950repeating requests).<wbr/></li> 25951<li>Submitting the same request repeatedly will not change this value 25952to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li> 25953<li>When this value changes to non-negative,<wbr/> that means that all of the 25954metadata controls from the request have been applied,<wbr/> all of the 25955metadata controls from the camera device have been read to the 25956updated values (into the result),<wbr/> and all of the graphics buffers 25957corresponding to this result are also synchronized to the request.<wbr/></li> 25958</ul> 25959<p><em>Pipeline considerations</em>:</p> 25960<p>Submitting a request with updated controls relative to the previously 25961submitted requests may also invalidate the synchronization state 25962of all the results corresponding to currently in-flight requests.<wbr/></p> 25963<p>In other words,<wbr/> results for this current request and up to 25964<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their 25965<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p> 25966 </td> 25967 </tr> 25968 25969 <tr class="entries_header"> 25970 <th class="th_details" colspan="5">HAL Implementation Details</th> 25971 </tr> 25972 <tr class="entry_cont"> 25973 <td class="entry_details" colspan="5"> 25974 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> 25975is also UNKNOWN.<wbr/></p> 25976<p>FULL capability devices should simply set this value to the 25977<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p> 25978 </td> 25979 </tr> 25980 25981 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25982 <!-- end of entry --> 25983 25984 25985 25986 <!-- end of kind --> 25987 </tbody> 25988 <tr><td colspan="6" class="kind">static</td></tr> 25989 25990 <thead class="entries_header"> 25991 <tr> 25992 <th class="th_name">Property Name</th> 25993 <th class="th_type">Type</th> 25994 <th class="th_description">Description</th> 25995 <th class="th_units">Units</th> 25996 <th class="th_range">Range</th> 25997 <th class="th_tags">Tags</th> 25998 </tr> 25999 </thead> 26000 26001 <tbody> 26002 26003 26004 26005 26006 26007 26008 26009 26010 26011 26012 <tr class="entry" id="static_android.sync.maxLatency"> 26013 <td class="entry_name 26014 " rowspan="5"> 26015 android.<wbr/>sync.<wbr/>max<wbr/>Latency 26016 </td> 26017 <td class="entry_type"> 26018 <span class="entry_type_name entry_type_name_enum">int32</span> 26019 26020 <span class="entry_type_visibility"> [public]</span> 26021 26022 26023 <span class="entry_type_hwlevel">[legacy] </span> 26024 26025 26026 26027 <ul class="entry_type_enum"> 26028 <li> 26029 <span class="entry_type_enum_name">PER_FRAME_CONTROL</span> 26030 <span class="entry_type_enum_value">0</span> 26031 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p> 26032<p>Changing controls over multiple requests one after another will 26033produce results that have those controls applied atomically 26034each frame.<wbr/></p> 26035<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span> 26036 </li> 26037 <li> 26038 <span class="entry_type_enum_name">UNKNOWN</span> 26039 <span class="entry_type_enum_value">-1</span> 26040 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set) 26041of the past requests applied to the camera settings.<wbr/></p> 26042<p>By submitting a series of identical requests,<wbr/> the camera device 26043will eventually have the camera settings applied,<wbr/> but it is 26044unknown when that exact point will be.<wbr/></p> 26045<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span> 26046 </li> 26047 </ul> 26048 26049 </td> <!-- entry_type --> 26050 26051 <td class="entry_description"> 26052 <p>The maximum number of frames that can occur after a request 26053(different than the previous) has been submitted,<wbr/> and before the 26054result's state becomes synchronized.<wbr/></p> 26055 </td> 26056 26057 <td class="entry_units"> 26058 Frame counts 26059 </td> 26060 26061 <td class="entry_range"> 26062 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p> 26063 </td> 26064 26065 <td class="entry_tags"> 26066 <ul class="entry_tags"> 26067 <li><a href="#tag_V1">V1</a></li> 26068 </ul> 26069 </td> 26070 26071 </tr> 26072 <tr class="entries_header"> 26073 <th class="th_details" colspan="5">Details</th> 26074 </tr> 26075 <tr class="entry_cont"> 26076 <td class="entry_details" colspan="5"> 26077 <p>This defines the maximum distance (in number of metadata results),<wbr/> 26078between the frame number of the request that has new controls to apply 26079and the frame number of the result that has all the controls applied.<wbr/></p> 26080<p>In other words this acts as an upper boundary for how many frames 26081must occur before the camera device knows for a fact that the new 26082submitted camera settings have been applied in outgoing frames.<wbr/></p> 26083 </td> 26084 </tr> 26085 26086 <tr class="entries_header"> 26087 <th class="th_details" colspan="5">HAL Implementation Details</th> 26088 </tr> 26089 <tr class="entry_cont"> 26090 <td class="entry_details" colspan="5"> 26091 <p>For example if maxLatency was 2,<wbr/></p> 26092<pre><code>initial request = X (repeating) 26093request1 = X 26094request2 = Y 26095request3 = Y 26096request4 = Y 26097 26098where requestN has frameNumber N,<wbr/> and the first of the repeating 26099initial request's has frameNumber F (and F < 1).<wbr/> 26100 26101initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 26102result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 26103result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 26104result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 26105result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } 26106 26107where resultN has frameNumber N.<wbr/> 26108</code></pre> 26109<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and 26110<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly 26111<code>4 - 2 = 2</code>.<wbr/></p> 26112<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of 26113<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or 26114<code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p> 26115<p>LIMITED devices are strongly encouraged to use a non-negative 26116value.<wbr/> If UNKNOWN is used here then app developers do not have a way 26117to know when sensor settings have been applied.<wbr/></p> 26118 </td> 26119 </tr> 26120 26121 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26122 <!-- end of entry --> 26123 26124 26125 26126 <!-- end of kind --> 26127 </tbody> 26128 26129 <!-- end of section --> 26130 <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr> 26131 26132 26133 <tr><td colspan="6" class="kind">controls</td></tr> 26134 26135 <thead class="entries_header"> 26136 <tr> 26137 <th class="th_name">Property Name</th> 26138 <th class="th_type">Type</th> 26139 <th class="th_description">Description</th> 26140 <th class="th_units">Units</th> 26141 <th class="th_range">Range</th> 26142 <th class="th_tags">Tags</th> 26143 </tr> 26144 </thead> 26145 26146 <tbody> 26147 26148 26149 26150 26151 26152 26153 26154 26155 26156 26157 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor"> 26158 <td class="entry_name 26159 " rowspan="3"> 26160 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 26161 </td> 26162 <td class="entry_type"> 26163 <span class="entry_type_name">float</span> 26164 26165 <span class="entry_type_visibility"> [public]</span> 26166 26167 26168 <span class="entry_type_hwlevel">[limited] </span> 26169 26170 26171 26172 26173 </td> <!-- entry_type --> 26174 26175 <td class="entry_description"> 26176 <p>The amount of exposure time increase factor applied to the original output 26177frame by the application processing before sending for reprocessing.<wbr/></p> 26178 </td> 26179 26180 <td class="entry_units"> 26181 Relative exposure time increase factor.<wbr/> 26182 </td> 26183 26184 <td class="entry_range"> 26185 <p>>= 1.<wbr/>0</p> 26186 </td> 26187 26188 <td class="entry_tags"> 26189 <ul class="entry_tags"> 26190 <li><a href="#tag_REPROC">REPROC</a></li> 26191 </ul> 26192 </td> 26193 26194 </tr> 26195 <tr class="entries_header"> 26196 <th class="th_details" colspan="5">Details</th> 26197 </tr> 26198 <tr class="entry_cont"> 26199 <td class="entry_details" colspan="5"> 26200 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 26201capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 26202<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 26203output frames to effectively reduce the noise to the same level as a frame that was 26204captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 26205images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 26206the camera device is that the amount of noise in the image would be approximately what 26207would be expected if the original capture parameters had been a sensitivity of 26208S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 26209than S and T respectively.<wbr/> If the captured images were processed by the application 26210before being sent for reprocessing,<wbr/> then the application may have used image processing 26211algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 26212application-processed images (input images).<wbr/> By using the effectiveExposureFactor 26213control,<wbr/> the application can communicate to the camera device the actual noise level 26214improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 26215device can select appropriate noise reduction and edge enhancement parameters to avoid 26216excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 26217enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 26218<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 26219multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 26220fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 26221square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 26222adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 26223produce the best quality images.<wbr/></p> 26224<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 26225buffer in a way that affects its effective exposure time.<wbr/></p> 26226<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 26227reduction 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/> 26228Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 26229<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 26230 </td> 26231 </tr> 26232 26233 26234 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26235 <!-- end of entry --> 26236 26237 26238 26239 <!-- end of kind --> 26240 </tbody> 26241 <tr><td colspan="6" class="kind">dynamic</td></tr> 26242 26243 <thead class="entries_header"> 26244 <tr> 26245 <th class="th_name">Property Name</th> 26246 <th class="th_type">Type</th> 26247 <th class="th_description">Description</th> 26248 <th class="th_units">Units</th> 26249 <th class="th_range">Range</th> 26250 <th class="th_tags">Tags</th> 26251 </tr> 26252 </thead> 26253 26254 <tbody> 26255 26256 26257 26258 26259 26260 26261 26262 26263 26264 26265 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor"> 26266 <td class="entry_name 26267 " rowspan="3"> 26268 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 26269 </td> 26270 <td class="entry_type"> 26271 <span class="entry_type_name">float</span> 26272 26273 <span class="entry_type_visibility"> [public]</span> 26274 26275 26276 <span class="entry_type_hwlevel">[limited] </span> 26277 26278 26279 26280 26281 </td> <!-- entry_type --> 26282 26283 <td class="entry_description"> 26284 <p>The amount of exposure time increase factor applied to the original output 26285frame by the application processing before sending for reprocessing.<wbr/></p> 26286 </td> 26287 26288 <td class="entry_units"> 26289 Relative exposure time increase factor.<wbr/> 26290 </td> 26291 26292 <td class="entry_range"> 26293 <p>>= 1.<wbr/>0</p> 26294 </td> 26295 26296 <td class="entry_tags"> 26297 <ul class="entry_tags"> 26298 <li><a href="#tag_REPROC">REPROC</a></li> 26299 </ul> 26300 </td> 26301 26302 </tr> 26303 <tr class="entries_header"> 26304 <th class="th_details" colspan="5">Details</th> 26305 </tr> 26306 <tr class="entry_cont"> 26307 <td class="entry_details" colspan="5"> 26308 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 26309capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 26310<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 26311output frames to effectively reduce the noise to the same level as a frame that was 26312captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 26313images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 26314the camera device is that the amount of noise in the image would be approximately what 26315would be expected if the original capture parameters had been a sensitivity of 26316S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 26317than S and T respectively.<wbr/> If the captured images were processed by the application 26318before being sent for reprocessing,<wbr/> then the application may have used image processing 26319algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 26320application-processed images (input images).<wbr/> By using the effectiveExposureFactor 26321control,<wbr/> the application can communicate to the camera device the actual noise level 26322improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 26323device can select appropriate noise reduction and edge enhancement parameters to avoid 26324excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 26325enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 26326<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 26327multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 26328fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 26329square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 26330adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 26331produce the best quality images.<wbr/></p> 26332<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 26333buffer in a way that affects its effective exposure time.<wbr/></p> 26334<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 26335reduction 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/> 26336Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 26337<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 26338 </td> 26339 </tr> 26340 26341 26342 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26343 <!-- end of entry --> 26344 26345 26346 26347 <!-- end of kind --> 26348 </tbody> 26349 <tr><td colspan="6" class="kind">static</td></tr> 26350 26351 <thead class="entries_header"> 26352 <tr> 26353 <th class="th_name">Property Name</th> 26354 <th class="th_type">Type</th> 26355 <th class="th_description">Description</th> 26356 <th class="th_units">Units</th> 26357 <th class="th_range">Range</th> 26358 <th class="th_tags">Tags</th> 26359 </tr> 26360 </thead> 26361 26362 <tbody> 26363 26364 26365 26366 26367 26368 26369 26370 26371 26372 26373 <tr class="entry" id="static_android.reprocess.maxCaptureStall"> 26374 <td class="entry_name 26375 " rowspan="3"> 26376 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall 26377 </td> 26378 <td class="entry_type"> 26379 <span class="entry_type_name">int32</span> 26380 26381 <span class="entry_type_visibility"> [public]</span> 26382 26383 26384 <span class="entry_type_hwlevel">[limited] </span> 26385 26386 26387 26388 26389 </td> <!-- entry_type --> 26390 26391 <td class="entry_description"> 26392 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a 26393reprocess capture request.<wbr/></p> 26394 </td> 26395 26396 <td class="entry_units"> 26397 Number of frames.<wbr/> 26398 </td> 26399 26400 <td class="entry_range"> 26401 <p><= 4</p> 26402 </td> 26403 26404 <td class="entry_tags"> 26405 <ul class="entry_tags"> 26406 <li><a href="#tag_REPROC">REPROC</a></li> 26407 </ul> 26408 </td> 26409 26410 </tr> 26411 <tr class="entries_header"> 26412 <th class="th_details" colspan="5">Details</th> 26413 </tr> 26414 <tr class="entry_cont"> 26415 <td class="entry_details" colspan="5"> 26416 <p>The key describes the maximal interference that one reprocess (input) request 26417can introduce to the camera simultaneous streaming of regular (output) capture 26418requests,<wbr/> including repeating requests.<wbr/></p> 26419<p>When a reprocessing capture request is submitted while a camera output repeating request 26420(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture 26421pipeline for at least one frame duration so that the camera device is unable to process 26422the following capture request in time for the next sensor start of exposure boundary.<wbr/> 26423When this happens,<wbr/> the application may observe a capture time gap (longer than one frame 26424duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview 26425glitch if the repeating request output targets include a preview surface.<wbr/> This key gives 26426the worst-case number of frame stall introduced by one reprocess request with any kind of 26427formats/<wbr/>sizes combination.<wbr/></p> 26428<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the 26429ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p> 26430<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing ( 26431i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or 26432YUV_<wbr/>REPROCESSING).<wbr/></p> 26433 </td> 26434 </tr> 26435 26436 26437 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26438 <!-- end of entry --> 26439 26440 26441 26442 <!-- end of kind --> 26443 </tbody> 26444 26445 <!-- end of section --> 26446 <tr><td colspan="6" id="section_depth" class="section">depth</td></tr> 26447 26448 26449 <tr><td colspan="6" class="kind">static</td></tr> 26450 26451 <thead class="entries_header"> 26452 <tr> 26453 <th class="th_name">Property Name</th> 26454 <th class="th_type">Type</th> 26455 <th class="th_description">Description</th> 26456 <th class="th_units">Units</th> 26457 <th class="th_range">Range</th> 26458 <th class="th_tags">Tags</th> 26459 </tr> 26460 </thead> 26461 26462 <tbody> 26463 26464 26465 26466 26467 26468 26469 26470 26471 26472 26473 <tr class="entry" id="static_android.depth.maxDepthSamples"> 26474 <td class="entry_name 26475 " rowspan="3"> 26476 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples 26477 </td> 26478 <td class="entry_type"> 26479 <span class="entry_type_name">int32</span> 26480 26481 <span class="entry_type_visibility"> [system]</span> 26482 26483 26484 <span class="entry_type_hwlevel">[limited] </span> 26485 26486 26487 26488 26489 </td> <!-- entry_type --> 26490 26491 <td class="entry_description"> 26492 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p> 26493 </td> 26494 26495 <td class="entry_units"> 26496 </td> 26497 26498 <td class="entry_range"> 26499 </td> 26500 26501 <td class="entry_tags"> 26502 <ul class="entry_tags"> 26503 <li><a href="#tag_DEPTH">DEPTH</a></li> 26504 </ul> 26505 </td> 26506 26507 </tr> 26508 <tr class="entries_header"> 26509 <th class="th_details" colspan="5">Details</th> 26510 </tr> 26511 <tr class="entry_cont"> 26512 <td class="entry_details" colspan="5"> 26513 <p>If a camera device supports outputting depth range data in the form of a depth point 26514cloud (<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 26515number of points an output buffer may contain.<wbr/></p> 26516<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/> 26517If output in the depth point cloud format is not supported,<wbr/> this entry will 26518not be defined.<wbr/></p> 26519 </td> 26520 </tr> 26521 26522 26523 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26524 <!-- end of entry --> 26525 26526 26527 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations"> 26528 <td class="entry_name 26529 " rowspan="3"> 26530 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations 26531 </td> 26532 <td class="entry_type"> 26533 <span class="entry_type_name entry_type_name_enum">int32</span> 26534 <span class="entry_type_container">x</span> 26535 26536 <span class="entry_type_array"> 26537 n x 4 26538 </span> 26539 <span class="entry_type_visibility"> [hidden as streamConfiguration]</span> 26540 26541 26542 <span class="entry_type_hwlevel">[limited] </span> 26543 26544 26545 26546 <ul class="entry_type_enum"> 26547 <li> 26548 <span class="entry_type_enum_name">OUTPUT</span> 26549 </li> 26550 <li> 26551 <span class="entry_type_enum_name">INPUT</span> 26552 </li> 26553 </ul> 26554 26555 </td> <!-- entry_type --> 26556 26557 <td class="entry_description"> 26558 <p>The available depth dataspace stream 26559configurations that this camera device supports 26560(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 26561 </td> 26562 26563 <td class="entry_units"> 26564 </td> 26565 26566 <td class="entry_range"> 26567 </td> 26568 26569 <td class="entry_tags"> 26570 <ul class="entry_tags"> 26571 <li><a href="#tag_DEPTH">DEPTH</a></li> 26572 </ul> 26573 </td> 26574 26575 </tr> 26576 <tr class="entries_header"> 26577 <th class="th_details" colspan="5">Details</th> 26578 </tr> 26579 <tr class="entry_cont"> 26580 <td class="entry_details" colspan="5"> 26581 <p>These are output stream configurations for use with 26582dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are 26583listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 26584<p>Only devices that support depth output for at least 26585the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include 26586this entry.<wbr/></p> 26587<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB 26588sparse depth point cloud must report a single entry for 26589the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/> 26590<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to 26591the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p> 26592 </td> 26593 </tr> 26594 26595 26596 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26597 <!-- end of entry --> 26598 26599 26600 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations"> 26601 <td class="entry_name 26602 " rowspan="3"> 26603 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations 26604 </td> 26605 <td class="entry_type"> 26606 <span class="entry_type_name">int64</span> 26607 <span class="entry_type_container">x</span> 26608 26609 <span class="entry_type_array"> 26610 4 x n 26611 </span> 26612 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 26613 26614 26615 <span class="entry_type_hwlevel">[limited] </span> 26616 26617 26618 26619 26620 </td> <!-- entry_type --> 26621 26622 <td class="entry_description"> 26623 <p>This lists the minimum frame duration for each 26624format/<wbr/>size combination for depth output formats.<wbr/></p> 26625 </td> 26626 26627 <td class="entry_units"> 26628 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 26629 </td> 26630 26631 <td class="entry_range"> 26632 </td> 26633 26634 <td class="entry_tags"> 26635 <ul class="entry_tags"> 26636 <li><a href="#tag_DEPTH">DEPTH</a></li> 26637 </ul> 26638 </td> 26639 26640 </tr> 26641 <tr class="entries_header"> 26642 <th class="th_details" colspan="5">Details</th> 26643 </tr> 26644 <tr class="entry_cont"> 26645 <td class="entry_details" colspan="5"> 26646 <p>This should correspond to the frame duration when only that 26647stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 26648set to either OFF or FAST.<wbr/></p> 26649<p>When multiple streams are used in a request,<wbr/> the minimum frame 26650duration will be max(individual stream min durations).<wbr/></p> 26651<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 26652is the same regardless of whether the stream is input or output.<wbr/></p> 26653<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 26654<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 26655calculating the max frame rate.<wbr/></p> 26656<p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p> 26657 </td> 26658 </tr> 26659 26660 26661 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26662 <!-- end of entry --> 26663 26664 26665 <tr class="entry" id="static_android.depth.availableDepthStallDurations"> 26666 <td class="entry_name 26667 " rowspan="3"> 26668 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations 26669 </td> 26670 <td class="entry_type"> 26671 <span class="entry_type_name">int64</span> 26672 <span class="entry_type_container">x</span> 26673 26674 <span class="entry_type_array"> 26675 4 x n 26676 </span> 26677 <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span> 26678 26679 26680 <span class="entry_type_hwlevel">[limited] </span> 26681 26682 26683 26684 26685 </td> <!-- entry_type --> 26686 26687 <td class="entry_description"> 26688 <p>This lists the maximum stall duration for each 26689output format/<wbr/>size combination for depth streams.<wbr/></p> 26690 </td> 26691 26692 <td class="entry_units"> 26693 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 26694 </td> 26695 26696 <td class="entry_range"> 26697 </td> 26698 26699 <td class="entry_tags"> 26700 <ul class="entry_tags"> 26701 <li><a href="#tag_DEPTH">DEPTH</a></li> 26702 </ul> 26703 </td> 26704 26705 </tr> 26706 <tr class="entries_header"> 26707 <th class="th_details" colspan="5">Details</th> 26708 </tr> 26709 <tr class="entry_cont"> 26710 <td class="entry_details" colspan="5"> 26711 <p>A stall duration is how much extra time would get added 26712to the normal minimum frame duration for a repeating request 26713that has streams with non-zero stall.<wbr/></p> 26714<p>This functions similarly to 26715<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth 26716streams.<wbr/></p> 26717<p>All depth output stream formats may have a nonzero stall 26718duration.<wbr/></p> 26719 </td> 26720 </tr> 26721 26722 26723 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26724 <!-- end of entry --> 26725 26726 26727 <tr class="entry" id="static_android.depth.depthIsExclusive"> 26728 <td class="entry_name 26729 " rowspan="3"> 26730 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive 26731 </td> 26732 <td class="entry_type"> 26733 <span class="entry_type_name entry_type_name_enum">byte</span> 26734 26735 <span class="entry_type_visibility"> [public as boolean]</span> 26736 26737 26738 <span class="entry_type_hwlevel">[limited] </span> 26739 26740 26741 26742 <ul class="entry_type_enum"> 26743 <li> 26744 <span class="entry_type_enum_name">FALSE</span> 26745 </li> 26746 <li> 26747 <span class="entry_type_enum_name">TRUE</span> 26748 </li> 26749 </ul> 26750 26751 </td> <!-- entry_type --> 26752 26753 <td class="entry_description"> 26754 <p>Indicates whether a capture request may target both a 26755DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as 26756YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p> 26757 </td> 26758 26759 <td class="entry_units"> 26760 </td> 26761 26762 <td class="entry_range"> 26763 </td> 26764 26765 <td class="entry_tags"> 26766 </td> 26767 26768 </tr> 26769 <tr class="entries_header"> 26770 <th class="th_details" colspan="5">Details</th> 26771 </tr> 26772 <tr class="entry_cont"> 26773 <td class="entry_details" colspan="5"> 26774 <p>If TRUE,<wbr/> including both depth and color outputs in a single 26775capture request is not supported.<wbr/> An application must interleave color 26776and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types 26777of output.<wbr/></p> 26778<p>Typically,<wbr/> this restriction exists on camera devices that 26779need to emit a specific pattern or wavelength of light to 26780measure depth values,<wbr/> which causes the color image to be 26781corrupted during depth measurement.<wbr/></p> 26782 </td> 26783 </tr> 26784 26785 26786 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26787 <!-- end of entry --> 26788 26789 26790 26791 <!-- end of kind --> 26792 </tbody> 26793 26794 <!-- end of section --> 26795<!-- </namespace> --> 26796 </table> 26797 26798 <div class="tags" id="tag_index"> 26799 <h2>Tags</h2> 26800 <ul> 26801 <li id="tag_BC">BC - 26802 Needed for backwards compatibility with old Java API 26803 26804 <ul class="tags_entries"> 26805 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li> 26806 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li> 26807 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li> 26808 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li> 26809 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li> 26810 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li> 26811 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li> 26812 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li> 26813 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li> 26814 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li> 26815 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li> 26816 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> 26817 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li> 26818 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li> 26819 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li> 26820 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li> 26821 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li> 26822 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li> 26823 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li> 26824 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li> 26825 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li> 26826 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li> 26827 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li> 26828 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li> 26829 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li> 26830 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li> 26831 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li> 26832 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li> 26833 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li> 26834 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li> 26835 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li> 26836 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li> 26837 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li> 26838 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li> 26839 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li> 26840 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li> 26841 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li> 26842 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li> 26843 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li> 26844 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li> 26845 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li> 26846 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li> 26847 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 26848 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 26849 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> 26850 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> 26851 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> 26852 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> 26853 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> 26854 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> 26855 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li> 26856 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li> 26857 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li> 26858 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li> 26859 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 26860 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 26861 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 26862 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li> 26863 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li> 26864 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li> 26865 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li> 26866 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li> 26867 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li> 26868 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li> 26869 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li> 26870 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li> 26871 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li> 26872 </ul> 26873 </li> <!-- tag_BC --> 26874 <li id="tag_V1">V1 - 26875 New features for first camera 2 release (API1) 26876 26877 <ul class="tags_entries"> 26878 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li> 26879 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li> 26880 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 26881 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 26882 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 26883 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 26884 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li> 26885 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li> 26886 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li> 26887 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 26888 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li> 26889 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li> 26890 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li> 26891 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 26892 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li> 26893 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li> 26894 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li> 26895 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li> 26896 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li> 26897 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 26898 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 26899 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li> 26900 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li> 26901 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li> 26902 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li> 26903 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> 26904 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li> 26905 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 26906 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li> 26907 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> 26908 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 26909 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li> 26910 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 26911 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li> 26912 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 26913 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 26914 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 26915 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li> 26916 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li> 26917 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 26918 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 26919 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li> 26920 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li> 26921 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li> 26922 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 26923 </ul> 26924 </li> <!-- tag_V1 --> 26925 <li id="tag_RAW">RAW - 26926 Needed for useful RAW image processing and DNG file support 26927 26928 <ul class="tags_entries"> 26929 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 26930 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 26931 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li> 26932 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li> 26933 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 26934 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li> 26935 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li> 26936 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> 26937 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li> 26938 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li> 26939 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li> 26940 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li> 26941 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li> 26942 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li> 26943 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li> 26944 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li> 26945 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li> 26946 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li> 26947 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li> 26948 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li> 26949 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li> 26950 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li> 26951 <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li> 26952 <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li> 26953 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 26954 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 26955 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 26956 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li> 26957 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 26958 </ul> 26959 </li> <!-- tag_RAW --> 26960 <li id="tag_HAL2">HAL2 - 26961 Entry is only used by camera device HAL 2.x 26962 26963 <ul class="tags_entries"> 26964 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li> 26965 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li> 26966 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li> 26967 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li> 26968 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li> 26969 </ul> 26970 </li> <!-- tag_HAL2 --> 26971 <li id="tag_FULL">FULL - 26972 Entry is required for full hardware level devices, and optional for other hardware levels 26973 26974 <ul class="tags_entries"> 26975 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 26976 </ul> 26977 </li> <!-- tag_FULL --> 26978 <li id="tag_DEPTH">DEPTH - 26979 Entry is required for the depth capability. 26980 26981 <ul class="tags_entries"> 26982 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li> 26983 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li> 26984 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li> 26985 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li> 26986 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li> 26987 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li> 26988 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li> 26989 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li> 26990 </ul> 26991 </li> <!-- tag_DEPTH --> 26992 <li id="tag_REPROC">REPROC - 26993 Entry is required for the YUV or PRIVATE reprocessing capability. 26994 26995 <ul class="tags_entries"> 26996 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 26997 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 26998 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 26999 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 27000 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li> 27001 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li> 27002 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li> 27003 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li> 27004 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 27005 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 27006 </ul> 27007 </li> <!-- tag_REPROC --> 27008 <li id="tag_FUTURE">FUTURE - 27009 Entry is under-specified and is not required for now. This is for book-keeping purpose, 27010 do not implement or use it, it may be revised for future. 27011 27012 <ul class="tags_entries"> 27013 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li> 27014 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li> 27015 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li> 27016 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li> 27017 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li> 27018 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li> 27019 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li> 27020 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li> 27021 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li> 27022 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li> 27023 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> 27024 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li> 27025 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li> 27026 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li> 27027 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li> 27028 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li> 27029 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li> 27030 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li> 27031 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li> 27032 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li> 27033 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li> 27034 </ul> 27035 </li> <!-- tag_FUTURE --> 27036 </ul> 27037 </div> 27038 27039 [ <a href="#">top</a> ] 27040 27041</body> 27042</html> 27043