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.4 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 <li 192 ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li> 193 <li 194 ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li> 195 </ul> 196 </li> 197 <li> 198 <span class="toc_kind_header">static</span> 199 <ul class="toc_section"> 200 <li 201 ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li> 202 <li 203 ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li> 204 <li 205 ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li> 206 <li 207 ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li> 208 <li 209 ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li> 210 <li 211 ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li> 212 <li 213 ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li> 214 <li 215 ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li> 216 <li 217 ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li> 218 <li 219 ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li> 220 <li 221 ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li> 222 <li 223 ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li> 224 <li 225 ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li> 226 <li 227 ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li> 228 <li 229 ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li> 230 <li 231 ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li> 232 <li 233 ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li> 234 <li 235 ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li> 236 <li 237 ><a href="#static_android.control.availableModes">android.control.availableModes</a></li> 238 <li 239 ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li> 240 </ul> 241 </li> 242 <li> 243 <span class="toc_kind_header">dynamic</span> 244 <ul class="toc_section"> 245 <li 246 class="toc_deprecated" 247 ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li> 248 <li 249 ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li> 250 <li 251 ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li> 252 <li 253 ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li> 254 <li 255 ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li> 256 <li 257 ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li> 258 <li 259 ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li> 260 <li 261 ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li> 262 <li 263 ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li> 264 <li 265 ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li> 266 <li 267 ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li> 268 <li 269 ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li> 270 <li 271 ><a href="#dynamic_android.control.afState">android.control.afState</a></li> 272 <li 273 class="toc_deprecated" 274 ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li> 275 <li 276 ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li> 277 <li 278 ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li> 279 <li 280 ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li> 281 <li 282 ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li> 283 <li 284 ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li> 285 <li 286 ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li> 287 <li 288 ><a href="#dynamic_android.control.mode">android.control.mode</a></li> 289 <li 290 ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li> 291 <li 292 ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li> 293 <li 294 ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li> 295 <li 296 ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li> 297 </ul> 298 </li> 299 </ul> <!-- toc_section --> 300 </li> 301 <li> 302 <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span> 303 <ul class="toc_section"> 304 <li> 305 <span class="toc_kind_header">controls</span> 306 <ul class="toc_section"> 307 <li 308 ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li> 309 </ul> 310 </li> 311 </ul> <!-- toc_section --> 312 </li> 313 <li> 314 <span class="toc_section_header"><a href="#section_edge">edge</a></span> 315 <ul class="toc_section"> 316 <li> 317 <span class="toc_kind_header">controls</span> 318 <ul class="toc_section"> 319 <li 320 ><a href="#controls_android.edge.mode">android.edge.mode</a></li> 321 <li 322 ><a href="#controls_android.edge.strength">android.edge.strength</a></li> 323 </ul> 324 </li> 325 <li> 326 <span class="toc_kind_header">static</span> 327 <ul class="toc_section"> 328 <li 329 ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li> 330 </ul> 331 </li> 332 <li> 333 <span class="toc_kind_header">dynamic</span> 334 <ul class="toc_section"> 335 <li 336 ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li> 337 </ul> 338 </li> 339 </ul> <!-- toc_section --> 340 </li> 341 <li> 342 <span class="toc_section_header"><a href="#section_flash">flash</a></span> 343 <ul class="toc_section"> 344 <li> 345 <span class="toc_kind_header">controls</span> 346 <ul class="toc_section"> 347 <li 348 ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li> 349 <li 350 ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li> 351 <li 352 ><a href="#controls_android.flash.mode">android.flash.mode</a></li> 353 </ul> 354 </li> 355 <li> 356 <span class="toc_kind_header">static</span> 357 <ul class="toc_section"> 358 359 <li 360 ><a href="#static_android.flash.info.available">android.flash.info.available</a></li> 361 <li 362 ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li> 363 364 <li 365 ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li> 366 <li 367 ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li> 368 </ul> 369 </li> 370 <li> 371 <span class="toc_kind_header">dynamic</span> 372 <ul class="toc_section"> 373 <li 374 ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li> 375 <li 376 ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li> 377 <li 378 ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li> 379 <li 380 ><a href="#dynamic_android.flash.state">android.flash.state</a></li> 381 </ul> 382 </li> 383 </ul> <!-- toc_section --> 384 </li> 385 <li> 386 <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span> 387 <ul class="toc_section"> 388 <li> 389 <span class="toc_kind_header">controls</span> 390 <ul class="toc_section"> 391 <li 392 ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li> 393 </ul> 394 </li> 395 <li> 396 <span class="toc_kind_header">static</span> 397 <ul class="toc_section"> 398 <li 399 ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li> 400 </ul> 401 </li> 402 <li> 403 <span class="toc_kind_header">dynamic</span> 404 <ul class="toc_section"> 405 <li 406 ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li> 407 </ul> 408 </li> 409 </ul> <!-- toc_section --> 410 </li> 411 <li> 412 <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span> 413 <ul class="toc_section"> 414 <li> 415 <span class="toc_kind_header">controls</span> 416 <ul class="toc_section"> 417 <li 418 ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 419 <li 420 ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 421 <li 422 ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 423 <li 424 ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 425 <li 426 ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li> 427 <li 428 ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li> 429 <li 430 ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 431 <li 432 ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 433 </ul> 434 </li> 435 <li> 436 <span class="toc_kind_header">static</span> 437 <ul class="toc_section"> 438 <li 439 ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li> 440 <li 441 ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li> 442 </ul> 443 </li> 444 <li> 445 <span class="toc_kind_header">dynamic</span> 446 <ul class="toc_section"> 447 <li 448 ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li> 449 <li 450 ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li> 451 <li 452 ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li> 453 <li 454 ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li> 455 <li 456 ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li> 457 <li 458 ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li> 459 <li 460 ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li> 461 <li 462 ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li> 463 <li 464 ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li> 465 </ul> 466 </li> 467 </ul> <!-- toc_section --> 468 </li> 469 <li> 470 <span class="toc_section_header"><a href="#section_lens">lens</a></span> 471 <ul class="toc_section"> 472 <li> 473 <span class="toc_kind_header">controls</span> 474 <ul class="toc_section"> 475 <li 476 ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li> 477 <li 478 ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li> 479 <li 480 ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li> 481 <li 482 ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li> 483 <li 484 ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 485 </ul> 486 </li> 487 <li> 488 <span class="toc_kind_header">static</span> 489 <ul class="toc_section"> 490 491 <li 492 ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li> 493 <li 494 ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li> 495 <li 496 ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li> 497 <li 498 ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li> 499 <li 500 ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li> 501 <li 502 ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li> 503 <li 504 ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li> 505 <li 506 ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li> 507 508 <li 509 ><a href="#static_android.lens.facing">android.lens.facing</a></li> 510 <li 511 ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li> 512 <li 513 ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li> 514 <li 515 ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li> 516 <li 517 ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li> 518 </ul> 519 </li> 520 <li> 521 <span class="toc_kind_header">dynamic</span> 522 <ul class="toc_section"> 523 <li 524 ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li> 525 <li 526 ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li> 527 <li 528 ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li> 529 <li 530 ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li> 531 <li 532 ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li> 533 <li 534 ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li> 535 <li 536 ><a href="#dynamic_android.lens.state">android.lens.state</a></li> 537 <li 538 ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li> 539 <li 540 ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li> 541 <li 542 ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li> 543 <li 544 ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li> 545 </ul> 546 </li> 547 </ul> <!-- toc_section --> 548 </li> 549 <li> 550 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span> 551 <ul class="toc_section"> 552 <li> 553 <span class="toc_kind_header">controls</span> 554 <ul class="toc_section"> 555 <li 556 ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 557 <li 558 ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li> 559 </ul> 560 </li> 561 <li> 562 <span class="toc_kind_header">static</span> 563 <ul class="toc_section"> 564 <li 565 ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li> 566 </ul> 567 </li> 568 <li> 569 <span class="toc_kind_header">dynamic</span> 570 <ul class="toc_section"> 571 <li 572 ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li> 573 </ul> 574 </li> 575 </ul> <!-- toc_section --> 576 </li> 577 <li> 578 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span> 579 <ul class="toc_section"> 580 <li> 581 <span class="toc_kind_header">static</span> 582 <ul class="toc_section"> 583 <li 584 class="toc_deprecated" 585 ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li> 586 <li 587 class="toc_deprecated" 588 ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li> 589 <li 590 class="toc_deprecated" 591 ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li> 592 <li 593 class="toc_deprecated" 594 ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li> 595 </ul> 596 </li> 597 <li> 598 <span class="toc_kind_header">dynamic</span> 599 <ul class="toc_section"> 600 <li 601 class="toc_deprecated" 602 ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li> 603 </ul> 604 </li> 605 </ul> <!-- toc_section --> 606 </li> 607 <li> 608 <span class="toc_section_header"><a href="#section_request">request</a></span> 609 <ul class="toc_section"> 610 <li> 611 <span class="toc_kind_header">controls</span> 612 <ul class="toc_section"> 613 <li 614 class="toc_deprecated" 615 ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li> 616 <li 617 ><a href="#controls_android.request.id">android.request.id</a></li> 618 <li 619 class="toc_deprecated" 620 ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li> 621 <li 622 ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li> 623 <li 624 class="toc_deprecated" 625 ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li> 626 <li 627 class="toc_deprecated" 628 ><a href="#controls_android.request.type">android.request.type</a></li> 629 </ul> 630 </li> 631 <li> 632 <span class="toc_kind_header">static</span> 633 <ul class="toc_section"> 634 <li 635 ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li> 636 <li 637 ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li> 638 <li 639 ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li> 640 <li 641 ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li> 642 <li 643 class="toc_deprecated" 644 ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li> 645 <li 646 ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li> 647 <li 648 ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li> 649 <li 650 ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li> 651 <li 652 ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li> 653 <li 654 ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li> 655 <li 656 ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li> 657 <li 658 ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li> 659 </ul> 660 </li> 661 <li> 662 <span class="toc_kind_header">dynamic</span> 663 <ul class="toc_section"> 664 <li 665 class="toc_deprecated" 666 ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li> 667 <li 668 ><a href="#dynamic_android.request.id">android.request.id</a></li> 669 <li 670 ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li> 671 <li 672 class="toc_deprecated" 673 ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li> 674 <li 675 ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li> 676 </ul> 677 </li> 678 </ul> <!-- toc_section --> 679 </li> 680 <li> 681 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span> 682 <ul class="toc_section"> 683 <li> 684 <span class="toc_kind_header">controls</span> 685 <ul class="toc_section"> 686 <li 687 ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 688 </ul> 689 </li> 690 <li> 691 <span class="toc_kind_header">static</span> 692 <ul class="toc_section"> 693 <li 694 class="toc_deprecated" 695 ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li> 696 <li 697 class="toc_deprecated" 698 ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li> 699 <li 700 class="toc_deprecated" 701 ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li> 702 <li 703 ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li> 704 <li 705 class="toc_deprecated" 706 ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li> 707 <li 708 class="toc_deprecated" 709 ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li> 710 <li 711 class="toc_deprecated" 712 ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li> 713 <li 714 class="toc_deprecated" 715 ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li> 716 <li 717 ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li> 718 <li 719 ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li> 720 <li 721 ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li> 722 <li 723 ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li> 724 <li 725 ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li> 726 <li 727 ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li> 728 </ul> 729 </li> 730 <li> 731 <span class="toc_kind_header">dynamic</span> 732 <ul class="toc_section"> 733 <li 734 ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li> 735 </ul> 736 </li> 737 </ul> <!-- toc_section --> 738 </li> 739 <li> 740 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span> 741 <ul class="toc_section"> 742 <li> 743 <span class="toc_kind_header">controls</span> 744 <ul class="toc_section"> 745 <li 746 ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 747 <li 748 ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 749 <li 750 ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 751 <li 752 ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 753 <li 754 ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 755 </ul> 756 </li> 757 <li> 758 <span class="toc_kind_header">static</span> 759 <ul class="toc_section"> 760 761 <li 762 ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li> 763 <li 764 ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li> 765 <li 766 ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li> 767 <li 768 ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li> 769 <li 770 ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li> 771 <li 772 ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li> 773 <li 774 ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li> 775 <li 776 ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li> 777 <li 778 ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li> 779 <li 780 ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li> 781 <li 782 ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li> 783 784 <li 785 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li> 786 <li 787 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li> 788 <li 789 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li> 790 <li 791 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li> 792 <li 793 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li> 794 <li 795 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li> 796 <li 797 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li> 798 <li 799 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li> 800 <li 801 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li> 802 <li 803 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li> 804 <li 805 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li> 806 <li 807 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li> 808 <li 809 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li> 810 <li 811 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li> 812 <li 813 ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li> 814 <li 815 ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li> 816 </ul> 817 </li> 818 <li> 819 <span class="toc_kind_header">dynamic</span> 820 <ul class="toc_section"> 821 <li 822 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li> 823 <li 824 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li> 825 <li 826 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li> 827 <li 828 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li> 829 <li 830 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li> 831 <li 832 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li> 833 <li 834 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li> 835 <li 836 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li> 837 <li 838 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li> 839 <li 840 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li> 841 <li 842 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li> 843 <li 844 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> 845 <li 846 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li> 847 <li 848 ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li> 849 <li 850 ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li> 851 </ul> 852 </li> 853 </ul> <!-- toc_section --> 854 </li> 855 <li> 856 <span class="toc_section_header"><a href="#section_shading">shading</a></span> 857 <ul class="toc_section"> 858 <li> 859 <span class="toc_kind_header">controls</span> 860 <ul class="toc_section"> 861 <li 862 ><a href="#controls_android.shading.mode">android.shading.mode</a></li> 863 <li 864 ><a href="#controls_android.shading.strength">android.shading.strength</a></li> 865 </ul> 866 </li> 867 <li> 868 <span class="toc_kind_header">dynamic</span> 869 <ul class="toc_section"> 870 <li 871 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li> 872 </ul> 873 </li> 874 <li> 875 <span class="toc_kind_header">static</span> 876 <ul class="toc_section"> 877 <li 878 ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li> 879 </ul> 880 </li> 881 </ul> <!-- toc_section --> 882 </li> 883 <li> 884 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span> 885 <ul class="toc_section"> 886 <li> 887 <span class="toc_kind_header">controls</span> 888 <ul class="toc_section"> 889 <li 890 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 891 <li 892 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 893 <li 894 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 895 <li 896 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 897 <li 898 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 899 </ul> 900 </li> 901 <li> 902 <span class="toc_kind_header">static</span> 903 <ul class="toc_section"> 904 905 <li 906 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li> 907 <li 908 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li> 909 <li 910 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li> 911 <li 912 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li> 913 <li 914 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li> 915 <li 916 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li> 917 <li 918 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li> 919 <li 920 ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li> 921 922 </ul> 923 </li> 924 <li> 925 <span class="toc_kind_header">dynamic</span> 926 <ul class="toc_section"> 927 <li 928 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li> 929 <li 930 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li> 931 <li 932 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li> 933 <li 934 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li> 935 <li 936 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li> 937 <li 938 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li> 939 <li 940 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li> 941 <li 942 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li> 943 <li 944 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li> 945 <li 946 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li> 947 <li 948 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li> 949 <li 950 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li> 951 <li 952 class="toc_deprecated" 953 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li> 954 <li 955 class="toc_deprecated" 956 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li> 957 <li 958 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li> 959 <li 960 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li> 961 <li 962 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li> 963 <li 964 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> 965 </ul> 966 </li> 967 </ul> <!-- toc_section --> 968 </li> 969 <li> 970 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span> 971 <ul class="toc_section"> 972 <li> 973 <span class="toc_kind_header">controls</span> 974 <ul class="toc_section"> 975 <li 976 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 977 <li 978 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 979 <li 980 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 981 <li 982 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li> 983 <li 984 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li> 985 <li 986 ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li> 987 <li 988 ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 989 </ul> 990 </li> 991 <li> 992 <span class="toc_kind_header">static</span> 993 <ul class="toc_section"> 994 <li 995 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li> 996 <li 997 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li> 998 </ul> 999 </li> 1000 <li> 1001 <span class="toc_kind_header">dynamic</span> 1002 <ul class="toc_section"> 1003 <li 1004 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li> 1005 <li 1006 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li> 1007 <li 1008 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li> 1009 <li 1010 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li> 1011 <li 1012 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li> 1013 <li 1014 ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li> 1015 <li 1016 ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li> 1017 </ul> 1018 </li> 1019 </ul> <!-- toc_section --> 1020 </li> 1021 <li> 1022 <span class="toc_section_header"><a href="#section_led">led</a></span> 1023 <ul class="toc_section"> 1024 <li> 1025 <span class="toc_kind_header">controls</span> 1026 <ul class="toc_section"> 1027 <li 1028 ><a href="#controls_android.led.transmit">android.led.transmit</a></li> 1029 </ul> 1030 </li> 1031 <li> 1032 <span class="toc_kind_header">dynamic</span> 1033 <ul class="toc_section"> 1034 <li 1035 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li> 1036 </ul> 1037 </li> 1038 <li> 1039 <span class="toc_kind_header">static</span> 1040 <ul class="toc_section"> 1041 <li 1042 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li> 1043 </ul> 1044 </li> 1045 </ul> <!-- toc_section --> 1046 </li> 1047 <li> 1048 <span class="toc_section_header"><a href="#section_info">info</a></span> 1049 <ul class="toc_section"> 1050 <li> 1051 <span class="toc_kind_header">static</span> 1052 <ul class="toc_section"> 1053 <li 1054 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li> 1055 </ul> 1056 </li> 1057 </ul> <!-- toc_section --> 1058 </li> 1059 <li> 1060 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span> 1061 <ul class="toc_section"> 1062 <li> 1063 <span class="toc_kind_header">controls</span> 1064 <ul class="toc_section"> 1065 <li 1066 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li> 1067 </ul> 1068 </li> 1069 <li> 1070 <span class="toc_kind_header">dynamic</span> 1071 <ul class="toc_section"> 1072 <li 1073 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li> 1074 </ul> 1075 </li> 1076 </ul> <!-- toc_section --> 1077 </li> 1078 <li> 1079 <span class="toc_section_header"><a href="#section_sync">sync</a></span> 1080 <ul class="toc_section"> 1081 <li> 1082 <span class="toc_kind_header">dynamic</span> 1083 <ul class="toc_section"> 1084 <li 1085 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li> 1086 </ul> 1087 </li> 1088 <li> 1089 <span class="toc_kind_header">static</span> 1090 <ul class="toc_section"> 1091 <li 1092 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li> 1093 </ul> 1094 </li> 1095 </ul> <!-- toc_section --> 1096 </li> 1097 <li> 1098 <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span> 1099 <ul class="toc_section"> 1100 <li> 1101 <span class="toc_kind_header">controls</span> 1102 <ul class="toc_section"> 1103 <li 1104 ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1105 </ul> 1106 </li> 1107 <li> 1108 <span class="toc_kind_header">dynamic</span> 1109 <ul class="toc_section"> 1110 <li 1111 ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li> 1112 </ul> 1113 </li> 1114 <li> 1115 <span class="toc_kind_header">static</span> 1116 <ul class="toc_section"> 1117 <li 1118 ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li> 1119 </ul> 1120 </li> 1121 </ul> <!-- toc_section --> 1122 </li> 1123 <li> 1124 <span class="toc_section_header"><a href="#section_depth">depth</a></span> 1125 <ul class="toc_section"> 1126 <li> 1127 <span class="toc_kind_header">static</span> 1128 <ul class="toc_section"> 1129 <li 1130 ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li> 1131 <li 1132 ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li> 1133 <li 1134 ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li> 1135 <li 1136 ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li> 1137 <li 1138 ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li> 1139 </ul> 1140 </li> 1141 </ul> <!-- toc_section --> 1142 </li> 1143 </ul> 1144 1145 1146 <h1>Properties</h1> 1147 <table class="properties"> 1148 1149 <thead class="thead_dummy"> 1150 <tr> 1151 <th class="th_name">Property Name</th> 1152 <th class="th_type">Type</th> 1153 <th class="th_description">Description</th> 1154 <th class="th_units">Units</th> 1155 <th class="th_range">Range</th> 1156 <th class="th_tags">Tags</th> 1157 </tr> 1158 </thead> <!-- so that the first occurrence of thead is not 1159 above the first occurrence of tr --> 1160<!-- <namespace name="android"> --> 1161 <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr> 1162 1163 1164 <tr><td colspan="6" class="kind">controls</td></tr> 1165 1166 <thead class="entries_header"> 1167 <tr> 1168 <th class="th_name">Property Name</th> 1169 <th class="th_type">Type</th> 1170 <th class="th_description">Description</th> 1171 <th class="th_units">Units</th> 1172 <th class="th_range">Range</th> 1173 <th class="th_tags">Tags</th> 1174 </tr> 1175 </thead> 1176 1177 <tbody> 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 <tr class="entry" id="controls_android.colorCorrection.mode"> 1189 <td class="entry_name 1190 " rowspan="5"> 1191 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1192 </td> 1193 <td class="entry_type"> 1194 <span class="entry_type_name entry_type_name_enum">byte</span> 1195 1196 <span class="entry_type_visibility"> [public]</span> 1197 1198 1199 <span class="entry_type_hwlevel">[full] </span> 1200 1201 1202 1203 <ul class="entry_type_enum"> 1204 <li> 1205 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> 1206 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1207and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1208<p>All advanced white balance adjustments (not specified 1209by our white balance pipeline) must be disabled.<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 1211TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1212this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1213 </li> 1214 <li> 1215 <span class="entry_type_enum_name">FAST</span> 1216 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1217capture rate relative to sensor raw output.<wbr/></p> 1218<p>Advanced white balance adjustments above and beyond 1219the specified white balance pipeline may be applied.<wbr/></p> 1220<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 1221the camera device uses the last frame's AWB values 1222(or defaults if AWB has never been run).<wbr/></p></span> 1223 </li> 1224 <li> 1225 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1226 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1227quality but the capture rate might be reduced (relative to sensor 1228raw output rate)</p> 1229<p>Advanced white balance adjustments above and beyond 1230the specified white balance pipeline may be applied.<wbr/></p> 1231<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 1232the camera device uses the last frame's AWB values 1233(or defaults if AWB has never been run).<wbr/></p></span> 1234 </li> 1235 </ul> 1236 1237 </td> <!-- entry_type --> 1238 1239 <td class="entry_description"> 1240 <p>The mode control selects how the image data is converted from the 1241sensor's native color into linear sRGB color.<wbr/></p> 1242 </td> 1243 1244 <td class="entry_units"> 1245 </td> 1246 1247 <td class="entry_range"> 1248 </td> 1249 1250 <td class="entry_tags"> 1251 </td> 1252 1253 </tr> 1254 <tr class="entries_header"> 1255 <th class="th_details" colspan="5">Details</th> 1256 </tr> 1257 <tr class="entry_cont"> 1258 <td class="entry_details" colspan="5"> 1259 <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 1260control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1261application controls how the color mapping is performed.<wbr/></p> 1262<p>We define the expected processing pipeline below.<wbr/> For consistency 1263across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1264<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1265do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1266<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1267camera device (in the results) and be roughly correct.<wbr/></p> 1268<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1269FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1270as what was produced by the camera device in the earlier frame.<wbr/></p> 1271<p>The expected processing pipeline is as follows:</p> 1272<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1273<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1274gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1275matrix (applied after demosaic).<wbr/></p> 1276<p>The 4-channel white-balance gains are defined as:</p> 1277<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1278</code></pre> 1279<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1280output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1281These may be identical for a given camera device implementation; if 1282the camera device does not support a separate gain for even/<wbr/>odd green 1283channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1284<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1285<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1286<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 ] 1287</code></pre> 1288<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1289to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1290<p>with colors as follows:</p> 1291<pre><code>r' = I0r + I1g + I2b 1292g' = I3r + I4g + I5b 1293b' = I6r + I7g + I8b 1294</code></pre> 1295<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1296values are clipped to fit within the range.<wbr/></p> 1297 </td> 1298 </tr> 1299 1300 <tr class="entries_header"> 1301 <th class="th_details" colspan="5">HAL Implementation Details</th> 1302 </tr> 1303 <tr class="entry_cont"> 1304 <td class="entry_details" colspan="5"> 1305 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1306on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1307That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1308capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1309 </td> 1310 </tr> 1311 1312 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1313 <!-- end of entry --> 1314 1315 1316 <tr class="entry" id="controls_android.colorCorrection.transform"> 1317 <td class="entry_name 1318 " rowspan="3"> 1319 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1320 </td> 1321 <td class="entry_type"> 1322 <span class="entry_type_name">rational</span> 1323 <span class="entry_type_container">x</span> 1324 1325 <span class="entry_type_array"> 1326 3 x 3 1327 </span> 1328 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1329 1330 1331 <span class="entry_type_hwlevel">[full] </span> 1332 1333 1334 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1335 1336 1337 </td> <!-- entry_type --> 1338 1339 <td class="entry_description"> 1340 <p>A color transform matrix to use to transform 1341from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1342 </td> 1343 1344 <td class="entry_units"> 1345 Unitless scale factors 1346 </td> 1347 1348 <td class="entry_range"> 1349 </td> 1350 1351 <td class="entry_tags"> 1352 </td> 1353 1354 </tr> 1355 <tr class="entries_header"> 1356 <th class="th_details" colspan="5">Details</th> 1357 </tr> 1358 <tr class="entry_cont"> 1359 <td class="entry_details" colspan="5"> 1360 <p>This matrix is either set by the camera device when the request 1361<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1362directly by the application in the request when the 1363<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1364<p>In the latter case,<wbr/> the camera device may round the matrix to account 1365for precision issues; the final rounded matrix should be reported back 1366in this matrix result metadata.<wbr/> The transform should keep the magnitude 1367of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1368values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1369<p>The valid range of each matrix element varies on different devices,<wbr/> but 1370values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1371 </td> 1372 </tr> 1373 1374 1375 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1376 <!-- end of entry --> 1377 1378 1379 <tr class="entry" id="controls_android.colorCorrection.gains"> 1380 <td class="entry_name 1381 " rowspan="5"> 1382 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1383 </td> 1384 <td class="entry_type"> 1385 <span class="entry_type_name">float</span> 1386 <span class="entry_type_container">x</span> 1387 1388 <span class="entry_type_array"> 1389 4 1390 </span> 1391 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1392 1393 1394 <span class="entry_type_hwlevel">[full] </span> 1395 1396 1397 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1398 1399 1400 </td> <!-- entry_type --> 1401 1402 <td class="entry_description"> 1403 <p>Gains applying to Bayer raw color channels for 1404white-balance.<wbr/></p> 1405 </td> 1406 1407 <td class="entry_units"> 1408 Unitless gain factors 1409 </td> 1410 1411 <td class="entry_range"> 1412 </td> 1413 1414 <td class="entry_tags"> 1415 </td> 1416 1417 </tr> 1418 <tr class="entries_header"> 1419 <th class="th_details" colspan="5">Details</th> 1420 </tr> 1421 <tr class="entry_cont"> 1422 <td class="entry_details" colspan="5"> 1423 <p>These per-channel gains are either set by the camera device 1424when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1425TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1426request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1427TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1428<p>The gains in the result metadata are the gains actually 1429applied by the camera device to the current frame.<wbr/></p> 1430<p>The valid range of gains varies on different devices,<wbr/> but gains 1431between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1432device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1433this can create color artifacts.<wbr/></p> 1434 </td> 1435 </tr> 1436 1437 <tr class="entries_header"> 1438 <th class="th_details" colspan="5">HAL Implementation Details</th> 1439 </tr> 1440 <tr class="entry_cont"> 1441 <td class="entry_details" colspan="5"> 1442 <p>The 4-channel white-balance gains are defined in 1443the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1444for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1445is the gain for green pixels on the odd rows.<wbr/></p> 1446<p>If a HAL does not support a separate gain for even/<wbr/>odd green 1447channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1448<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1449 </td> 1450 </tr> 1451 1452 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1453 <!-- end of entry --> 1454 1455 1456 <tr class="entry" id="controls_android.colorCorrection.aberrationMode"> 1457 <td class="entry_name 1458 " rowspan="3"> 1459 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1460 </td> 1461 <td class="entry_type"> 1462 <span class="entry_type_name entry_type_name_enum">byte</span> 1463 1464 <span class="entry_type_visibility"> [public]</span> 1465 1466 1467 <span class="entry_type_hwlevel">[legacy] </span> 1468 1469 1470 1471 <ul class="entry_type_enum"> 1472 <li> 1473 <span class="entry_type_enum_name">OFF</span> 1474 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1475 </li> 1476 <li> 1477 <span class="entry_type_enum_name">FAST</span> 1478 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1479relative to sensor raw output.<wbr/></p></span> 1480 </li> 1481 <li> 1482 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1483 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 1484reduced (relative to sensor raw output rate)</p></span> 1485 </li> 1486 </ul> 1487 1488 </td> <!-- entry_type --> 1489 1490 <td class="entry_description"> 1491 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1492 </td> 1493 1494 <td class="entry_units"> 1495 </td> 1496 1497 <td class="entry_range"> 1498 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1499 </td> 1500 1501 <td class="entry_tags"> 1502 </td> 1503 1504 </tr> 1505 <tr class="entries_header"> 1506 <th class="th_details" colspan="5">Details</th> 1507 </tr> 1508 <tr class="entry_cont"> 1509 <td class="entry_details" colspan="5"> 1510 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1511can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1512the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1513minimize the chromatic artifacts that may occur along the object boundaries in an 1514image.<wbr/></p> 1515<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1516correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1517use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1518capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1519applying aberration correction.<wbr/></p> 1520<p>LEGACY devices will always be in FAST mode.<wbr/></p> 1521 </td> 1522 </tr> 1523 1524 1525 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1526 <!-- end of entry --> 1527 1528 1529 1530 <!-- end of kind --> 1531 </tbody> 1532 <tr><td colspan="6" class="kind">dynamic</td></tr> 1533 1534 <thead class="entries_header"> 1535 <tr> 1536 <th class="th_name">Property Name</th> 1537 <th class="th_type">Type</th> 1538 <th class="th_description">Description</th> 1539 <th class="th_units">Units</th> 1540 <th class="th_range">Range</th> 1541 <th class="th_tags">Tags</th> 1542 </tr> 1543 </thead> 1544 1545 <tbody> 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 <tr class="entry" id="dynamic_android.colorCorrection.mode"> 1557 <td class="entry_name 1558 " rowspan="5"> 1559 android.<wbr/>color<wbr/>Correction.<wbr/>mode 1560 </td> 1561 <td class="entry_type"> 1562 <span class="entry_type_name entry_type_name_enum">byte</span> 1563 1564 <span class="entry_type_visibility"> [public]</span> 1565 1566 1567 <span class="entry_type_hwlevel">[full] </span> 1568 1569 1570 1571 <ul class="entry_type_enum"> 1572 <li> 1573 <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> 1574 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix 1575and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> 1576<p>All advanced white balance adjustments (not specified 1577by our white balance pipeline) must be disabled.<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 1579TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override 1580this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> 1581 </li> 1582 <li> 1583 <span class="entry_type_enum_name">FAST</span> 1584 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down 1585capture rate relative to sensor raw output.<wbr/></p> 1586<p>Advanced white balance adjustments above and beyond 1587the specified white balance pipeline may be applied.<wbr/></p> 1588<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 1589the camera device uses the last frame's AWB values 1590(or defaults if AWB has never been run).<wbr/></p></span> 1591 </li> 1592 <li> 1593 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1594 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved 1595quality but the capture rate might be reduced (relative to sensor 1596raw output rate)</p> 1597<p>Advanced white balance adjustments above and beyond 1598the specified white balance pipeline may be applied.<wbr/></p> 1599<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 1600the camera device uses the last frame's AWB values 1601(or defaults if AWB has never been run).<wbr/></p></span> 1602 </li> 1603 </ul> 1604 1605 </td> <!-- entry_type --> 1606 1607 <td class="entry_description"> 1608 <p>The mode control selects how the image data is converted from the 1609sensor's native color into linear sRGB color.<wbr/></p> 1610 </td> 1611 1612 <td class="entry_units"> 1613 </td> 1614 1615 <td class="entry_range"> 1616 </td> 1617 1618 <td class="entry_tags"> 1619 </td> 1620 1621 </tr> 1622 <tr class="entries_header"> 1623 <th class="th_details" colspan="5">Details</th> 1624 </tr> 1625 <tr class="entry_cont"> 1626 <td class="entry_details" colspan="5"> 1627 <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 1628control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the 1629application controls how the color mapping is performed.<wbr/></p> 1630<p>We define the expected processing pipeline below.<wbr/> For consistency 1631across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1632<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may 1633do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 1634<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the 1635camera device (in the results) and be roughly correct.<wbr/></p> 1636<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from 1637FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point 1638as what was produced by the camera device in the earlier frame.<wbr/></p> 1639<p>The expected processing pipeline is as follows:</p> 1640<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> 1641<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance 1642gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform 1643matrix (applied after demosaic).<wbr/></p> 1644<p>The 4-channel white-balance gains are defined as:</p> 1645<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] 1646</code></pre> 1647<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the 1648output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> 1649These may be identical for a given camera device implementation; if 1650the camera device does not support a separate gain for even/<wbr/>odd green 1651channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to 1652<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1653<p>The matrices for color transforms are defined as a 9-entry vector:</p> 1654<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 ] 1655</code></pre> 1656<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> 1657to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> 1658<p>with colors as follows:</p> 1659<pre><code>r' = I0r + I1g + I2b 1660g' = I3r + I4g + I5b 1661b' = I6r + I7g + I8b 1662</code></pre> 1663<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow 1664values are clipped to fit within the range.<wbr/></p> 1665 </td> 1666 </tr> 1667 1668 <tr class="entries_header"> 1669 <th class="th_details" colspan="5">HAL Implementation Details</th> 1670 </tr> 1671 <tr class="entry_cont"> 1672 <td class="entry_details" colspan="5"> 1673 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available 1674on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1675That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1676capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p> 1677 </td> 1678 </tr> 1679 1680 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1681 <!-- end of entry --> 1682 1683 1684 <tr class="entry" id="dynamic_android.colorCorrection.transform"> 1685 <td class="entry_name 1686 " rowspan="3"> 1687 android.<wbr/>color<wbr/>Correction.<wbr/>transform 1688 </td> 1689 <td class="entry_type"> 1690 <span class="entry_type_name">rational</span> 1691 <span class="entry_type_container">x</span> 1692 1693 <span class="entry_type_array"> 1694 3 x 3 1695 </span> 1696 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 1697 1698 1699 <span class="entry_type_hwlevel">[full] </span> 1700 1701 1702 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 1703 1704 1705 </td> <!-- entry_type --> 1706 1707 <td class="entry_description"> 1708 <p>A color transform matrix to use to transform 1709from sensor RGB color space to output linear sRGB color space.<wbr/></p> 1710 </td> 1711 1712 <td class="entry_units"> 1713 Unitless scale factors 1714 </td> 1715 1716 <td class="entry_range"> 1717 </td> 1718 1719 <td class="entry_tags"> 1720 </td> 1721 1722 </tr> 1723 <tr class="entries_header"> 1724 <th class="th_details" colspan="5">Details</th> 1725 </tr> 1726 <tr class="entry_cont"> 1727 <td class="entry_details" colspan="5"> 1728 <p>This matrix is either set by the camera device when the request 1729<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or 1730directly by the application in the request when the 1731<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1732<p>In the latter case,<wbr/> the camera device may round the matrix to account 1733for precision issues; the final rounded matrix should be reported back 1734in this matrix result metadata.<wbr/> The transform should keep the magnitude 1735of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color 1736values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p> 1737<p>The valid range of each matrix element varies on different devices,<wbr/> but 1738values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 1739 </td> 1740 </tr> 1741 1742 1743 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1744 <!-- end of entry --> 1745 1746 1747 <tr class="entry" id="dynamic_android.colorCorrection.gains"> 1748 <td class="entry_name 1749 " rowspan="5"> 1750 android.<wbr/>color<wbr/>Correction.<wbr/>gains 1751 </td> 1752 <td class="entry_type"> 1753 <span class="entry_type_name">float</span> 1754 <span class="entry_type_container">x</span> 1755 1756 <span class="entry_type_array"> 1757 4 1758 </span> 1759 <span class="entry_type_visibility"> [public as rggbChannelVector]</span> 1760 1761 1762 <span class="entry_type_hwlevel">[full] </span> 1763 1764 1765 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 1766 1767 1768 </td> <!-- entry_type --> 1769 1770 <td class="entry_description"> 1771 <p>Gains applying to Bayer raw color channels for 1772white-balance.<wbr/></p> 1773 </td> 1774 1775 <td class="entry_units"> 1776 Unitless gain factors 1777 </td> 1778 1779 <td class="entry_range"> 1780 </td> 1781 1782 <td class="entry_tags"> 1783 </td> 1784 1785 </tr> 1786 <tr class="entries_header"> 1787 <th class="th_details" colspan="5">Details</th> 1788 </tr> 1789 <tr class="entry_cont"> 1790 <td class="entry_details" colspan="5"> 1791 <p>These per-channel gains are either set by the camera device 1792when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not 1793TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the 1794request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is 1795TRANSFORM_<wbr/>MATRIX.<wbr/></p> 1796<p>The gains in the result metadata are the gains actually 1797applied by the camera device to the current frame.<wbr/></p> 1798<p>The valid range of gains varies on different devices,<wbr/> but gains 1799between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given 1800device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because 1801this can create color artifacts.<wbr/></p> 1802 </td> 1803 </tr> 1804 1805 <tr class="entries_header"> 1806 <th class="th_details" colspan="5">HAL Implementation Details</th> 1807 </tr> 1808 <tr class="entry_cont"> 1809 <td class="entry_details" colspan="5"> 1810 <p>The 4-channel white-balance gains are defined in 1811the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain 1812for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code> 1813is the gain for green pixels on the odd rows.<wbr/></p> 1814<p>If a HAL does not support a separate gain for even/<wbr/>odd green 1815channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write 1816<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> 1817 </td> 1818 </tr> 1819 1820 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1821 <!-- end of entry --> 1822 1823 1824 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode"> 1825 <td class="entry_name 1826 " rowspan="3"> 1827 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode 1828 </td> 1829 <td class="entry_type"> 1830 <span class="entry_type_name entry_type_name_enum">byte</span> 1831 1832 <span class="entry_type_visibility"> [public]</span> 1833 1834 1835 <span class="entry_type_hwlevel">[legacy] </span> 1836 1837 1838 1839 <ul class="entry_type_enum"> 1840 <li> 1841 <span class="entry_type_enum_name">OFF</span> 1842 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span> 1843 </li> 1844 <li> 1845 <span class="entry_type_enum_name">FAST</span> 1846 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate 1847relative to sensor raw output.<wbr/></p></span> 1848 </li> 1849 <li> 1850 <span class="entry_type_enum_name">HIGH_QUALITY</span> 1851 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be 1852reduced (relative to sensor raw output rate)</p></span> 1853 </li> 1854 </ul> 1855 1856 </td> <!-- entry_type --> 1857 1858 <td class="entry_description"> 1859 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p> 1860 </td> 1861 1862 <td class="entry_units"> 1863 </td> 1864 1865 <td class="entry_range"> 1866 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p> 1867 </td> 1868 1869 <td class="entry_tags"> 1870 </td> 1871 1872 </tr> 1873 <tr class="entries_header"> 1874 <th class="th_details" colspan="5">Details</th> 1875 </tr> 1876 <tr class="entry_cont"> 1877 <td class="entry_details" colspan="5"> 1878 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light 1879can not focus on the same point after exiting from the lens.<wbr/> This metadata defines 1880the high level control of chromatic aberration correction algorithm,<wbr/> which aims to 1881minimize the chromatic artifacts that may occur along the object boundaries in an 1882image.<wbr/></p> 1883<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration 1884correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will 1885use the highest-quality aberration correction algorithms,<wbr/> even if it slows down 1886capture rate.<wbr/> FAST means the camera device will not slow down capture rate when 1887applying aberration correction.<wbr/></p> 1888<p>LEGACY devices will always be in FAST mode.<wbr/></p> 1889 </td> 1890 </tr> 1891 1892 1893 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1894 <!-- end of entry --> 1895 1896 1897 1898 <!-- end of kind --> 1899 </tbody> 1900 <tr><td colspan="6" class="kind">static</td></tr> 1901 1902 <thead class="entries_header"> 1903 <tr> 1904 <th class="th_name">Property Name</th> 1905 <th class="th_type">Type</th> 1906 <th class="th_description">Description</th> 1907 <th class="th_units">Units</th> 1908 <th class="th_range">Range</th> 1909 <th class="th_tags">Tags</th> 1910 </tr> 1911 </thead> 1912 1913 <tbody> 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes"> 1925 <td class="entry_name 1926 " rowspan="5"> 1927 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes 1928 </td> 1929 <td class="entry_type"> 1930 <span class="entry_type_name">byte</span> 1931 <span class="entry_type_container">x</span> 1932 1933 <span class="entry_type_array"> 1934 n 1935 </span> 1936 <span class="entry_type_visibility"> [public as enumList]</span> 1937 1938 1939 <span class="entry_type_hwlevel">[legacy] </span> 1940 1941 1942 <div class="entry_type_notes">list of enums</div> 1943 1944 1945 </td> <!-- entry_type --> 1946 1947 <td class="entry_description"> 1948 <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 1949supported by this camera device.<wbr/></p> 1950 </td> 1951 1952 <td class="entry_units"> 1953 </td> 1954 1955 <td class="entry_range"> 1956 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p> 1957 </td> 1958 1959 <td class="entry_tags"> 1960 <ul class="entry_tags"> 1961 <li><a href="#tag_V1">V1</a></li> 1962 </ul> 1963 </td> 1964 1965 </tr> 1966 <tr class="entries_header"> 1967 <th class="th_details" colspan="5">Details</th> 1968 </tr> 1969 <tr class="entry_cont"> 1970 <td class="entry_details" colspan="5"> 1971 <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 1972aberration correction modes are available for a device,<wbr/> this list will solely include 1973OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p> 1974<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list 1975OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p> 1976<p>LEGACY devices will always only support FAST mode.<wbr/></p> 1977 </td> 1978 </tr> 1979 1980 <tr class="entries_header"> 1981 <th class="th_details" colspan="5">HAL Implementation Details</th> 1982 </tr> 1983 <tr class="entry_cont"> 1984 <td class="entry_details" colspan="5"> 1985 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available 1986on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 1987That is,<wbr/> if the highest quality implementation on the camera device does not slow down 1988capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 1989 </td> 1990 </tr> 1991 1992 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 1993 <!-- end of entry --> 1994 1995 1996 1997 <!-- end of kind --> 1998 </tbody> 1999 2000 <!-- end of section --> 2001 <tr><td colspan="6" id="section_control" class="section">control</td></tr> 2002 2003 2004 <tr><td colspan="6" class="kind">controls</td></tr> 2005 2006 <thead class="entries_header"> 2007 <tr> 2008 <th class="th_name">Property Name</th> 2009 <th class="th_type">Type</th> 2010 <th class="th_description">Description</th> 2011 <th class="th_units">Units</th> 2012 <th class="th_range">Range</th> 2013 <th class="th_tags">Tags</th> 2014 </tr> 2015 </thead> 2016 2017 <tbody> 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 <tr class="entry" id="controls_android.control.aeAntibandingMode"> 2029 <td class="entry_name 2030 " rowspan="5"> 2031 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 2032 </td> 2033 <td class="entry_type"> 2034 <span class="entry_type_name entry_type_name_enum">byte</span> 2035 2036 <span class="entry_type_visibility"> [public]</span> 2037 2038 2039 <span class="entry_type_hwlevel">[legacy] </span> 2040 2041 2042 2043 <ul class="entry_type_enum"> 2044 <li> 2045 <span class="entry_type_enum_name">OFF</span> 2046 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 2047avoid banding problems.<wbr/></p></span> 2048 </li> 2049 <li> 2050 <span class="entry_type_enum_name">50HZ</span> 2051 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2052avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 2053 </li> 2054 <li> 2055 <span class="entry_type_enum_name">60HZ</span> 2056 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 2057avoid banding problems with 60Hz illumination 2058sources.<wbr/></p></span> 2059 </li> 2060 <li> 2061 <span class="entry_type_enum_name">AUTO</span> 2062 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 2063antibanding routine to the current illumination 2064condition.<wbr/> This is the default mode if AUTO is 2065available on given camera device.<wbr/></p></span> 2066 </li> 2067 </ul> 2068 2069 </td> <!-- entry_type --> 2070 2071 <td class="entry_description"> 2072 <p>The desired setting for the camera device's auto-exposure 2073algorithm's antibanding compensation.<wbr/></p> 2074 </td> 2075 2076 <td class="entry_units"> 2077 </td> 2078 2079 <td class="entry_range"> 2080 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 2081 </td> 2082 2083 <td class="entry_tags"> 2084 <ul class="entry_tags"> 2085 <li><a href="#tag_BC">BC</a></li> 2086 </ul> 2087 </td> 2088 2089 </tr> 2090 <tr class="entries_header"> 2091 <th class="th_details" colspan="5">Details</th> 2092 </tr> 2093 <tr class="entry_cont"> 2094 <td class="entry_details" colspan="5"> 2095 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 2096lights,<wbr/> flicker at the rate of the power supply frequency 2097(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 2098typically not noticeable to a person,<wbr/> it can be visible to 2099a camera device.<wbr/> If a camera sets its exposure time to the 2100wrong value,<wbr/> the flicker may become visible in the 2101viewfinder as flicker or in a final captured image,<wbr/> as a 2102set of variable-brightness bands across the image.<wbr/></p> 2103<p>Therefore,<wbr/> the auto-exposure routines of camera devices 2104include antibanding routines that ensure that the chosen 2105exposure value will not cause such banding.<wbr/> The choice of 2106exposure time depends on the rate of flicker,<wbr/> which the 2107camera device can detect automatically,<wbr/> or the expected 2108rate can be selected by the application using this 2109control.<wbr/></p> 2110<p>A given camera device may not support all of the possible 2111options for the antibanding mode.<wbr/> The 2112<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 2113the available modes for a given camera device.<wbr/></p> 2114<p>AUTO mode is the default if it is available on given 2115camera device.<wbr/> When AUTO mode is not available,<wbr/> the 2116default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 2117and 60HZ will be available.<wbr/></p> 2118<p>If manual exposure control is enabled (by setting 2119<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/> 2120then this setting has no effect,<wbr/> and the application must 2121ensure it selects exposure times that do not cause banding 2122issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 2123the application in this.<wbr/></p> 2124 </td> 2125 </tr> 2126 2127 <tr class="entries_header"> 2128 <th class="th_details" colspan="5">HAL Implementation Details</th> 2129 </tr> 2130 <tr class="entry_cont"> 2131 <td class="entry_details" colspan="5"> 2132 <p>For all capture request templates,<wbr/> this field must be set 2133to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 2134the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 213560HZ must be available.<wbr/></p> 2136<p>If manual exposure control is enabled (by setting 2137<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/> 2138then the exposure values provided by the application must not be 2139adjusted for antibanding.<wbr/></p> 2140 </td> 2141 </tr> 2142 2143 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2144 <!-- end of entry --> 2145 2146 2147 <tr class="entry" id="controls_android.control.aeExposureCompensation"> 2148 <td class="entry_name 2149 " rowspan="3"> 2150 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 2151 </td> 2152 <td class="entry_type"> 2153 <span class="entry_type_name">int32</span> 2154 2155 <span class="entry_type_visibility"> [public]</span> 2156 2157 2158 <span class="entry_type_hwlevel">[legacy] </span> 2159 2160 2161 2162 2163 </td> <!-- entry_type --> 2164 2165 <td class="entry_description"> 2166 <p>Adjustment to auto-exposure (AE) target image 2167brightness.<wbr/></p> 2168 </td> 2169 2170 <td class="entry_units"> 2171 Compensation steps 2172 </td> 2173 2174 <td class="entry_range"> 2175 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 2176 </td> 2177 2178 <td class="entry_tags"> 2179 <ul class="entry_tags"> 2180 <li><a href="#tag_BC">BC</a></li> 2181 </ul> 2182 </td> 2183 2184 </tr> 2185 <tr class="entries_header"> 2186 <th class="th_details" colspan="5">Details</th> 2187 </tr> 2188 <tr class="entry_cont"> 2189 <td class="entry_details" colspan="5"> 2190 <p>The adjustment is measured as a count of steps,<wbr/> with the 2191step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 2192allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 2193<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 2194will mean an exposure compensation of +2 EV; -3 will mean an 2195exposure compensation of -1 EV.<wbr/> One EV represents a doubling 2196of image brightness.<wbr/> Note that this control will only be 2197effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 2198will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 2199<p>In the event of exposure compensation value being changed,<wbr/> camera device 2200may take several frames to reach the newly requested exposure target.<wbr/> 2201During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 2202state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 2203change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 2204FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 2205 </td> 2206 </tr> 2207 2208 2209 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2210 <!-- end of entry --> 2211 2212 2213 <tr class="entry" id="controls_android.control.aeLock"> 2214 <td class="entry_name 2215 " rowspan="3"> 2216 android.<wbr/>control.<wbr/>ae<wbr/>Lock 2217 </td> 2218 <td class="entry_type"> 2219 <span class="entry_type_name entry_type_name_enum">byte</span> 2220 2221 <span class="entry_type_visibility"> [public as boolean]</span> 2222 2223 2224 <span class="entry_type_hwlevel">[legacy] </span> 2225 2226 2227 2228 <ul class="entry_type_enum"> 2229 <li> 2230 <span class="entry_type_enum_name">OFF</span> 2231 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 2232is free to update its parameters.<wbr/></p></span> 2233 </li> 2234 <li> 2235 <span class="entry_type_enum_name">ON</span> 2236 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 2237must not update the exposure and sensitivity parameters 2238while the lock is active.<wbr/></p> 2239<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 2240will still take effect while auto-exposure is locked.<wbr/></p> 2241<p>Some rare LEGACY devices may not support 2242this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 2243 </li> 2244 </ul> 2245 2246 </td> <!-- entry_type --> 2247 2248 <td class="entry_description"> 2249 <p>Whether auto-exposure (AE) is currently locked to its latest 2250calculated values.<wbr/></p> 2251 </td> 2252 2253 <td class="entry_units"> 2254 </td> 2255 2256 <td class="entry_range"> 2257 </td> 2258 2259 <td class="entry_tags"> 2260 <ul class="entry_tags"> 2261 <li><a href="#tag_BC">BC</a></li> 2262 </ul> 2263 </td> 2264 2265 </tr> 2266 <tr class="entries_header"> 2267 <th class="th_details" colspan="5">Details</th> 2268 </tr> 2269 <tr class="entry_cont"> 2270 <td class="entry_details" colspan="5"> 2271 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 2272and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 2273<p>Note that even when AE is locked,<wbr/> the flash may be fired if 2274the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 2275ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 2276<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 2277is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 2278<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 2279when AE is already locked,<wbr/> the camera device will not change the exposure time 2280(<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>) 2281parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 2282is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 2283<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/> 2284Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 2285<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 2286the AE if AE is locked by the camera device internally during precapture metering 2287sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 2288ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 2289will never succeed in a sequence of preview requests where AE lock is always set 2290to <code>false</code>.<wbr/></p> 2291<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 2292get locked do not necessarily correspond to the settings that were present in the 2293latest capture result received from the camera device,<wbr/> since additional captures 2294and AE updates may have occurred even before the result was sent out.<wbr/> If an 2295application is switching between automatic and manual control and wishes to eliminate 2296any flicker during the switch,<wbr/> the following procedure is recommended:</p> 2297<ol> 2298<li>Starting in auto-AE mode:</li> 2299<li>Lock AE</li> 2300<li>Wait for the first result to be output that has the AE locked</li> 2301<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 2302<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 2303</ol> 2304<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> 2305 </td> 2306 </tr> 2307 2308 2309 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2310 <!-- end of entry --> 2311 2312 2313 <tr class="entry" id="controls_android.control.aeMode"> 2314 <td class="entry_name 2315 " rowspan="3"> 2316 android.<wbr/>control.<wbr/>ae<wbr/>Mode 2317 </td> 2318 <td class="entry_type"> 2319 <span class="entry_type_name entry_type_name_enum">byte</span> 2320 2321 <span class="entry_type_visibility"> [public]</span> 2322 2323 2324 <span class="entry_type_hwlevel">[legacy] </span> 2325 2326 2327 2328 <ul class="entry_type_enum"> 2329 <li> 2330 <span class="entry_type_enum_name">OFF</span> 2331 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 2332<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2333<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 2334<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 2335device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 2336a flash unit for this camera device.<wbr/></p> 2337<p>Note that auto-white balance (AWB) and auto-focus (AF) 2338behavior is device dependent when AE is in OFF mode.<wbr/> 2339To have consistent behavior across different devices,<wbr/> 2340it is recommended to either set AWB and AF to OFF mode 2341or lock AWB and AF before setting AE to OFF.<wbr/> 2342See <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/> 2343<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> 2344for more details.<wbr/></p> 2345<p>LEGACY devices do not support the OFF mode and will 2346override attempts to use this value to ON.<wbr/></p></span> 2347 </li> 2348 <li> 2349 <span class="entry_type_enum_name">ON</span> 2350 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 2351with no flash control.<wbr/></p> 2352<p>The application's values for 2353<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2354<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2355<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 2356application has control over the various 2357android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 2358 </li> 2359 <li> 2360 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 2361 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2362the camera's flash unit,<wbr/> firing it in low-light 2363conditions.<wbr/></p> 2364<p>The flash may be fired during a precapture sequence 2365(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2366may be fired for captures for which the 2367<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2368STILL_<wbr/>CAPTURE</p></span> 2369 </li> 2370 <li> 2371 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 2372 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 2373the camera's flash unit,<wbr/> always firing it for still 2374captures.<wbr/></p> 2375<p>The flash may be fired during a precapture sequence 2376(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 2377will always be fired for captures for which the 2378<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 2379STILL_<wbr/>CAPTURE</p></span> 2380 </li> 2381 <li> 2382 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 2383 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 2384reduction.<wbr/></p> 2385<p>If deemed necessary by the camera device,<wbr/> a red eye 2386reduction flash will fire during the precapture 2387sequence.<wbr/></p></span> 2388 </li> 2389 </ul> 2390 2391 </td> <!-- entry_type --> 2392 2393 <td class="entry_description"> 2394 <p>The desired mode for the camera device's 2395auto-exposure routine.<wbr/></p> 2396 </td> 2397 2398 <td class="entry_units"> 2399 </td> 2400 2401 <td class="entry_range"> 2402 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 2403 </td> 2404 2405 <td class="entry_tags"> 2406 <ul class="entry_tags"> 2407 <li><a href="#tag_BC">BC</a></li> 2408 </ul> 2409 </td> 2410 2411 </tr> 2412 <tr class="entries_header"> 2413 <th class="th_details" colspan="5">Details</th> 2414 </tr> 2415 <tr class="entry_cont"> 2416 <td class="entry_details" colspan="5"> 2417 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 2418AUTO.<wbr/></p> 2419<p>When set to any of the ON modes,<wbr/> the camera device's 2420auto-exposure routine is enabled,<wbr/> overriding the 2421application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 2422and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 2423<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 2424<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 2425is selected,<wbr/> the camera device's flash unit controls are 2426also overridden.<wbr/></p> 2427<p>The FLASH modes are only available if the camera device 2428has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 2429<p>If flash TORCH mode is desired,<wbr/> this field must be set to 2430ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 2431<p>When set to any of the ON modes,<wbr/> the values chosen by the 2432camera device auto-exposure routine for the overridden 2433fields for a given capture will be available in its 2434CaptureResult.<wbr/></p> 2435 </td> 2436 </tr> 2437 2438 2439 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2440 <!-- end of entry --> 2441 2442 2443 <tr class="entry" id="controls_android.control.aeRegions"> 2444 <td class="entry_name 2445 " rowspan="5"> 2446 android.<wbr/>control.<wbr/>ae<wbr/>Regions 2447 </td> 2448 <td class="entry_type"> 2449 <span class="entry_type_name">int32</span> 2450 <span class="entry_type_container">x</span> 2451 2452 <span class="entry_type_array"> 2453 5 x area_count 2454 </span> 2455 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2456 2457 2458 2459 2460 2461 2462 </td> <!-- entry_type --> 2463 2464 <td class="entry_description"> 2465 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 2466 </td> 2467 2468 <td class="entry_units"> 2469 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 2470 </td> 2471 2472 <td class="entry_range"> 2473 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 2474<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 2475 </td> 2476 2477 <td class="entry_tags"> 2478 <ul class="entry_tags"> 2479 <li><a href="#tag_BC">BC</a></li> 2480 </ul> 2481 </td> 2482 2483 </tr> 2484 <tr class="entries_header"> 2485 <th class="th_details" colspan="5">Details</th> 2486 </tr> 2487 <tr class="entry_cont"> 2488 <td class="entry_details" colspan="5"> 2489 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 2490Otherwise will always be present.<wbr/></p> 2491<p>The maximum number of regions supported by the device is determined by the value 2492of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 2493<p>The coordinate system is based on the active pixel array,<wbr/> 2494with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2495(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2496<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2497bottom-right pixel in the active pixel array.<wbr/></p> 2498<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 2499for every pixel in the area.<wbr/> This means that a large metering area 2500with the same weight as a smaller area will have more effect in 2501the metering result.<wbr/> Metering areas can partially overlap and the 2502camera device will add the weights in the overlap region.<wbr/></p> 2503<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 2504region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 2505weight is ignored.<wbr/></p> 2506<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 2507camera device.<wbr/></p> 2508<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 2509capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 2510region and output only the intersection rectangle as the metering region in the result 2511metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 2512not reported in the result metadata.<wbr/></p> 2513 </td> 2514 </tr> 2515 2516 <tr class="entries_header"> 2517 <th class="th_details" colspan="5">HAL Implementation Details</th> 2518 </tr> 2519 <tr class="entry_cont"> 2520 <td class="entry_details" colspan="5"> 2521 <p>The HAL level representation of MeteringRectangle[] is a 2522int[5 * area_<wbr/>count].<wbr/> 2523Every five elements represent a metering region of 2524(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2525The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2526exclusive on xmax and ymax.<wbr/></p> 2527 </td> 2528 </tr> 2529 2530 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2531 <!-- end of entry --> 2532 2533 2534 <tr class="entry" id="controls_android.control.aeTargetFpsRange"> 2535 <td class="entry_name 2536 " rowspan="3"> 2537 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 2538 </td> 2539 <td class="entry_type"> 2540 <span class="entry_type_name">int32</span> 2541 <span class="entry_type_container">x</span> 2542 2543 <span class="entry_type_array"> 2544 2 2545 </span> 2546 <span class="entry_type_visibility"> [public as rangeInt]</span> 2547 2548 2549 <span class="entry_type_hwlevel">[legacy] </span> 2550 2551 2552 2553 2554 </td> <!-- entry_type --> 2555 2556 <td class="entry_description"> 2557 <p>Range over which the auto-exposure routine can 2558adjust the capture frame rate to maintain good 2559exposure.<wbr/></p> 2560 </td> 2561 2562 <td class="entry_units"> 2563 Frames per second (FPS) 2564 </td> 2565 2566 <td class="entry_range"> 2567 <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> 2568 </td> 2569 2570 <td class="entry_tags"> 2571 <ul class="entry_tags"> 2572 <li><a href="#tag_BC">BC</a></li> 2573 </ul> 2574 </td> 2575 2576 </tr> 2577 <tr class="entries_header"> 2578 <th class="th_details" colspan="5">Details</th> 2579 </tr> 2580 <tr class="entry_cont"> 2581 <td class="entry_details" colspan="5"> 2582 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 2583manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 2584<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 2585 </td> 2586 </tr> 2587 2588 2589 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2590 <!-- end of entry --> 2591 2592 2593 <tr class="entry" id="controls_android.control.aePrecaptureTrigger"> 2594 <td class="entry_name 2595 " rowspan="5"> 2596 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 2597 </td> 2598 <td class="entry_type"> 2599 <span class="entry_type_name entry_type_name_enum">byte</span> 2600 2601 <span class="entry_type_visibility"> [public]</span> 2602 2603 2604 <span class="entry_type_hwlevel">[limited] </span> 2605 2606 2607 2608 <ul class="entry_type_enum"> 2609 <li> 2610 <span class="entry_type_enum_name">IDLE</span> 2611 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2612 </li> 2613 <li> 2614 <span class="entry_type_enum_name">START</span> 2615 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 2616by the camera device.<wbr/></p> 2617<p>The exact effect of the precapture trigger depends on 2618the current AE mode and state.<wbr/></p></span> 2619 </li> 2620 <li> 2621 <span class="entry_type_enum_name">CANCEL</span> 2622 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 2623precapture metering sequence,<wbr/> the auto-exposure routine will return to its 2624initial state.<wbr/></p></span> 2625 </li> 2626 </ul> 2627 2628 </td> <!-- entry_type --> 2629 2630 <td class="entry_description"> 2631 <p>Whether the camera device will trigger a precapture 2632metering sequence when it processes this request.<wbr/></p> 2633 </td> 2634 2635 <td class="entry_units"> 2636 </td> 2637 2638 <td class="entry_range"> 2639 </td> 2640 2641 <td class="entry_tags"> 2642 <ul class="entry_tags"> 2643 <li><a href="#tag_BC">BC</a></li> 2644 </ul> 2645 </td> 2646 2647 </tr> 2648 <tr class="entries_header"> 2649 <th class="th_details" colspan="5">Details</th> 2650 </tr> 2651 <tr class="entry_cont"> 2652 <td class="entry_details" colspan="5"> 2653 <p>This entry is normally set to IDLE,<wbr/> or is not 2654included at all in the request settings.<wbr/> When included and 2655set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 2656precapture metering sequence.<wbr/></p> 2657<p>When set to CANCEL,<wbr/> the camera device will cancel any active 2658precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 2659If a precapture metering sequence is already completed,<wbr/> and the camera 2660device has implicitly locked the AE for subsequent still capture,<wbr/> the 2661CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 2662<p>The precapture sequence should be triggered before starting a 2663high-quality still capture for final metering decisions to 2664be made,<wbr/> and for firing pre-capture flash pulses to estimate 2665scene brightness and required final capture flash power,<wbr/> when 2666the flash is enabled.<wbr/></p> 2667<p>Normally,<wbr/> this entry should be set to START for only a 2668single request,<wbr/> and the application should wait until the 2669sequence completes before starting a new one.<wbr/></p> 2670<p>When a precapture metering sequence is finished,<wbr/> the camera device 2671may lock the auto-exposure routine internally to be able to accurately expose the 2672subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 2673For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 2674submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 2675submit 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 2676with <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 2677still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 2678API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 2679internally locked AE if the application doesn't submit a still capture request after 2680the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 2681be used in devices that have earlier API levels.<wbr/></p> 2682<p>The exact effect of auto-exposure (AE) precapture trigger 2683depends on the current AE mode and state; see 2684<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 2685details.<wbr/></p> 2686<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 2687capturing a high-resolution JPEG image will automatically trigger a 2688precapture sequence before the high-resolution capture,<wbr/> including 2689potentially firing a pre-capture flash.<wbr/></p> 2690<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 2691simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 2692the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 2693focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 2694trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 2695changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 2696example.<wbr/></p> 2697<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 2698the camera device will complete them in the optimal order for that device.<wbr/></p> 2699 </td> 2700 </tr> 2701 2702 <tr class="entries_header"> 2703 <th class="th_details" colspan="5">HAL Implementation Details</th> 2704 </tr> 2705 <tr class="entry_cont"> 2706 <td class="entry_details" colspan="5"> 2707 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 2708(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 2709treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 2710AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 2711to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 2712 </td> 2713 </tr> 2714 2715 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2716 <!-- end of entry --> 2717 2718 2719 <tr class="entry" id="controls_android.control.afMode"> 2720 <td class="entry_name 2721 " rowspan="5"> 2722 android.<wbr/>control.<wbr/>af<wbr/>Mode 2723 </td> 2724 <td class="entry_type"> 2725 <span class="entry_type_name entry_type_name_enum">byte</span> 2726 2727 <span class="entry_type_visibility"> [public]</span> 2728 2729 2730 <span class="entry_type_hwlevel">[legacy] </span> 2731 2732 2733 2734 <ul class="entry_type_enum"> 2735 <li> 2736 <span class="entry_type_enum_name">OFF</span> 2737 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 2738<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 2739application.<wbr/></p></span> 2740 </li> 2741 <li> 2742 <span class="entry_type_enum_name">AUTO</span> 2743 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 2744<p>In this mode,<wbr/> the lens does not move unless 2745the autofocus trigger action is called.<wbr/> When that trigger 2746is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2747the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 2748<p>Always supported if lens is not fixed focus.<wbr/></p> 2749<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 2750is fixed-focus.<wbr/></p> 2751<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 2752and sets the AF state to INACTIVE.<wbr/></p></span> 2753 </li> 2754 <li> 2755 <span class="entry_type_enum_name">MACRO</span> 2756 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 2757<p>In this mode,<wbr/> the lens does not move unless the 2758autofocus trigger action is called.<wbr/> When that trigger is 2759activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 2760the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 2761mode is optimized for focusing on objects very close to 2762the camera.<wbr/></p> 2763<p>When that trigger is activated,<wbr/> AF will transition to 2764ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 2765NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 2766position to default,<wbr/> and sets the AF state to 2767INACTIVE.<wbr/></p></span> 2768 </li> 2769 <li> 2770 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 2771 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2772position continually to attempt to provide a 2773constantly-in-focus image stream.<wbr/></p> 2774<p>The focusing behavior should be suitable for good quality 2775video recording; typically this means slower focus 2776movement and no overshoots.<wbr/> When the AF trigger is not 2777involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 2778and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 2779states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 2780the algorithm should immediately transition into 2781AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2782lens position until a cancel AF trigger is received.<wbr/></p> 2783<p>Once cancel is received,<wbr/> the algorithm should transition 2784back to INACTIVE and resume passive scan.<wbr/> Note that this 2785behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 2786ongoing PASSIVE_<wbr/>SCAN must immediately be 2787canceled.<wbr/></p></span> 2788 </li> 2789 <li> 2790 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 2791 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 2792position continually to attempt to provide a 2793constantly-in-focus image stream.<wbr/></p> 2794<p>The focusing behavior should be suitable for still image 2795capture; typically this means focusing as fast as 2796possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 2797algorithm should start in INACTIVE state,<wbr/> and then 2798transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 2799appropriate as it attempts to maintain focus.<wbr/> When the AF 2800trigger is activated,<wbr/> the algorithm should finish its 2801PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 2802AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 2803lens position until a cancel AF trigger is received.<wbr/></p> 2804<p>When the AF cancel trigger is activated,<wbr/> the algorithm 2805should transition back to INACTIVE and then act as if it 2806has just been started.<wbr/></p></span> 2807 </li> 2808 <li> 2809 <span class="entry_type_enum_name">EDOF</span> 2810 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 2811<p>The camera device will produce images with an extended 2812depth of field automatically; no special focusing 2813operations need to be done before taking a picture.<wbr/></p> 2814<p>AF triggers are ignored,<wbr/> and the AF state will always be 2815INACTIVE.<wbr/></p></span> 2816 </li> 2817 </ul> 2818 2819 </td> <!-- entry_type --> 2820 2821 <td class="entry_description"> 2822 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 2823mode it is set to.<wbr/></p> 2824 </td> 2825 2826 <td class="entry_units"> 2827 </td> 2828 2829 <td class="entry_range"> 2830 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 2831 </td> 2832 2833 <td class="entry_tags"> 2834 <ul class="entry_tags"> 2835 <li><a href="#tag_BC">BC</a></li> 2836 </ul> 2837 </td> 2838 2839 </tr> 2840 <tr class="entries_header"> 2841 <th class="th_details" colspan="5">Details</th> 2842 </tr> 2843 <tr class="entry_cont"> 2844 <td class="entry_details" colspan="5"> 2845 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 2846(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 2847when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 2848dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 2849setting <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> 2850<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 2851the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 2852in result metadata.<wbr/></p> 2853 </td> 2854 </tr> 2855 2856 <tr class="entries_header"> 2857 <th class="th_details" colspan="5">HAL Implementation Details</th> 2858 </tr> 2859 <tr class="entry_cont"> 2860 <td class="entry_details" colspan="5"> 2861 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 2862request (<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 2863up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 2864<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 2865locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 2866after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 2867the same focal plane remains in focus.<wbr/></p> 2868<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 2869scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 2870(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 2871same lock behavior as above.<wbr/></p> 2872<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 2873focus 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/> 2874However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 2875manual control.<wbr/></p> 2876<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 2877camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 2878remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 2879by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 2880that will arise on camera modules with open-loop VCMs.<wbr/></p> 2881 </td> 2882 </tr> 2883 2884 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2885 <!-- end of entry --> 2886 2887 2888 <tr class="entry" id="controls_android.control.afRegions"> 2889 <td class="entry_name 2890 " rowspan="5"> 2891 android.<wbr/>control.<wbr/>af<wbr/>Regions 2892 </td> 2893 <td class="entry_type"> 2894 <span class="entry_type_name">int32</span> 2895 <span class="entry_type_container">x</span> 2896 2897 <span class="entry_type_array"> 2898 5 x area_count 2899 </span> 2900 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 2901 2902 2903 2904 2905 2906 2907 </td> <!-- entry_type --> 2908 2909 <td class="entry_description"> 2910 <p>List of metering areas to use for auto-focus.<wbr/></p> 2911 </td> 2912 2913 <td class="entry_units"> 2914 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 2915 </td> 2916 2917 <td class="entry_range"> 2918 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 2919<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 2920 </td> 2921 2922 <td class="entry_tags"> 2923 <ul class="entry_tags"> 2924 <li><a href="#tag_BC">BC</a></li> 2925 </ul> 2926 </td> 2927 2928 </tr> 2929 <tr class="entries_header"> 2930 <th class="th_details" colspan="5">Details</th> 2931 </tr> 2932 <tr class="entry_cont"> 2933 <td class="entry_details" colspan="5"> 2934 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 2935Otherwise will always be present.<wbr/></p> 2936<p>The maximum number of focus areas supported by the device is determined by the value 2937of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 2938<p>The coordinate system is based on the active pixel array,<wbr/> 2939with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 2940(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 2941<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 2942bottom-right pixel in the active pixel array.<wbr/></p> 2943<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 2944for every pixel in the area.<wbr/> This means that a large metering area 2945with the same weight as a smaller area will have more effect in 2946the metering result.<wbr/> Metering areas can partially overlap and the 2947camera device will add the weights in the overlap region.<wbr/></p> 2948<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 2949is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 2950ignored.<wbr/></p> 2951<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 2952camera device.<wbr/></p> 2953<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 2954capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 2955region and output only the intersection rectangle as the metering region in the result 2956metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 2957not reported in the result metadata.<wbr/></p> 2958 </td> 2959 </tr> 2960 2961 <tr class="entries_header"> 2962 <th class="th_details" colspan="5">HAL Implementation Details</th> 2963 </tr> 2964 <tr class="entry_cont"> 2965 <td class="entry_details" colspan="5"> 2966 <p>The HAL level representation of MeteringRectangle[] is a 2967int[5 * area_<wbr/>count].<wbr/> 2968Every five elements represent a metering region of 2969(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 2970The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 2971exclusive on xmax and ymax.<wbr/></p> 2972 </td> 2973 </tr> 2974 2975 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 2976 <!-- end of entry --> 2977 2978 2979 <tr class="entry" id="controls_android.control.afTrigger"> 2980 <td class="entry_name 2981 " rowspan="5"> 2982 android.<wbr/>control.<wbr/>af<wbr/>Trigger 2983 </td> 2984 <td class="entry_type"> 2985 <span class="entry_type_name entry_type_name_enum">byte</span> 2986 2987 <span class="entry_type_visibility"> [public]</span> 2988 2989 2990 <span class="entry_type_hwlevel">[legacy] </span> 2991 2992 2993 2994 <ul class="entry_type_enum"> 2995 <li> 2996 <span class="entry_type_enum_name">IDLE</span> 2997 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 2998 </li> 2999 <li> 3000 <span class="entry_type_enum_name">START</span> 3001 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 3002 </li> 3003 <li> 3004 <span class="entry_type_enum_name">CANCEL</span> 3005 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 3006state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 3007 </li> 3008 </ul> 3009 3010 </td> <!-- entry_type --> 3011 3012 <td class="entry_description"> 3013 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 3014 </td> 3015 3016 <td class="entry_units"> 3017 </td> 3018 3019 <td class="entry_range"> 3020 </td> 3021 3022 <td class="entry_tags"> 3023 <ul class="entry_tags"> 3024 <li><a href="#tag_BC">BC</a></li> 3025 </ul> 3026 </td> 3027 3028 </tr> 3029 <tr class="entries_header"> 3030 <th class="th_details" colspan="5">Details</th> 3031 </tr> 3032 <tr class="entry_cont"> 3033 <td class="entry_details" colspan="5"> 3034 <p>This entry is normally set to IDLE,<wbr/> or is not 3035included at all in the request settings.<wbr/></p> 3036<p>When included and set to START,<wbr/> the camera device will trigger the 3037autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 3038<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 3039and return to its initial AF state.<wbr/></p> 3040<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 3041single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 3042START for multiple captures in a row means restarting the AF operation over 3043and over again.<wbr/></p> 3044<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> 3045<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> 3046simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 3047the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 3048focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 3049trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 3050changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 3051 </td> 3052 </tr> 3053 3054 <tr class="entries_header"> 3055 <th class="th_details" colspan="5">HAL Implementation Details</th> 3056 </tr> 3057 <tr class="entry_cont"> 3058 <td class="entry_details" colspan="5"> 3059 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 3060(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 3061treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 3062AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 3063to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 3064 </td> 3065 </tr> 3066 3067 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3068 <!-- end of entry --> 3069 3070 3071 <tr class="entry" id="controls_android.control.awbLock"> 3072 <td class="entry_name 3073 " rowspan="3"> 3074 android.<wbr/>control.<wbr/>awb<wbr/>Lock 3075 </td> 3076 <td class="entry_type"> 3077 <span class="entry_type_name entry_type_name_enum">byte</span> 3078 3079 <span class="entry_type_visibility"> [public as boolean]</span> 3080 3081 3082 <span class="entry_type_hwlevel">[legacy] </span> 3083 3084 3085 3086 <ul class="entry_type_enum"> 3087 <li> 3088 <span class="entry_type_enum_name">OFF</span> 3089 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 3090algorithm is free to update its parameters if in AUTO 3091mode.<wbr/></p></span> 3092 </li> 3093 <li> 3094 <span class="entry_type_enum_name">ON</span> 3095 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 3096algorithm will not update its parameters while the lock 3097is active.<wbr/></p></span> 3098 </li> 3099 </ul> 3100 3101 </td> <!-- entry_type --> 3102 3103 <td class="entry_description"> 3104 <p>Whether auto-white balance (AWB) is currently locked to its 3105latest calculated values.<wbr/></p> 3106 </td> 3107 3108 <td class="entry_units"> 3109 </td> 3110 3111 <td class="entry_range"> 3112 </td> 3113 3114 <td class="entry_tags"> 3115 <ul class="entry_tags"> 3116 <li><a href="#tag_BC">BC</a></li> 3117 </ul> 3118 </td> 3119 3120 </tr> 3121 <tr class="entries_header"> 3122 <th class="th_details" colspan="5">Details</th> 3123 </tr> 3124 <tr class="entry_cont"> 3125 <td class="entry_details" colspan="5"> 3126 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 3127and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 3128<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 3129get locked do not necessarily correspond to the settings that were present in the 3130latest capture result received from the camera device,<wbr/> since additional captures 3131and AWB updates may have occurred even before the result was sent out.<wbr/> If an 3132application is switching between automatic and manual control and wishes to eliminate 3133any flicker during the switch,<wbr/> the following procedure is recommended:</p> 3134<ol> 3135<li>Starting in auto-AWB mode:</li> 3136<li>Lock AWB</li> 3137<li>Wait for the first result to be output that has the AWB locked</li> 3138<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 3139<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 3140</ol> 3141<p>Note that AWB lock is only meaningful when 3142<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 3143AWB is already fixed to a specific setting.<wbr/></p> 3144<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 3145 </td> 3146 </tr> 3147 3148 3149 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3150 <!-- end of entry --> 3151 3152 3153 <tr class="entry" id="controls_android.control.awbMode"> 3154 <td class="entry_name 3155 " rowspan="3"> 3156 android.<wbr/>control.<wbr/>awb<wbr/>Mode 3157 </td> 3158 <td class="entry_type"> 3159 <span class="entry_type_name entry_type_name_enum">byte</span> 3160 3161 <span class="entry_type_visibility"> [public]</span> 3162 3163 3164 <span class="entry_type_hwlevel">[legacy] </span> 3165 3166 3167 3168 <ul class="entry_type_enum"> 3169 <li> 3170 <span class="entry_type_enum_name">OFF</span> 3171 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 3172<p>The application-selected color transform matrix 3173(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 3174(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 3175device for manual white balance control.<wbr/></p></span> 3176 </li> 3177 <li> 3178 <span class="entry_type_enum_name">AUTO</span> 3179 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 3180<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3181and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3182For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3183values used by the camera device for the transform and gains 3184will be available in the capture result for this request.<wbr/></p></span> 3185 </li> 3186 <li> 3187 <span class="entry_type_enum_name">INCANDESCENT</span> 3188 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3189the camera device uses incandescent light as the assumed scene 3190illumination for white balance.<wbr/></p> 3191<p>While the exact white balance transforms are up to the 3192camera device,<wbr/> they will approximately match the CIE 3193standard illuminant A.<wbr/></p> 3194<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3195and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3196For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3197values used by the camera device for the transform and gains 3198will be available in the capture result for this request.<wbr/></p></span> 3199 </li> 3200 <li> 3201 <span class="entry_type_enum_name">FLUORESCENT</span> 3202 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3203the camera device uses fluorescent light as the assumed scene 3204illumination for white balance.<wbr/></p> 3205<p>While the exact white balance transforms are up to the 3206camera device,<wbr/> they will approximately match the CIE 3207standard illuminant F2.<wbr/></p> 3208<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3209and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3210For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3211values used by the camera device for the transform and gains 3212will be available in the capture result for this request.<wbr/></p></span> 3213 </li> 3214 <li> 3215 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 3216 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3217the camera device uses warm fluorescent light as the assumed scene 3218illumination for white balance.<wbr/></p> 3219<p>While the exact white balance transforms are up to the 3220camera device,<wbr/> they will approximately match the CIE 3221standard illuminant F4.<wbr/></p> 3222<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3223and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3224For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3225values used by the camera device for the transform and gains 3226will be available in the capture result for this request.<wbr/></p></span> 3227 </li> 3228 <li> 3229 <span class="entry_type_enum_name">DAYLIGHT</span> 3230 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3231the camera device uses daylight light as the assumed scene 3232illumination for white balance.<wbr/></p> 3233<p>While the exact white balance transforms are up to the 3234camera device,<wbr/> they will approximately match the CIE 3235standard illuminant D65.<wbr/></p> 3236<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3237and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3238For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3239values used by the camera device for the transform and gains 3240will be available in the capture result for this request.<wbr/></p></span> 3241 </li> 3242 <li> 3243 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 3244 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3245the camera device uses cloudy daylight light as the assumed scene 3246illumination for white balance.<wbr/></p> 3247<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3248and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3249For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3250values used by the camera device for the transform and gains 3251will be available in the capture result for this request.<wbr/></p></span> 3252 </li> 3253 <li> 3254 <span class="entry_type_enum_name">TWILIGHT</span> 3255 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3256the camera device uses twilight light as the assumed scene 3257illumination for white balance.<wbr/></p> 3258<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3259and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3260For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3261values used by the camera device for the transform and gains 3262will be available in the capture result for this request.<wbr/></p></span> 3263 </li> 3264 <li> 3265 <span class="entry_type_enum_name">SHADE</span> 3266 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 3267the camera device uses shade light as the assumed scene 3268illumination for white balance.<wbr/></p> 3269<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 3270and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 3271For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 3272values used by the camera device for the transform and gains 3273will be available in the capture result for this request.<wbr/></p></span> 3274 </li> 3275 </ul> 3276 3277 </td> <!-- entry_type --> 3278 3279 <td class="entry_description"> 3280 <p>Whether auto-white balance (AWB) is currently setting the color 3281transform fields,<wbr/> and what its illumination target 3282is.<wbr/></p> 3283 </td> 3284 3285 <td class="entry_units"> 3286 </td> 3287 3288 <td class="entry_range"> 3289 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 3290 </td> 3291 3292 <td class="entry_tags"> 3293 <ul class="entry_tags"> 3294 <li><a href="#tag_BC">BC</a></li> 3295 </ul> 3296 </td> 3297 3298 </tr> 3299 <tr class="entries_header"> 3300 <th class="th_details" colspan="5">Details</th> 3301 </tr> 3302 <tr class="entry_cont"> 3303 <td class="entry_details" colspan="5"> 3304 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 3305<p>When set to the ON mode,<wbr/> the camera device's auto-white balance 3306routine is enabled,<wbr/> overriding the application's selected 3307<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 3308<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> 3309is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 3310also 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 3311setting AE mode to OFF.<wbr/></p> 3312<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 3313routine is disabled.<wbr/> The application manually controls the white 3314balance 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> 3315and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 3316<p>When set to any other modes,<wbr/> the camera device's auto-white 3317balance routine is disabled.<wbr/> The camera device uses each 3318particular illumination target for white balance 3319adjustment.<wbr/> The application's values for 3320<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 3321<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 3322<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 3323 </td> 3324 </tr> 3325 3326 3327 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3328 <!-- end of entry --> 3329 3330 3331 <tr class="entry" id="controls_android.control.awbRegions"> 3332 <td class="entry_name 3333 " rowspan="5"> 3334 android.<wbr/>control.<wbr/>awb<wbr/>Regions 3335 </td> 3336 <td class="entry_type"> 3337 <span class="entry_type_name">int32</span> 3338 <span class="entry_type_container">x</span> 3339 3340 <span class="entry_type_array"> 3341 5 x area_count 3342 </span> 3343 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 3344 3345 3346 3347 3348 3349 3350 </td> <!-- entry_type --> 3351 3352 <td class="entry_description"> 3353 <p>List of metering areas to use for auto-white-balance illuminant 3354estimation.<wbr/></p> 3355 </td> 3356 3357 <td class="entry_units"> 3358 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 3359 </td> 3360 3361 <td class="entry_range"> 3362 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 3363<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 3364 </td> 3365 3366 <td class="entry_tags"> 3367 <ul class="entry_tags"> 3368 <li><a href="#tag_BC">BC</a></li> 3369 </ul> 3370 </td> 3371 3372 </tr> 3373 <tr class="entries_header"> 3374 <th class="th_details" colspan="5">Details</th> 3375 </tr> 3376 <tr class="entry_cont"> 3377 <td class="entry_details" colspan="5"> 3378 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 3379Otherwise will always be present.<wbr/></p> 3380<p>The maximum number of regions supported by the device is determined by the value 3381of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 3382<p>The coordinate system is based on the active pixel array,<wbr/> 3383with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 3384(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 3385<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 3386bottom-right pixel in the active pixel array.<wbr/></p> 3387<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 3388for every pixel in the area.<wbr/> This means that a large metering area 3389with the same weight as a smaller area will have more effect in 3390the metering result.<wbr/> Metering areas can partially overlap and the 3391camera device will add the weights in the overlap region.<wbr/></p> 3392<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 3393only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 33940 weight is ignored.<wbr/></p> 3395<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 3396camera device.<wbr/></p> 3397<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 3398capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 3399region and output only the intersection rectangle as the metering region in the result 3400metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 3401not reported in the result metadata.<wbr/></p> 3402 </td> 3403 </tr> 3404 3405 <tr class="entries_header"> 3406 <th class="th_details" colspan="5">HAL Implementation Details</th> 3407 </tr> 3408 <tr class="entry_cont"> 3409 <td class="entry_details" colspan="5"> 3410 <p>The HAL level representation of MeteringRectangle[] is a 3411int[5 * area_<wbr/>count].<wbr/> 3412Every five elements represent a metering region of 3413(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 3414The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 3415exclusive on xmax and ymax.<wbr/></p> 3416 </td> 3417 </tr> 3418 3419 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3420 <!-- end of entry --> 3421 3422 3423 <tr class="entry" id="controls_android.control.captureIntent"> 3424 <td class="entry_name 3425 " rowspan="3"> 3426 android.<wbr/>control.<wbr/>capture<wbr/>Intent 3427 </td> 3428 <td class="entry_type"> 3429 <span class="entry_type_name entry_type_name_enum">byte</span> 3430 3431 <span class="entry_type_visibility"> [public]</span> 3432 3433 3434 <span class="entry_type_hwlevel">[legacy] </span> 3435 3436 3437 3438 <ul class="entry_type_enum"> 3439 <li> 3440 <span class="entry_type_enum_name">CUSTOM</span> 3441 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 3442categories.<wbr/> The camera device will default to preview-like 3443behavior.<wbr/></p></span> 3444 </li> 3445 <li> 3446 <span class="entry_type_enum_name">PREVIEW</span> 3447 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 3448<p>The precapture trigger may be used to start off a metering 3449w/<wbr/>flash sequence.<wbr/></p></span> 3450 </li> 3451 <li> 3452 <span class="entry_type_enum_name">STILL_CAPTURE</span> 3453 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 3454use case.<wbr/></p> 3455<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 3456 </li> 3457 <li> 3458 <span class="entry_type_enum_name">VIDEO_RECORD</span> 3459 <span class="entry_type_enum_notes"><p>This request is for a video recording 3460use case.<wbr/></p></span> 3461 </li> 3462 <li> 3463 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 3464 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 3465image while recording video) use case.<wbr/></p> 3466<p>The camera device should take the highest-quality image 3467possible (given the other settings) without disrupting the 3468frame rate of video recording.<wbr/> </p></span> 3469 </li> 3470 <li> 3471 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 3472 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 3473application will stream full-resolution images and 3474reprocess one or several later for a final 3475capture.<wbr/></p></span> 3476 </li> 3477 <li> 3478 <span class="entry_type_enum_name">MANUAL</span> 3479 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 3480the applications want to directly control the capture parameters.<wbr/></p> 3481<p>For example,<wbr/> the application may wish to manually control 3482<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> 3483 </li> 3484 </ul> 3485 3486 </td> <!-- entry_type --> 3487 3488 <td class="entry_description"> 3489 <p>Information to the camera device 3A (auto-exposure,<wbr/> 3490auto-focus,<wbr/> auto-white balance) routines about the purpose 3491of this capture,<wbr/> to help the camera device to decide optimal 3A 3492strategy.<wbr/></p> 3493 </td> 3494 3495 <td class="entry_units"> 3496 </td> 3497 3498 <td class="entry_range"> 3499 </td> 3500 3501 <td class="entry_tags"> 3502 <ul class="entry_tags"> 3503 <li><a href="#tag_BC">BC</a></li> 3504 </ul> 3505 </td> 3506 3507 </tr> 3508 <tr class="entries_header"> 3509 <th class="th_details" colspan="5">Details</th> 3510 </tr> 3511 <tr class="entry_cont"> 3512 <td class="entry_details" colspan="5"> 3513 <p>This control (except for MANUAL) is only effective if 3514<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 3515<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 3516contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if 3517<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are 3518always supported.<wbr/></p> 3519 </td> 3520 </tr> 3521 3522 3523 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3524 <!-- end of entry --> 3525 3526 3527 <tr class="entry" id="controls_android.control.effectMode"> 3528 <td class="entry_name 3529 " rowspan="3"> 3530 android.<wbr/>control.<wbr/>effect<wbr/>Mode 3531 </td> 3532 <td class="entry_type"> 3533 <span class="entry_type_name entry_type_name_enum">byte</span> 3534 3535 <span class="entry_type_visibility"> [public]</span> 3536 3537 3538 <span class="entry_type_hwlevel">[legacy] </span> 3539 3540 3541 3542 <ul class="entry_type_enum"> 3543 <li> 3544 <span class="entry_type_enum_name">OFF</span> 3545 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 3546 </li> 3547 <li> 3548 <span class="entry_type_enum_name">MONO</span> 3549 <span class="entry_type_enum_optional">[optional]</span> 3550 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 3551a single color.<wbr/></p> 3552<p>This will typically be grayscale.<wbr/></p></span> 3553 </li> 3554 <li> 3555 <span class="entry_type_enum_name">NEGATIVE</span> 3556 <span class="entry_type_enum_optional">[optional]</span> 3557 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 3558are inverted.<wbr/></p></span> 3559 </li> 3560 <li> 3561 <span class="entry_type_enum_name">SOLARIZE</span> 3562 <span class="entry_type_enum_optional">[optional]</span> 3563 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 3564image is wholly or partially reversed in 3565tone.<wbr/></p></span> 3566 </li> 3567 <li> 3568 <span class="entry_type_enum_name">SEPIA</span> 3569 <span class="entry_type_enum_optional">[optional]</span> 3570 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 3571gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 3572 </li> 3573 <li> 3574 <span class="entry_type_enum_name">POSTERIZE</span> 3575 <span class="entry_type_enum_optional">[optional]</span> 3576 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 3577discrete regions of tone rather than a continuous 3578gradient of tones.<wbr/></p></span> 3579 </li> 3580 <li> 3581 <span class="entry_type_enum_name">WHITEBOARD</span> 3582 <span class="entry_type_enum_optional">[optional]</span> 3583 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 3584as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 3585 </li> 3586 <li> 3587 <span class="entry_type_enum_name">BLACKBOARD</span> 3588 <span class="entry_type_enum_optional">[optional]</span> 3589 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 3590as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 3591 </li> 3592 <li> 3593 <span class="entry_type_enum_name">AQUA</span> 3594 <span class="entry_type_enum_optional">[optional]</span> 3595 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 3596 </li> 3597 </ul> 3598 3599 </td> <!-- entry_type --> 3600 3601 <td class="entry_description"> 3602 <p>A special color effect to apply.<wbr/></p> 3603 </td> 3604 3605 <td class="entry_units"> 3606 </td> 3607 3608 <td class="entry_range"> 3609 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 3610 </td> 3611 3612 <td class="entry_tags"> 3613 <ul class="entry_tags"> 3614 <li><a href="#tag_BC">BC</a></li> 3615 </ul> 3616 </td> 3617 3618 </tr> 3619 <tr class="entries_header"> 3620 <th class="th_details" colspan="5">Details</th> 3621 </tr> 3622 <tr class="entry_cont"> 3623 <td class="entry_details" colspan="5"> 3624 <p>When this mode is set,<wbr/> a color effect will be applied 3625to images produced by the camera device.<wbr/> The interpretation 3626and implementation of these color effects is left to the 3627implementor of the camera device,<wbr/> and should not be 3628depended on to be consistent (or present) across all 3629devices.<wbr/></p> 3630 </td> 3631 </tr> 3632 3633 3634 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3635 <!-- end of entry --> 3636 3637 3638 <tr class="entry" id="controls_android.control.mode"> 3639 <td class="entry_name 3640 " rowspan="3"> 3641 android.<wbr/>control.<wbr/>mode 3642 </td> 3643 <td class="entry_type"> 3644 <span class="entry_type_name entry_type_name_enum">byte</span> 3645 3646 <span class="entry_type_visibility"> [public]</span> 3647 3648 3649 <span class="entry_type_hwlevel">[legacy] </span> 3650 3651 3652 3653 <ul class="entry_type_enum"> 3654 <li> 3655 <span class="entry_type_enum_name">OFF</span> 3656 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 3657<p>All control by the device's metering and focusing (3A) 3658routines is disabled,<wbr/> and no other settings in 3659android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 3660<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 3661device to select post-processing values for processing 3662blocks that do not allow for manual control,<wbr/> or are not 3663exposed by the camera API.<wbr/></p> 3664<p>However,<wbr/> the camera device's 3A routines may continue to 3665collect statistics and update their internal state so that 3666when control is switched to AUTO mode,<wbr/> good control values 3667can be immediately applied.<wbr/></p></span> 3668 </li> 3669 <li> 3670 <span class="entry_type_enum_name">AUTO</span> 3671 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 3672<p>Manual control of capture parameters is disabled.<wbr/> All 3673controls in android.<wbr/>control.<wbr/>* besides sceneMode take 3674effect.<wbr/></p></span> 3675 </li> 3676 <li> 3677 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 3678 <span class="entry_type_enum_optional">[optional]</span> 3679 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 3680<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 3681control.<wbr/>afMode controls; the camera device will ignore 3682those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 3683FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 3684This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 3685<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 3686contain some modes other than DISABLED).<wbr/></p></span> 3687 </li> 3688 <li> 3689 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 3690 <span class="entry_type_enum_optional">[optional]</span> 3691 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 3692used by camera device background auto-exposure,<wbr/> auto-white balance and 3693auto-focus algorithms (3A) to update their statistics.<wbr/></p> 3694<p>Specifically,<wbr/> the 3A routines are locked to the last 3695values set from a request with AUTO,<wbr/> OFF,<wbr/> or 3696USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 3697collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 3698discarded by the camera device.<wbr/></p></span> 3699 </li> 3700 </ul> 3701 3702 </td> <!-- entry_type --> 3703 3704 <td class="entry_description"> 3705 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 3706routines.<wbr/></p> 3707 </td> 3708 3709 <td class="entry_units"> 3710 </td> 3711 3712 <td class="entry_range"> 3713 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 3714 </td> 3715 3716 <td class="entry_tags"> 3717 <ul class="entry_tags"> 3718 <li><a href="#tag_BC">BC</a></li> 3719 </ul> 3720 </td> 3721 3722 </tr> 3723 <tr class="entries_header"> 3724 <th class="th_details" colspan="5">Details</th> 3725 </tr> 3726 <tr class="entry_cont"> 3727 <td class="entry_details" colspan="5"> 3728 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 3729by the camera device is disabled.<wbr/> The application must set the fields for 3730capture parameters itself.<wbr/></p> 3731<p>When set to AUTO,<wbr/> the individual algorithm controls in 3732android.<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> 3733<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 3734android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 3735one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 3736as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 3737<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 3738<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 3739is that this frame will not be used by camera device background 3A statistics 3740update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 3741where the application doesn't want a 3A manual control capture to affect 3742the subsequent auto 3A capture results.<wbr/></p> 3743 </td> 3744 </tr> 3745 3746 3747 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3748 <!-- end of entry --> 3749 3750 3751 <tr class="entry" id="controls_android.control.sceneMode"> 3752 <td class="entry_name 3753 " rowspan="5"> 3754 android.<wbr/>control.<wbr/>scene<wbr/>Mode 3755 </td> 3756 <td class="entry_type"> 3757 <span class="entry_type_name entry_type_name_enum">byte</span> 3758 3759 <span class="entry_type_visibility"> [public]</span> 3760 3761 3762 <span class="entry_type_hwlevel">[legacy] </span> 3763 3764 3765 3766 <ul class="entry_type_enum"> 3767 <li> 3768 <span class="entry_type_enum_name">DISABLED</span> 3769 <span class="entry_type_enum_value">0</span> 3770 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 3771 </li> 3772 <li> 3773 <span class="entry_type_enum_name">FACE_PRIORITY</span> 3774 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 3775detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 3776auto-exposure routines.<wbr/></p> 3777<p>If face detection statistics are disabled 3778(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/> 3779this should still operate correctly (but will not return 3780face detection statistics to the framework).<wbr/></p> 3781<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 3782<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> 3783remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 3784 </li> 3785 <li> 3786 <span class="entry_type_enum_name">ACTION</span> 3787 <span class="entry_type_enum_optional">[optional]</span> 3788 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 3789<p>Similar to SPORTS.<wbr/></p></span> 3790 </li> 3791 <li> 3792 <span class="entry_type_enum_name">PORTRAIT</span> 3793 <span class="entry_type_enum_optional">[optional]</span> 3794 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 3795 </li> 3796 <li> 3797 <span class="entry_type_enum_name">LANDSCAPE</span> 3798 <span class="entry_type_enum_optional">[optional]</span> 3799 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 3800 </li> 3801 <li> 3802 <span class="entry_type_enum_name">NIGHT</span> 3803 <span class="entry_type_enum_optional">[optional]</span> 3804 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 3805 </li> 3806 <li> 3807 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 3808 <span class="entry_type_enum_optional">[optional]</span> 3809 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 3810settings.<wbr/></p></span> 3811 </li> 3812 <li> 3813 <span class="entry_type_enum_name">THEATRE</span> 3814 <span class="entry_type_enum_optional">[optional]</span> 3815 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 3816remain off.<wbr/></p></span> 3817 </li> 3818 <li> 3819 <span class="entry_type_enum_name">BEACH</span> 3820 <span class="entry_type_enum_optional">[optional]</span> 3821 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 3822 </li> 3823 <li> 3824 <span class="entry_type_enum_name">SNOW</span> 3825 <span class="entry_type_enum_optional">[optional]</span> 3826 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 3827 </li> 3828 <li> 3829 <span class="entry_type_enum_name">SUNSET</span> 3830 <span class="entry_type_enum_optional">[optional]</span> 3831 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 3832 </li> 3833 <li> 3834 <span class="entry_type_enum_name">STEADYPHOTO</span> 3835 <span class="entry_type_enum_optional">[optional]</span> 3836 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 3837device motion (for example: due to hand shake).<wbr/></p></span> 3838 </li> 3839 <li> 3840 <span class="entry_type_enum_name">FIREWORKS</span> 3841 <span class="entry_type_enum_optional">[optional]</span> 3842 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 3843 </li> 3844 <li> 3845 <span class="entry_type_enum_name">SPORTS</span> 3846 <span class="entry_type_enum_optional">[optional]</span> 3847 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 3848<p>Similar to ACTION.<wbr/></p></span> 3849 </li> 3850 <li> 3851 <span class="entry_type_enum_name">PARTY</span> 3852 <span class="entry_type_enum_optional">[optional]</span> 3853 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 3854people.<wbr/></p></span> 3855 </li> 3856 <li> 3857 <span class="entry_type_enum_name">CANDLELIGHT</span> 3858 <span class="entry_type_enum_optional">[optional]</span> 3859 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 3860is a flame.<wbr/></p></span> 3861 </li> 3862 <li> 3863 <span class="entry_type_enum_name">BARCODE</span> 3864 <span class="entry_type_enum_optional">[optional]</span> 3865 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 3866for use by camera applications that wish to read the 3867barcode value.<wbr/></p></span> 3868 </li> 3869 <li> 3870 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span> 3871 <span class="entry_type_enum_deprecated">[deprecated]</span> 3872 <span class="entry_type_enum_optional">[optional]</span> 3873 <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> 3874and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 3875for high speed video recording.<wbr/></p> 3876<p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 3877<p>The supported high speed video sizes and fps ranges are specified in 3878<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 3879output frame rates,<wbr/> the application is only allowed to select video size 3880and fps range combinations listed in this static metadata.<wbr/> The fps range 3881can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 3882<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 3883ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 3884controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 3885and post-processing parameters is possible.<wbr/> All other controls operate the 3886same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 3887android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 3888<ul> 3889<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 3890<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 3891<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 3892<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 3893<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 3894<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 3895<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 3896<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 3897<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 3898<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 3899</ul> 3900<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 3901<ul> 3902<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> 3903<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 3904<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 3905<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 3906</ul> 3907<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 3908be lower than what camera can output,<wbr/> depending on the destination Surfaces for 3909the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 3910the application need check if the video encoder is capable of supporting the 3911high frame rate for a given video size,<wbr/> or it will end up with lower recording 3912frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 3913rate will be bounded by the screen refresh rate.<wbr/></p> 3914<p>The camera device will only support up to 2 output high speed streams 3915(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 3916in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 3917<ul> 3918<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 3919format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 3920min(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> 3921<li>The stream sizes are selected from the sizes reported by 3922<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 3923<li>No processed non-stalling or raw streams are configured.<wbr/></li> 3924</ul> 3925<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 3926<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/> 3927the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 3928and the returned capture result metadata will give the fps range choosen 3929by the camera device.<wbr/></p> 3930<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 3931reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 3932the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 3933 </li> 3934 <li> 3935 <span class="entry_type_enum_name">HDR</span> 3936 <span class="entry_type_enum_optional">[optional]</span> 3937 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 3938<p>In this scene mode,<wbr/> the camera device captures images 3939that keep a larger range of scene illumination levels 3940visible in the final image.<wbr/> For example,<wbr/> when taking a 3941picture of a object in front of a bright window,<wbr/> both 3942the object and the scene through the window may be 3943visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 3944one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 3945HDR mode generally takes much longer to capture a single 3946image,<wbr/> has no user control,<wbr/> and may have other artifacts 3947depending on the HDR method used.<wbr/></p> 3948<p>Therefore,<wbr/> HDR captures operate at a much slower rate 3949than regular captures.<wbr/></p> 3950<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 3951is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 3952STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 3953using a high dynamic range capture technique.<wbr/> On LEGACY 3954devices,<wbr/> captures that target a JPEG-format output will 3955be captured with HDR,<wbr/> and the capture intent is not 3956relevant.<wbr/></p> 3957<p>The HDR capture may involve the device capturing a burst 3958of images internally and combining them into one,<wbr/> or it 3959may involve the device using specialized high dynamic 3960range capture hardware.<wbr/> In all cases,<wbr/> a single image is 3961produced in response to a capture request submitted 3962while in HDR mode.<wbr/></p> 3963<p>Since substantial post-processing is generally needed to 3964produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG 3965outputs are supported for LIMITED/<wbr/>FULL device HDR 3966captures,<wbr/> and only JPEG outputs are supported for LEGACY 3967HDR captures.<wbr/> Using a RAW output for HDR capture is not 3968supported.<wbr/></p> 3969<p>Some devices may also support always-on HDR,<wbr/> which 3970applies HDR processing at full frame rate.<wbr/> For these 3971devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also 3972produce an HDR output with no frame rate impact compared 3973to normal operation,<wbr/> though the quality may be lower 3974than for STILL_<wbr/>CAPTURE intents.<wbr/></p> 3975<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types 3976or capture intents,<wbr/> the images captured will be as if 3977the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span> 3978 </li> 3979 <li> 3980 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span> 3981 <span class="entry_type_enum_optional">[optional]</span> 3982 <span class="entry_type_enum_hidden">[hidden]</span> 3983 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 3984device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 3985under low light conditions.<wbr/></p> 3986<p>The camera device may be tuned to expose the images in a reduced 3987sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 3988if 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/> 3989the camera device auto-exposure routine tuning process may limit the actual 3990exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 3991exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 3992low light may be under-exposed when the sensor max exposure time (bounded by the 3993<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 3994ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 3995camera device auto-exposure routine to increase the sensitivity up to the max 3996sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 3997dark and the max exposure time is reached.<wbr/> The captured images may be noisier 3998compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 3999recommended that the application only use this scene mode when it is capable of 4000reducing the noise level of the captured images.<wbr/></p> 4001<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4002<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> 4003remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 4004 </li> 4005 <li> 4006 <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span> 4007 <span class="entry_type_enum_optional">[optional]</span> 4008 <span class="entry_type_enum_hidden">[hidden]</span> 4009 <span class="entry_type_enum_value">100</span> 4010 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 4011<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 4012customized scene modes.<wbr/></p></span> 4013 </li> 4014 <li> 4015 <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span> 4016 <span class="entry_type_enum_optional">[optional]</span> 4017 <span class="entry_type_enum_hidden">[hidden]</span> 4018 <span class="entry_type_enum_value">127</span> 4019 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 4020<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 4021customized scene modes.<wbr/></p></span> 4022 </li> 4023 </ul> 4024 4025 </td> <!-- entry_type --> 4026 4027 <td class="entry_description"> 4028 <p>Control for which scene mode is currently active.<wbr/></p> 4029 </td> 4030 4031 <td class="entry_units"> 4032 </td> 4033 4034 <td class="entry_range"> 4035 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 4036 </td> 4037 4038 <td class="entry_tags"> 4039 <ul class="entry_tags"> 4040 <li><a href="#tag_BC">BC</a></li> 4041 </ul> 4042 </td> 4043 4044 </tr> 4045 <tr class="entries_header"> 4046 <th class="th_details" colspan="5">Details</th> 4047 </tr> 4048 <tr class="entry_cont"> 4049 <td class="entry_details" colspan="5"> 4050 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 4051capture settings.<wbr/></p> 4052<p>This is the mode that that is active when 4053<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 4054disable <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> 4055while in use.<wbr/></p> 4056<p>The interpretation and implementation of these scene modes is left 4057to the implementor of the camera device.<wbr/> Their behavior will not be 4058consistent across all devices,<wbr/> and any given device may only implement 4059a subset of these modes.<wbr/></p> 4060 </td> 4061 </tr> 4062 4063 <tr class="entries_header"> 4064 <th class="th_details" colspan="5">HAL Implementation Details</th> 4065 </tr> 4066 <tr class="entry_cont"> 4067 <td class="entry_details" colspan="5"> 4068 <p>HAL implementations that include scene modes are expected to provide 4069the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 4070<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 4071<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 4072<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/> 4073the HAL must list supported video size and fps range in 4074<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/> 40751280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming 4076mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture 4077requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/> 4078This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 4079<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 4080capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 4081 </td> 4082 </tr> 4083 4084 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4085 <!-- end of entry --> 4086 4087 4088 <tr class="entry" id="controls_android.control.videoStabilizationMode"> 4089 <td class="entry_name 4090 " rowspan="3"> 4091 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 4092 </td> 4093 <td class="entry_type"> 4094 <span class="entry_type_name entry_type_name_enum">byte</span> 4095 4096 <span class="entry_type_visibility"> [public]</span> 4097 4098 4099 <span class="entry_type_hwlevel">[legacy] </span> 4100 4101 4102 4103 <ul class="entry_type_enum"> 4104 <li> 4105 <span class="entry_type_enum_name">OFF</span> 4106 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 4107 </li> 4108 <li> 4109 <span class="entry_type_enum_name">ON</span> 4110 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 4111 </li> 4112 </ul> 4113 4114 </td> <!-- entry_type --> 4115 4116 <td class="entry_description"> 4117 <p>Whether video stabilization is 4118active.<wbr/></p> 4119 </td> 4120 4121 <td class="entry_units"> 4122 </td> 4123 4124 <td class="entry_range"> 4125 </td> 4126 4127 <td class="entry_tags"> 4128 <ul class="entry_tags"> 4129 <li><a href="#tag_BC">BC</a></li> 4130 </ul> 4131 </td> 4132 4133 </tr> 4134 <tr class="entries_header"> 4135 <th class="th_details" colspan="5">Details</th> 4136 </tr> 4137 <tr class="entry_cont"> 4138 <td class="entry_details" colspan="5"> 4139 <p>Video stabilization automatically warps images from 4140the camera in order to stabilize motion between consecutive frames.<wbr/></p> 4141<p>If enabled,<wbr/> video stabilization can modify the 4142<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 4143<p>Switching between different video stabilization modes may take several 4144frames to initialize,<wbr/> the camera device will report the current mode 4145in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 4146the video stabilization modes in the first several capture results may 4147still be "OFF",<wbr/> and it will become "ON" when the initialization is 4148done.<wbr/></p> 4149<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 4150stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 4151that an output targeting a MediaRecorder or MediaCodec will be stabilized if 4152the recording resolution is less than or equal to 1920 x 1080 (width less than 4153or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 4154frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult 4155<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return 4156OFF if the recording output is not stabilized,<wbr/> or if there are no output 4157Surface types that can be stabilized.<wbr/></p> 4158<p>If a camera device supports both this mode and OIS 4159(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 4160produce undesirable interaction,<wbr/> so it is recommended not to enable 4161both at the same time.<wbr/></p> 4162 </td> 4163 </tr> 4164 4165 4166 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4167 <!-- end of entry --> 4168 4169 4170 <tr class="entry" id="controls_android.control.postRawSensitivityBoost"> 4171 <td class="entry_name 4172 " rowspan="3"> 4173 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost 4174 </td> 4175 <td class="entry_type"> 4176 <span class="entry_type_name">int32</span> 4177 4178 <span class="entry_type_visibility"> [public]</span> 4179 4180 4181 4182 4183 4184 4185 </td> <!-- entry_type --> 4186 4187 <td class="entry_description"> 4188 <p>The amount of additional sensitivity boost applied to output images 4189after RAW sensor data is captured.<wbr/></p> 4190 </td> 4191 4192 <td class="entry_units"> 4193 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity 4194 </td> 4195 4196 <td class="entry_range"> 4197 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p> 4198 </td> 4199 4200 <td class="entry_tags"> 4201 </td> 4202 4203 </tr> 4204 <tr class="entries_header"> 4205 <th class="th_details" colspan="5">Details</th> 4206 </tr> 4207 <tr class="entry_cont"> 4208 <td class="entry_details" colspan="5"> 4209 <p>Some camera devices support additional digital sensitivity boosting in the 4210camera processing pipeline after sensor RAW image is captured.<wbr/> 4211Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not 4212have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p> 4213<p>This key will be <code>null</code> for devices that do not support any RAW format 4214outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 4215present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 4216list <code>100</code> in this key.<wbr/></p> 4217<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the 4218boost to the nearest supported value.<wbr/> 4219The final boost value used will be available in the output capture result.<wbr/></p> 4220<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images 4221of such device will have the total sensitivity of 4222<code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> * <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> /<wbr/> 100</code> 4223The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p> 4224<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 4225OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 4226 </td> 4227 </tr> 4228 4229 4230 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4231 <!-- end of entry --> 4232 4233 4234 <tr class="entry" id="controls_android.control.enableZsl"> 4235 <td class="entry_name 4236 " rowspan="5"> 4237 android.<wbr/>control.<wbr/>enable<wbr/>Zsl 4238 </td> 4239 <td class="entry_type"> 4240 <span class="entry_type_name entry_type_name_enum">byte</span> 4241 4242 <span class="entry_type_visibility"> [public as boolean]</span> 4243 4244 4245 4246 4247 4248 <ul class="entry_type_enum"> 4249 <li> 4250 <span class="entry_type_enum_name">FALSE</span> 4251 <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE must be captured 4252after previous requests.<wbr/></p></span> 4253 </li> 4254 <li> 4255 <span class="entry_type_enum_name">TRUE</span> 4256 <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE may or may not be 4257captured before previous requests.<wbr/></p></span> 4258 </li> 4259 </ul> 4260 4261 </td> <!-- entry_type --> 4262 4263 <td class="entry_description"> 4264 <p>Allow camera device to enable zero-shutter-lag mode for requests with 4265<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p> 4266 </td> 4267 4268 <td class="entry_units"> 4269 </td> 4270 4271 <td class="entry_range"> 4272 </td> 4273 4274 <td class="entry_tags"> 4275 </td> 4276 4277 </tr> 4278 <tr class="entries_header"> 4279 <th class="th_details" colspan="5">Details</th> 4280 </tr> 4281 <tr class="entry_cont"> 4282 <td class="entry_details" colspan="5"> 4283 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with 4284STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to 4285produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the 4286<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/> 4287Therefore,<wbr/> the contents of the output images and the result metadata may be out of order 4288compared to previous regular requests.<wbr/> enableZsl does not affect requests with other 4289capture intents.<wbr/></p> 4290<p>For example,<wbr/> when requests are submitted in the following order: 4291 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW 4292 Request B: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is STILL_<wbr/>CAPTURE</p> 4293<p>The output images for request B may have contents captured before the output images for 4294request A,<wbr/> and the result metadata for request B may be older than the result metadata for 4295request A.<wbr/></p> 4296<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in 4297the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p> 4298<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in 4299TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always 4300<code>false</code> if present.<wbr/></p> 4301<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all 4302capture templates is always <code>false</code> if present.<wbr/></p> 4303<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p> 4304 </td> 4305 </tr> 4306 4307 <tr class="entries_header"> 4308 <th class="th_details" colspan="5">HAL Implementation Details</th> 4309 </tr> 4310 <tr class="entry_cont"> 4311 <td class="entry_details" colspan="5"> 4312 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE 4313capture intent.<wbr/></p> 4314 </td> 4315 </tr> 4316 4317 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4318 <!-- end of entry --> 4319 4320 4321 4322 <!-- end of kind --> 4323 </tbody> 4324 <tr><td colspan="6" class="kind">static</td></tr> 4325 4326 <thead class="entries_header"> 4327 <tr> 4328 <th class="th_name">Property Name</th> 4329 <th class="th_type">Type</th> 4330 <th class="th_description">Description</th> 4331 <th class="th_units">Units</th> 4332 <th class="th_range">Range</th> 4333 <th class="th_tags">Tags</th> 4334 </tr> 4335 </thead> 4336 4337 <tbody> 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes"> 4349 <td class="entry_name 4350 " rowspan="3"> 4351 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes 4352 </td> 4353 <td class="entry_type"> 4354 <span class="entry_type_name">byte</span> 4355 <span class="entry_type_container">x</span> 4356 4357 <span class="entry_type_array"> 4358 n 4359 </span> 4360 <span class="entry_type_visibility"> [public as enumList]</span> 4361 4362 4363 <span class="entry_type_hwlevel">[legacy] </span> 4364 4365 4366 <div class="entry_type_notes">list of enums</div> 4367 4368 4369 </td> <!-- entry_type --> 4370 4371 <td class="entry_description"> 4372 <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 4373supported by this camera device.<wbr/></p> 4374 </td> 4375 4376 <td class="entry_units"> 4377 </td> 4378 4379 <td class="entry_range"> 4380 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p> 4381 </td> 4382 4383 <td class="entry_tags"> 4384 <ul class="entry_tags"> 4385 <li><a href="#tag_BC">BC</a></li> 4386 </ul> 4387 </td> 4388 4389 </tr> 4390 <tr class="entries_header"> 4391 <th class="th_details" colspan="5">Details</th> 4392 </tr> 4393 <tr class="entry_cont"> 4394 <td class="entry_details" colspan="5"> 4395 <p>Not all of the auto-exposure anti-banding modes may be 4396supported by a given camera device.<wbr/> This field lists the 4397valid anti-banding modes that the application may request 4398for this camera device with the 4399<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p> 4400 </td> 4401 </tr> 4402 4403 4404 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4405 <!-- end of entry --> 4406 4407 4408 <tr class="entry" id="static_android.control.aeAvailableModes"> 4409 <td class="entry_name 4410 " rowspan="3"> 4411 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes 4412 </td> 4413 <td class="entry_type"> 4414 <span class="entry_type_name">byte</span> 4415 <span class="entry_type_container">x</span> 4416 4417 <span class="entry_type_array"> 4418 n 4419 </span> 4420 <span class="entry_type_visibility"> [public as enumList]</span> 4421 4422 4423 <span class="entry_type_hwlevel">[legacy] </span> 4424 4425 4426 <div class="entry_type_notes">list of enums</div> 4427 4428 4429 </td> <!-- entry_type --> 4430 4431 <td class="entry_description"> 4432 <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 4433device.<wbr/></p> 4434 </td> 4435 4436 <td class="entry_units"> 4437 </td> 4438 4439 <td class="entry_range"> 4440 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p> 4441 </td> 4442 4443 <td class="entry_tags"> 4444 <ul class="entry_tags"> 4445 <li><a href="#tag_BC">BC</a></li> 4446 </ul> 4447 </td> 4448 4449 </tr> 4450 <tr class="entries_header"> 4451 <th class="th_details" colspan="5">Details</th> 4452 </tr> 4453 <tr class="entry_cont"> 4454 <td class="entry_details" colspan="5"> 4455 <p>Not all the auto-exposure modes may be supported by a 4456given camera device,<wbr/> especially if no flash unit is 4457available.<wbr/> This entry lists the valid modes for 4458<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p> 4459<p>All camera devices support ON,<wbr/> and all camera devices with flash 4460units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p> 4461<p>FULL mode camera devices always support OFF mode,<wbr/> 4462which enables application control of camera exposure time,<wbr/> 4463sensitivity,<wbr/> and frame duration.<wbr/></p> 4464<p>LEGACY mode camera devices never support OFF mode.<wbr/> 4465LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR 4466capability.<wbr/></p> 4467 </td> 4468 </tr> 4469 4470 4471 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4472 <!-- end of entry --> 4473 4474 4475 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges"> 4476 <td class="entry_name 4477 " rowspan="3"> 4478 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges 4479 </td> 4480 <td class="entry_type"> 4481 <span class="entry_type_name">int32</span> 4482 <span class="entry_type_container">x</span> 4483 4484 <span class="entry_type_array"> 4485 2 x n 4486 </span> 4487 <span class="entry_type_visibility"> [public as rangeInt]</span> 4488 4489 4490 <span class="entry_type_hwlevel">[legacy] </span> 4491 4492 4493 <div class="entry_type_notes">list of pairs of frame rates</div> 4494 4495 4496 </td> <!-- entry_type --> 4497 4498 <td class="entry_description"> 4499 <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 4500this camera device.<wbr/></p> 4501 </td> 4502 4503 <td class="entry_units"> 4504 Frames per second (FPS) 4505 </td> 4506 4507 <td class="entry_range"> 4508 </td> 4509 4510 <td class="entry_tags"> 4511 <ul class="entry_tags"> 4512 <li><a href="#tag_BC">BC</a></li> 4513 </ul> 4514 </td> 4515 4516 </tr> 4517 <tr class="entries_header"> 4518 <th class="th_details" colspan="5">Details</th> 4519 </tr> 4520 <tr class="entry_cont"> 4521 <td class="entry_details" colspan="5"> 4522 <p>For devices at the LEGACY level or above:</p> 4523<ul> 4524<li> 4525<p>For constant-framerate recording,<wbr/> for each normal 4526<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a 4527<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has 4528<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in 4529the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/> 4530<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is 4531supported by the device and has 4532<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will 4533always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p> 4534</li> 4535<li> 4536<p>Also,<wbr/> a camera device must either not support any 4537<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> 4538or support at least one 4539normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has 4540<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> >= 24.<wbr/></p> 4541</li> 4542</ul> 4543<p>For devices at the LIMITED level or above:</p> 4544<ul> 4545<li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) 4546and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the 4547maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li> 4548</ul> 4549 </td> 4550 </tr> 4551 4552 4553 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4554 <!-- end of entry --> 4555 4556 4557 <tr class="entry" id="static_android.control.aeCompensationRange"> 4558 <td class="entry_name 4559 " rowspan="1"> 4560 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range 4561 </td> 4562 <td class="entry_type"> 4563 <span class="entry_type_name">int32</span> 4564 <span class="entry_type_container">x</span> 4565 4566 <span class="entry_type_array"> 4567 2 4568 </span> 4569 <span class="entry_type_visibility"> [public as rangeInt]</span> 4570 4571 4572 <span class="entry_type_hwlevel">[legacy] </span> 4573 4574 4575 4576 4577 </td> <!-- entry_type --> 4578 4579 <td class="entry_description"> 4580 <p>Maximum and minimum exposure compensation values for 4581<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/> 4582that are supported by this camera device.<wbr/></p> 4583 </td> 4584 4585 <td class="entry_units"> 4586 </td> 4587 4588 <td class="entry_range"> 4589 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p> 4590<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure 4591compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p> 4592<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> 4593<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> 4594<p>LEGACY devices may support a smaller range than this.<wbr/></p> 4595 </td> 4596 4597 <td class="entry_tags"> 4598 <ul class="entry_tags"> 4599 <li><a href="#tag_BC">BC</a></li> 4600 </ul> 4601 </td> 4602 4603 </tr> 4604 4605 4606 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4607 <!-- end of entry --> 4608 4609 4610 <tr class="entry" id="static_android.control.aeCompensationStep"> 4611 <td class="entry_name 4612 " rowspan="5"> 4613 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step 4614 </td> 4615 <td class="entry_type"> 4616 <span class="entry_type_name">rational</span> 4617 4618 <span class="entry_type_visibility"> [public]</span> 4619 4620 4621 <span class="entry_type_hwlevel">[legacy] </span> 4622 4623 4624 4625 4626 </td> <!-- entry_type --> 4627 4628 <td class="entry_description"> 4629 <p>Smallest step by which the exposure compensation 4630can be changed.<wbr/></p> 4631 </td> 4632 4633 <td class="entry_units"> 4634 Exposure Value (EV) 4635 </td> 4636 4637 <td class="entry_range"> 4638 </td> 4639 4640 <td class="entry_tags"> 4641 <ul class="entry_tags"> 4642 <li><a href="#tag_BC">BC</a></li> 4643 </ul> 4644 </td> 4645 4646 </tr> 4647 <tr class="entries_header"> 4648 <th class="th_details" colspan="5">Details</th> 4649 </tr> 4650 <tr class="entry_cont"> 4651 <td class="entry_details" colspan="5"> 4652 <p>This 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 4653a 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 4654that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p> 4655<p>One unit of EV compensation changes the brightness of the captured image by a factor 4656of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p> 4657 </td> 4658 </tr> 4659 4660 <tr class="entries_header"> 4661 <th class="th_details" colspan="5">HAL Implementation Details</th> 4662 </tr> 4663 <tr class="entry_cont"> 4664 <td class="entry_details" colspan="5"> 4665 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p> 4666 </td> 4667 </tr> 4668 4669 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4670 <!-- end of entry --> 4671 4672 4673 <tr class="entry" id="static_android.control.afAvailableModes"> 4674 <td class="entry_name 4675 " rowspan="3"> 4676 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes 4677 </td> 4678 <td class="entry_type"> 4679 <span class="entry_type_name">byte</span> 4680 <span class="entry_type_container">x</span> 4681 4682 <span class="entry_type_array"> 4683 n 4684 </span> 4685 <span class="entry_type_visibility"> [public as enumList]</span> 4686 4687 4688 <span class="entry_type_hwlevel">[legacy] </span> 4689 4690 4691 <div class="entry_type_notes">List of enums</div> 4692 4693 4694 </td> <!-- entry_type --> 4695 4696 <td class="entry_description"> 4697 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are 4698supported by this camera device.<wbr/></p> 4699 </td> 4700 4701 <td class="entry_units"> 4702 </td> 4703 4704 <td class="entry_range"> 4705 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p> 4706 </td> 4707 4708 <td class="entry_tags"> 4709 <ul class="entry_tags"> 4710 <li><a href="#tag_BC">BC</a></li> 4711 </ul> 4712 </td> 4713 4714 </tr> 4715 <tr class="entries_header"> 4716 <th class="th_details" colspan="5">Details</th> 4717 </tr> 4718 <tr class="entry_cont"> 4719 <td class="entry_details" colspan="5"> 4720 <p>Not all the auto-focus modes may be supported by a 4721given camera device.<wbr/> This entry lists the valid modes for 4722<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p> 4723<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all 4724camera devices with adjustable focuser units 4725(<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> 4726<p>LEGACY devices will support OFF mode only if they support 4727focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to 4728<code>0.<wbr/>0f</code>).<wbr/></p> 4729 </td> 4730 </tr> 4731 4732 4733 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4734 <!-- end of entry --> 4735 4736 4737 <tr class="entry" id="static_android.control.availableEffects"> 4738 <td class="entry_name 4739 " rowspan="3"> 4740 android.<wbr/>control.<wbr/>available<wbr/>Effects 4741 </td> 4742 <td class="entry_type"> 4743 <span class="entry_type_name">byte</span> 4744 <span class="entry_type_container">x</span> 4745 4746 <span class="entry_type_array"> 4747 n 4748 </span> 4749 <span class="entry_type_visibility"> [public as enumList]</span> 4750 4751 4752 <span class="entry_type_hwlevel">[legacy] </span> 4753 4754 4755 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div> 4756 4757 4758 </td> <!-- entry_type --> 4759 4760 <td class="entry_description"> 4761 <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 4762device.<wbr/></p> 4763 </td> 4764 4765 <td class="entry_units"> 4766 </td> 4767 4768 <td class="entry_range"> 4769 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p> 4770 </td> 4771 4772 <td class="entry_tags"> 4773 <ul class="entry_tags"> 4774 <li><a href="#tag_BC">BC</a></li> 4775 </ul> 4776 </td> 4777 4778 </tr> 4779 <tr class="entries_header"> 4780 <th class="th_details" colspan="5">Details</th> 4781 </tr> 4782 <tr class="entry_cont"> 4783 <td class="entry_details" colspan="5"> 4784 <p>This list contains the color effect modes that can be applied to 4785images produced by the camera device.<wbr/> 4786Implementations are not expected to be consistent across all devices.<wbr/> 4787If no color effect modes are available for a device,<wbr/> this will only list 4788OFF.<wbr/></p> 4789<p>A color effect will only be applied if 4790<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p> 4791<p>This control has no effect on the operation of other control routines such 4792as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p> 4793 </td> 4794 </tr> 4795 4796 4797 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4798 <!-- end of entry --> 4799 4800 4801 <tr class="entry" id="static_android.control.availableSceneModes"> 4802 <td class="entry_name 4803 " rowspan="3"> 4804 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes 4805 </td> 4806 <td class="entry_type"> 4807 <span class="entry_type_name">byte</span> 4808 <span class="entry_type_container">x</span> 4809 4810 <span class="entry_type_array"> 4811 n 4812 </span> 4813 <span class="entry_type_visibility"> [public as enumList]</span> 4814 4815 4816 <span class="entry_type_hwlevel">[legacy] </span> 4817 4818 4819 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div> 4820 4821 4822 </td> <!-- entry_type --> 4823 4824 <td class="entry_description"> 4825 <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 4826device.<wbr/></p> 4827 </td> 4828 4829 <td class="entry_units"> 4830 </td> 4831 4832 <td class="entry_range"> 4833 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p> 4834 </td> 4835 4836 <td class="entry_tags"> 4837 <ul class="entry_tags"> 4838 <li><a href="#tag_BC">BC</a></li> 4839 </ul> 4840 </td> 4841 4842 </tr> 4843 <tr class="entries_header"> 4844 <th class="th_details" colspan="5">Details</th> 4845 </tr> 4846 <tr class="entry_cont"> 4847 <td class="entry_details" colspan="5"> 4848 <p>This list contains scene modes that can be set for the camera device.<wbr/> 4849Only scene modes that have been fully implemented for the 4850camera device may be included here.<wbr/> Implementations are not expected 4851to be consistent across all devices.<wbr/></p> 4852<p>If no scene modes are supported by the camera device,<wbr/> this 4853will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p> 4854<p>FACE_<wbr/>PRIORITY is always listed if face detection is 4855supported (i.<wbr/>e.<wbr/><code><a href="#static_android.statistics.info.maxFaceCount">android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count</a> > 48560</code>).<wbr/></p> 4857 </td> 4858 </tr> 4859 4860 4861 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4862 <!-- end of entry --> 4863 4864 4865 <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> 4866 <td class="entry_name 4867 " rowspan="3"> 4868 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes 4869 </td> 4870 <td class="entry_type"> 4871 <span class="entry_type_name">byte</span> 4872 <span class="entry_type_container">x</span> 4873 4874 <span class="entry_type_array"> 4875 n 4876 </span> 4877 <span class="entry_type_visibility"> [public as enumList]</span> 4878 4879 4880 <span class="entry_type_hwlevel">[legacy] </span> 4881 4882 4883 <div class="entry_type_notes">List of enums.<wbr/></div> 4884 4885 4886 </td> <!-- entry_type --> 4887 4888 <td class="entry_description"> 4889 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> 4890that are supported by this camera device.<wbr/></p> 4891 </td> 4892 4893 <td class="entry_units"> 4894 </td> 4895 4896 <td class="entry_range"> 4897 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p> 4898 </td> 4899 4900 <td class="entry_tags"> 4901 <ul class="entry_tags"> 4902 <li><a href="#tag_BC">BC</a></li> 4903 </ul> 4904 </td> 4905 4906 </tr> 4907 <tr class="entries_header"> 4908 <th class="th_details" colspan="5">Details</th> 4909 </tr> 4910 <tr class="entry_cont"> 4911 <td class="entry_details" colspan="5"> 4912 <p>OFF will always be listed.<wbr/></p> 4913 </td> 4914 </tr> 4915 4916 4917 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4918 <!-- end of entry --> 4919 4920 4921 <tr class="entry" id="static_android.control.awbAvailableModes"> 4922 <td class="entry_name 4923 " rowspan="3"> 4924 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes 4925 </td> 4926 <td class="entry_type"> 4927 <span class="entry_type_name">byte</span> 4928 <span class="entry_type_container">x</span> 4929 4930 <span class="entry_type_array"> 4931 n 4932 </span> 4933 <span class="entry_type_visibility"> [public as enumList]</span> 4934 4935 4936 <span class="entry_type_hwlevel">[legacy] </span> 4937 4938 4939 <div class="entry_type_notes">List of enums</div> 4940 4941 4942 </td> <!-- entry_type --> 4943 4944 <td class="entry_description"> 4945 <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 4946camera device.<wbr/></p> 4947 </td> 4948 4949 <td class="entry_units"> 4950 </td> 4951 4952 <td class="entry_range"> 4953 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p> 4954 </td> 4955 4956 <td class="entry_tags"> 4957 <ul class="entry_tags"> 4958 <li><a href="#tag_BC">BC</a></li> 4959 </ul> 4960 </td> 4961 4962 </tr> 4963 <tr class="entries_header"> 4964 <th class="th_details" colspan="5">Details</th> 4965 </tr> 4966 <tr class="entry_cont"> 4967 <td class="entry_details" colspan="5"> 4968 <p>Not all the auto-white-balance modes may be supported by a 4969given camera device.<wbr/> This entry lists the valid modes for 4970<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p> 4971<p>All camera devices will support ON mode.<wbr/></p> 4972<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF 4973mode,<wbr/> which enables application control of white balance,<wbr/> by using 4974<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 4975mode camera devices.<wbr/></p> 4976 </td> 4977 </tr> 4978 4979 4980 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 4981 <!-- end of entry --> 4982 4983 4984 <tr class="entry" id="static_android.control.maxRegions"> 4985 <td class="entry_name 4986 " rowspan="1"> 4987 android.<wbr/>control.<wbr/>max<wbr/>Regions 4988 </td> 4989 <td class="entry_type"> 4990 <span class="entry_type_name">int32</span> 4991 <span class="entry_type_container">x</span> 4992 4993 <span class="entry_type_array"> 4994 3 4995 </span> 4996 <span class="entry_type_visibility"> [ndk_public]</span> 4997 4998 4999 <span class="entry_type_hwlevel">[legacy] </span> 5000 5001 5002 5003 5004 </td> <!-- entry_type --> 5005 5006 <td class="entry_description"> 5007 <p>List of the maximum number of regions that can be used for metering in 5008auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); 5009this corresponds to the the maximum number of elements in 5010<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/> 5011and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 5012 </td> 5013 5014 <td class="entry_units"> 5015 </td> 5016 5017 <td class="entry_range"> 5018 <p>Value must be >= 0 for each element.<wbr/> For full-capability devices 5019this value must be >= 1 for AE and AF.<wbr/> The order of the elements is: 5020<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p> 5021 </td> 5022 5023 <td class="entry_tags"> 5024 <ul class="entry_tags"> 5025 <li><a href="#tag_BC">BC</a></li> 5026 </ul> 5027 </td> 5028 5029 </tr> 5030 5031 5032 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5033 <!-- end of entry --> 5034 5035 5036 <tr class="entry" id="static_android.control.maxRegionsAe"> 5037 <td class="entry_name 5038 " rowspan="5"> 5039 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae 5040 </td> 5041 <td class="entry_type"> 5042 <span class="entry_type_name">int32</span> 5043 5044 <span class="entry_type_visibility"> [java_public]</span> 5045 5046 <span class="entry_type_synthetic">[synthetic] </span> 5047 5048 <span class="entry_type_hwlevel">[legacy] </span> 5049 5050 5051 5052 5053 </td> <!-- entry_type --> 5054 5055 <td class="entry_description"> 5056 <p>The maximum number of metering regions that can be used by the auto-exposure (AE) 5057routine.<wbr/></p> 5058 </td> 5059 5060 <td class="entry_units"> 5061 </td> 5062 5063 <td class="entry_range"> 5064 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 5065value will be >= 1.<wbr/></p> 5066 </td> 5067 5068 <td class="entry_tags"> 5069 </td> 5070 5071 </tr> 5072 <tr class="entries_header"> 5073 <th class="th_details" colspan="5">Details</th> 5074 </tr> 5075 <tr class="entry_cont"> 5076 <td class="entry_details" colspan="5"> 5077 <p>This corresponds to the the maximum allowed number of elements in 5078<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p> 5079 </td> 5080 </tr> 5081 5082 <tr class="entries_header"> 5083 <th class="th_details" colspan="5">HAL Implementation Details</th> 5084 </tr> 5085 <tr class="entry_cont"> 5086 <td class="entry_details" colspan="5"> 5087 <p>This entry is private to the framework.<wbr/> Fill in 5088maxRegions to have this entry be automatically populated.<wbr/></p> 5089 </td> 5090 </tr> 5091 5092 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5093 <!-- end of entry --> 5094 5095 5096 <tr class="entry" id="static_android.control.maxRegionsAwb"> 5097 <td class="entry_name 5098 " rowspan="5"> 5099 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb 5100 </td> 5101 <td class="entry_type"> 5102 <span class="entry_type_name">int32</span> 5103 5104 <span class="entry_type_visibility"> [java_public]</span> 5105 5106 <span class="entry_type_synthetic">[synthetic] </span> 5107 5108 <span class="entry_type_hwlevel">[legacy] </span> 5109 5110 5111 5112 5113 </td> <!-- entry_type --> 5114 5115 <td class="entry_description"> 5116 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB) 5117routine.<wbr/></p> 5118 </td> 5119 5120 <td class="entry_units"> 5121 </td> 5122 5123 <td class="entry_range"> 5124 <p>Value will be >= 0.<wbr/></p> 5125 </td> 5126 5127 <td class="entry_tags"> 5128 </td> 5129 5130 </tr> 5131 <tr class="entries_header"> 5132 <th class="th_details" colspan="5">Details</th> 5133 </tr> 5134 <tr class="entry_cont"> 5135 <td class="entry_details" colspan="5"> 5136 <p>This corresponds to the the maximum allowed number of elements in 5137<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p> 5138 </td> 5139 </tr> 5140 5141 <tr class="entries_header"> 5142 <th class="th_details" colspan="5">HAL Implementation Details</th> 5143 </tr> 5144 <tr class="entry_cont"> 5145 <td class="entry_details" colspan="5"> 5146 <p>This entry is private to the framework.<wbr/> Fill in 5147maxRegions to have this entry be automatically populated.<wbr/></p> 5148 </td> 5149 </tr> 5150 5151 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5152 <!-- end of entry --> 5153 5154 5155 <tr class="entry" id="static_android.control.maxRegionsAf"> 5156 <td class="entry_name 5157 " rowspan="5"> 5158 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af 5159 </td> 5160 <td class="entry_type"> 5161 <span class="entry_type_name">int32</span> 5162 5163 <span class="entry_type_visibility"> [java_public]</span> 5164 5165 <span class="entry_type_synthetic">[synthetic] </span> 5166 5167 <span class="entry_type_hwlevel">[legacy] </span> 5168 5169 5170 5171 5172 </td> <!-- entry_type --> 5173 5174 <td class="entry_description"> 5175 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p> 5176 </td> 5177 5178 <td class="entry_units"> 5179 </td> 5180 5181 <td class="entry_range"> 5182 <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this 5183value will be >= 1.<wbr/></p> 5184 </td> 5185 5186 <td class="entry_tags"> 5187 </td> 5188 5189 </tr> 5190 <tr class="entries_header"> 5191 <th class="th_details" colspan="5">Details</th> 5192 </tr> 5193 <tr class="entry_cont"> 5194 <td class="entry_details" colspan="5"> 5195 <p>This corresponds to the the maximum allowed number of elements in 5196<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> 5197 </td> 5198 </tr> 5199 5200 <tr class="entries_header"> 5201 <th class="th_details" colspan="5">HAL Implementation Details</th> 5202 </tr> 5203 <tr class="entry_cont"> 5204 <td class="entry_details" colspan="5"> 5205 <p>This entry is private to the framework.<wbr/> Fill in 5206maxRegions to have this entry be automatically populated.<wbr/></p> 5207 </td> 5208 </tr> 5209 5210 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5211 <!-- end of entry --> 5212 5213 5214 <tr class="entry" id="static_android.control.sceneModeOverrides"> 5215 <td class="entry_name 5216 " rowspan="5"> 5217 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides 5218 </td> 5219 <td class="entry_type"> 5220 <span class="entry_type_name">byte</span> 5221 <span class="entry_type_container">x</span> 5222 5223 <span class="entry_type_array"> 5224 3 x length(availableSceneModes) 5225 </span> 5226 <span class="entry_type_visibility"> [system]</span> 5227 5228 5229 <span class="entry_type_hwlevel">[limited] </span> 5230 5231 5232 5233 5234 </td> <!-- entry_type --> 5235 5236 <td class="entry_description"> 5237 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus 5238settings to use with each available scene mode.<wbr/></p> 5239 </td> 5240 5241 <td class="entry_units"> 5242 </td> 5243 5244 <td class="entry_range"> 5245 <p>For each available scene mode,<wbr/> the list must contain three 5246entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5247<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 5248by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> 5249where aeMode has the lowest index position.<wbr/></p> 5250 </td> 5251 5252 <td class="entry_tags"> 5253 <ul class="entry_tags"> 5254 <li><a href="#tag_BC">BC</a></li> 5255 </ul> 5256 </td> 5257 5258 </tr> 5259 <tr class="entries_header"> 5260 <th class="th_details" colspan="5">Details</th> 5261 </tr> 5262 <tr class="entry_cont"> 5263 <td class="entry_details" colspan="5"> 5264 <p>When a scene mode is enabled,<wbr/> the camera device is expected 5265to 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/> 5266and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for 5267that scene mode.<wbr/></p> 5268<p>The order of this list matches that of availableSceneModes,<wbr/> 5269with 3 entries for each mode.<wbr/> The overrides listed 5270for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/> 5271since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5272<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 5273used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> 5274is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and 5275FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p> 5276<p>For example,<wbr/> if availableSceneModes contains 5277<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework 5278expects sceneModeOverrides to have 9 entries formatted like: 5279<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> 5280ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p> 5281 </td> 5282 </tr> 5283 5284 <tr class="entries_header"> 5285 <th class="th_details" colspan="5">HAL Implementation Details</th> 5286 </tr> 5287 <tr class="entry_cont"> 5288 <td class="entry_details" colspan="5"> 5289 <p>To maintain backward compatibility,<wbr/> this list will be made available 5290in the static metadata of the camera service.<wbr/> The camera service will 5291use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 5292<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 5293mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p> 5294 </td> 5295 </tr> 5296 5297 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5298 <!-- end of entry --> 5299 5300 5301 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations"> 5302 <td class="entry_name 5303 " rowspan="5"> 5304 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations 5305 </td> 5306 <td class="entry_type"> 5307 <span class="entry_type_name">int32</span> 5308 <span class="entry_type_container">x</span> 5309 5310 <span class="entry_type_array"> 5311 5 x n 5312 </span> 5313 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span> 5314 5315 5316 <span class="entry_type_hwlevel">[limited] </span> 5317 5318 5319 5320 5321 </td> <!-- entry_type --> 5322 5323 <td class="entry_description"> 5324 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations 5325supported 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> 5326 </td> 5327 5328 <td class="entry_units"> 5329 </td> 5330 5331 <td class="entry_range"> 5332 <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p> 5333 </td> 5334 5335 <td class="entry_tags"> 5336 <ul class="entry_tags"> 5337 <li><a href="#tag_V1">V1</a></li> 5338 </ul> 5339 </td> 5340 5341 </tr> 5342 <tr class="entries_header"> 5343 <th class="th_details" colspan="5">Details</th> 5344 </tr> 5345 <tr class="entry_cont"> 5346 <td class="entry_details" colspan="5"> 5347 <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/> 5348this metadata will list the supported high speed video size,<wbr/> fps range and max batch size 5349configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes 5350reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> 5351for processed non-stalling formats.<wbr/></p> 5352<p>For the high speed video use case,<wbr/> the application must 5353select the video size and fps range from this metadata to configure the recording and 5354preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends 5355to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to 5356configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata 5357by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the 5358recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application 5359must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams 5360must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p> 5361<p>The min and max fps will be multiple times of 30fps.<wbr/></p> 5362<p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/> 5363to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate 5364multiple frames together and send to camera device for processing where the request 5365controls are same for all the frames in this batch.<wbr/> Max batch size indicates 5366the max possible number of frames the camera device will group together for this high 5367speed stream configuration.<wbr/> This max batch size will be used to generate a high speed 5368recording request list by 5369<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/> 5370The max batch size for each configuration will satisfy below conditions:</p> 5371<ul> 5372<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/> 5373if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li> 5374<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but 5375the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch 5376size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li> 5377<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li> 5378</ul> 5379<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/> 5380in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p> 5381<p>This fps ranges in this configuration list can only be used to create requests 5382that are submitted to a high speed camera capture session created by 5383<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> 5384The fps ranges reported in this metadata must not be used to setup capture requests for 5385normal capture session,<wbr/> or it will cause request error.<wbr/></p> 5386 </td> 5387 </tr> 5388 5389 <tr class="entries_header"> 5390 <th class="th_details" colspan="5">HAL Implementation Details</th> 5391 </tr> 5392 <tr class="entry_cont"> 5393 <td class="entry_details" colspan="5"> 5394 <p>All the sizes listed in this configuration will be a subset of the sizes reported by 5395<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/> 5396Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum 5397of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p> 5398<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps 5399sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application 5400usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused 5401stutter when starting recording as much as possible,<wbr/> the application may want to ensure 5402the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise 5403the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/> 5404For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise 5405[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to 5406do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start 5407recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps 5408values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps 5409values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must 5410switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p> 5411 </td> 5412 </tr> 5413 5414 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5415 <!-- end of entry --> 5416 5417 5418 <tr class="entry" id="static_android.control.aeLockAvailable"> 5419 <td class="entry_name 5420 " rowspan="3"> 5421 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available 5422 </td> 5423 <td class="entry_type"> 5424 <span class="entry_type_name entry_type_name_enum">byte</span> 5425 5426 <span class="entry_type_visibility"> [public as boolean]</span> 5427 5428 5429 <span class="entry_type_hwlevel">[legacy] </span> 5430 5431 5432 5433 <ul class="entry_type_enum"> 5434 <li> 5435 <span class="entry_type_enum_name">FALSE</span> 5436 </li> 5437 <li> 5438 <span class="entry_type_enum_name">TRUE</span> 5439 </li> 5440 </ul> 5441 5442 </td> <!-- entry_type --> 5443 5444 <td class="entry_description"> 5445 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p> 5446 </td> 5447 5448 <td class="entry_units"> 5449 </td> 5450 5451 <td class="entry_range"> 5452 </td> 5453 5454 <td class="entry_tags"> 5455 <ul class="entry_tags"> 5456 <li><a href="#tag_BC">BC</a></li> 5457 </ul> 5458 </td> 5459 5460 </tr> 5461 <tr class="entries_header"> 5462 <th class="th_details" colspan="5">Details</th> 5463 </tr> 5464 <tr class="entry_cont"> 5465 <td class="entry_details" colspan="5"> 5466 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always 5467list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 5468 </td> 5469 </tr> 5470 5471 5472 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5473 <!-- end of entry --> 5474 5475 5476 <tr class="entry" id="static_android.control.awbLockAvailable"> 5477 <td class="entry_name 5478 " rowspan="3"> 5479 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available 5480 </td> 5481 <td class="entry_type"> 5482 <span class="entry_type_name entry_type_name_enum">byte</span> 5483 5484 <span class="entry_type_visibility"> [public as boolean]</span> 5485 5486 5487 <span class="entry_type_hwlevel">[legacy] </span> 5488 5489 5490 5491 <ul class="entry_type_enum"> 5492 <li> 5493 <span class="entry_type_enum_name">FALSE</span> 5494 </li> 5495 <li> 5496 <span class="entry_type_enum_name">TRUE</span> 5497 </li> 5498 </ul> 5499 5500 </td> <!-- entry_type --> 5501 5502 <td class="entry_description"> 5503 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p> 5504 </td> 5505 5506 <td class="entry_units"> 5507 </td> 5508 5509 <td class="entry_range"> 5510 </td> 5511 5512 <td class="entry_tags"> 5513 <ul class="entry_tags"> 5514 <li><a href="#tag_BC">BC</a></li> 5515 </ul> 5516 </td> 5517 5518 </tr> 5519 <tr class="entries_header"> 5520 <th class="th_details" colspan="5">Details</th> 5521 </tr> 5522 <tr class="entry_cont"> 5523 <td class="entry_details" colspan="5"> 5524 <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will 5525always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> 5526 </td> 5527 </tr> 5528 5529 5530 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5531 <!-- end of entry --> 5532 5533 5534 <tr class="entry" id="static_android.control.availableModes"> 5535 <td class="entry_name 5536 " rowspan="3"> 5537 android.<wbr/>control.<wbr/>available<wbr/>Modes 5538 </td> 5539 <td class="entry_type"> 5540 <span class="entry_type_name">byte</span> 5541 <span class="entry_type_container">x</span> 5542 5543 <span class="entry_type_array"> 5544 n 5545 </span> 5546 <span class="entry_type_visibility"> [public as enumList]</span> 5547 5548 5549 <span class="entry_type_hwlevel">[legacy] </span> 5550 5551 5552 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div> 5553 5554 5555 </td> <!-- entry_type --> 5556 5557 <td class="entry_description"> 5558 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera 5559device.<wbr/></p> 5560 </td> 5561 5562 <td class="entry_units"> 5563 </td> 5564 5565 <td class="entry_range"> 5566 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p> 5567 </td> 5568 5569 <td class="entry_tags"> 5570 </td> 5571 5572 </tr> 5573 <tr class="entries_header"> 5574 <th class="th_details" colspan="5">Details</th> 5575 </tr> 5576 <tr class="entry_cont"> 5577 <td class="entry_details" colspan="5"> 5578 <p>This list contains control modes that can be set for the camera device.<wbr/> 5579LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL 5580devices will always support OFF,<wbr/> AUTO modes.<wbr/></p> 5581 </td> 5582 </tr> 5583 5584 5585 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5586 <!-- end of entry --> 5587 5588 5589 <tr class="entry" id="static_android.control.postRawSensitivityBoostRange"> 5590 <td class="entry_name 5591 " rowspan="5"> 5592 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range 5593 </td> 5594 <td class="entry_type"> 5595 <span class="entry_type_name">int32</span> 5596 <span class="entry_type_container">x</span> 5597 5598 <span class="entry_type_array"> 5599 2 5600 </span> 5601 <span class="entry_type_visibility"> [public as rangeInt]</span> 5602 5603 5604 5605 5606 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div> 5607 5608 5609 </td> <!-- entry_type --> 5610 5611 <td class="entry_description"> 5612 <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported 5613by this camera device.<wbr/></p> 5614 </td> 5615 5616 <td class="entry_units"> 5617 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity 5618 </td> 5619 5620 <td class="entry_range"> 5621 </td> 5622 5623 <td class="entry_tags"> 5624 </td> 5625 5626 </tr> 5627 <tr class="entries_header"> 5628 <th class="th_details" colspan="5">Details</th> 5629 </tr> 5630 <tr class="entry_cont"> 5631 <td class="entry_details" colspan="5"> 5632 <p>Devices support post RAW sensitivity boost will advertise 5633<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling 5634post RAW sensitivity boost.<wbr/></p> 5635<p>This key will be <code>null</code> for devices that do not support any RAW format 5636outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 5637present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 5638list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p> 5639 </td> 5640 </tr> 5641 5642 <tr class="entries_header"> 5643 <th class="th_details" colspan="5">HAL Implementation Details</th> 5644 </tr> 5645 <tr class="entry_cont"> 5646 <td class="entry_details" colspan="5"> 5647 <p>This key is added in HAL3.<wbr/>4.<wbr/> For HAL3.<wbr/>3 or earlier devices,<wbr/> camera framework will 5648generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output formats.<wbr/> 5649All HAL3.<wbr/>4 and above devices should list this key if device supports any of RAW 5650output formats.<wbr/></p> 5651 </td> 5652 </tr> 5653 5654 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5655 <!-- end of entry --> 5656 5657 5658 5659 <!-- end of kind --> 5660 </tbody> 5661 <tr><td colspan="6" class="kind">dynamic</td></tr> 5662 5663 <thead class="entries_header"> 5664 <tr> 5665 <th class="th_name">Property Name</th> 5666 <th class="th_type">Type</th> 5667 <th class="th_description">Description</th> 5668 <th class="th_units">Units</th> 5669 <th class="th_range">Range</th> 5670 <th class="th_tags">Tags</th> 5671 </tr> 5672 </thead> 5673 5674 <tbody> 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 <tr class="entry" id="dynamic_android.control.aePrecaptureId"> 5686 <td class="entry_name 5687 entry_name_deprecated 5688 " rowspan="3"> 5689 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id 5690 </td> 5691 <td class="entry_type"> 5692 <span class="entry_type_name">int32</span> 5693 5694 <span class="entry_type_visibility"> [system]</span> 5695 5696 5697 5698 <span class="entry_type_deprecated">[deprecated] </span> 5699 5700 5701 5702 </td> <!-- entry_type --> 5703 5704 <td class="entry_description"> 5705 <p>The ID sent with the latest 5706CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p> 5707 </td> 5708 5709 <td class="entry_units"> 5710 </td> 5711 5712 <td class="entry_range"> 5713 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 5714 </td> 5715 5716 <td class="entry_tags"> 5717 </td> 5718 5719 </tr> 5720 <tr class="entries_header"> 5721 <th class="th_details" colspan="5">Details</th> 5722 </tr> 5723 <tr class="entry_cont"> 5724 <td class="entry_details" colspan="5"> 5725 <p>Must be 0 if no 5726CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet 5727by HAL.<wbr/> Always updated even if AE algorithm ignores the 5728trigger</p> 5729 </td> 5730 </tr> 5731 5732 5733 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5734 <!-- end of entry --> 5735 5736 5737 <tr class="entry" id="dynamic_android.control.aeAntibandingMode"> 5738 <td class="entry_name 5739 " rowspan="5"> 5740 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode 5741 </td> 5742 <td class="entry_type"> 5743 <span class="entry_type_name entry_type_name_enum">byte</span> 5744 5745 <span class="entry_type_visibility"> [public]</span> 5746 5747 5748 <span class="entry_type_hwlevel">[legacy] </span> 5749 5750 5751 5752 <ul class="entry_type_enum"> 5753 <li> 5754 <span class="entry_type_enum_name">OFF</span> 5755 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to 5756avoid banding problems.<wbr/></p></span> 5757 </li> 5758 <li> 5759 <span class="entry_type_enum_name">50HZ</span> 5760 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 5761avoid banding problems with 50Hz illumination sources.<wbr/></p></span> 5762 </li> 5763 <li> 5764 <span class="entry_type_enum_name">60HZ</span> 5765 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to 5766avoid banding problems with 60Hz illumination 5767sources.<wbr/></p></span> 5768 </li> 5769 <li> 5770 <span class="entry_type_enum_name">AUTO</span> 5771 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its 5772antibanding routine to the current illumination 5773condition.<wbr/> This is the default mode if AUTO is 5774available on given camera device.<wbr/></p></span> 5775 </li> 5776 </ul> 5777 5778 </td> <!-- entry_type --> 5779 5780 <td class="entry_description"> 5781 <p>The desired setting for the camera device's auto-exposure 5782algorithm's antibanding compensation.<wbr/></p> 5783 </td> 5784 5785 <td class="entry_units"> 5786 </td> 5787 5788 <td class="entry_range"> 5789 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> 5790 </td> 5791 5792 <td class="entry_tags"> 5793 <ul class="entry_tags"> 5794 <li><a href="#tag_BC">BC</a></li> 5795 </ul> 5796 </td> 5797 5798 </tr> 5799 <tr class="entries_header"> 5800 <th class="th_details" colspan="5">Details</th> 5801 </tr> 5802 <tr class="entry_cont"> 5803 <td class="entry_details" colspan="5"> 5804 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent 5805lights,<wbr/> flicker at the rate of the power supply frequency 5806(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is 5807typically not noticeable to a person,<wbr/> it can be visible to 5808a camera device.<wbr/> If a camera sets its exposure time to the 5809wrong value,<wbr/> the flicker may become visible in the 5810viewfinder as flicker or in a final captured image,<wbr/> as a 5811set of variable-brightness bands across the image.<wbr/></p> 5812<p>Therefore,<wbr/> the auto-exposure routines of camera devices 5813include antibanding routines that ensure that the chosen 5814exposure value will not cause such banding.<wbr/> The choice of 5815exposure time depends on the rate of flicker,<wbr/> which the 5816camera device can detect automatically,<wbr/> or the expected 5817rate can be selected by the application using this 5818control.<wbr/></p> 5819<p>A given camera device may not support all of the possible 5820options for the antibanding mode.<wbr/> The 5821<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains 5822the available modes for a given camera device.<wbr/></p> 5823<p>AUTO mode is the default if it is available on given 5824camera device.<wbr/> When AUTO mode is not available,<wbr/> the 5825default will be either 50HZ or 60HZ,<wbr/> and both 50HZ 5826and 60HZ will be available.<wbr/></p> 5827<p>If manual exposure control is enabled (by setting 5828<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/> 5829then this setting has no effect,<wbr/> and the application must 5830ensure it selects exposure times that do not cause banding 5831issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist 5832the application in this.<wbr/></p> 5833 </td> 5834 </tr> 5835 5836 <tr class="entries_header"> 5837 <th class="th_details" colspan="5">HAL Implementation Details</th> 5838 </tr> 5839 <tr class="entry_cont"> 5840 <td class="entry_details" colspan="5"> 5841 <p>For all capture request templates,<wbr/> this field must be set 5842to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/> 5843the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and 584460HZ must be available.<wbr/></p> 5845<p>If manual exposure control is enabled (by setting 5846<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/> 5847then the exposure values provided by the application must not be 5848adjusted for antibanding.<wbr/></p> 5849 </td> 5850 </tr> 5851 5852 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5853 <!-- end of entry --> 5854 5855 5856 <tr class="entry" id="dynamic_android.control.aeExposureCompensation"> 5857 <td class="entry_name 5858 " rowspan="3"> 5859 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation 5860 </td> 5861 <td class="entry_type"> 5862 <span class="entry_type_name">int32</span> 5863 5864 <span class="entry_type_visibility"> [public]</span> 5865 5866 5867 <span class="entry_type_hwlevel">[legacy] </span> 5868 5869 5870 5871 5872 </td> <!-- entry_type --> 5873 5874 <td class="entry_description"> 5875 <p>Adjustment to auto-exposure (AE) target image 5876brightness.<wbr/></p> 5877 </td> 5878 5879 <td class="entry_units"> 5880 Compensation steps 5881 </td> 5882 5883 <td class="entry_range"> 5884 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p> 5885 </td> 5886 5887 <td class="entry_tags"> 5888 <ul class="entry_tags"> 5889 <li><a href="#tag_BC">BC</a></li> 5890 </ul> 5891 </td> 5892 5893 </tr> 5894 <tr class="entries_header"> 5895 <th class="th_details" colspan="5">Details</th> 5896 </tr> 5897 <tr class="entry_cont"> 5898 <td class="entry_details" colspan="5"> 5899 <p>The adjustment is measured as a count of steps,<wbr/> with the 5900step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the 5901allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p> 5902<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6' 5903will mean an exposure compensation of +2 EV; -3 will mean an 5904exposure compensation of -1 EV.<wbr/> One EV represents a doubling 5905of image brightness.<wbr/> Note that this control will only be 5906effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control 5907will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p> 5908<p>In the event of exposure compensation value being changed,<wbr/> camera device 5909may take several frames to reach the newly requested exposure target.<wbr/> 5910During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING 5911state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will 5912change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or 5913FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p> 5914 </td> 5915 </tr> 5916 5917 5918 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 5919 <!-- end of entry --> 5920 5921 5922 <tr class="entry" id="dynamic_android.control.aeLock"> 5923 <td class="entry_name 5924 " rowspan="3"> 5925 android.<wbr/>control.<wbr/>ae<wbr/>Lock 5926 </td> 5927 <td class="entry_type"> 5928 <span class="entry_type_name entry_type_name_enum">byte</span> 5929 5930 <span class="entry_type_visibility"> [public as boolean]</span> 5931 5932 5933 <span class="entry_type_hwlevel">[legacy] </span> 5934 5935 5936 5937 <ul class="entry_type_enum"> 5938 <li> 5939 <span class="entry_type_enum_name">OFF</span> 5940 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm 5941is free to update its parameters.<wbr/></p></span> 5942 </li> 5943 <li> 5944 <span class="entry_type_enum_name">ON</span> 5945 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm 5946must not update the exposure and sensitivity parameters 5947while the lock is active.<wbr/></p> 5948<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes 5949will still take effect while auto-exposure is locked.<wbr/></p> 5950<p>Some rare LEGACY devices may not support 5951this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span> 5952 </li> 5953 </ul> 5954 5955 </td> <!-- entry_type --> 5956 5957 <td class="entry_description"> 5958 <p>Whether auto-exposure (AE) is currently locked to its latest 5959calculated values.<wbr/></p> 5960 </td> 5961 5962 <td class="entry_units"> 5963 </td> 5964 5965 <td class="entry_range"> 5966 </td> 5967 5968 <td class="entry_tags"> 5969 <ul class="entry_tags"> 5970 <li><a href="#tag_BC">BC</a></li> 5971 </ul> 5972 </td> 5973 5974 </tr> 5975 <tr class="entries_header"> 5976 <th class="th_details" colspan="5">Details</th> 5977 </tr> 5978 <tr class="entry_cont"> 5979 <td class="entry_details" colspan="5"> 5980 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/> 5981and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 5982<p>Note that even when AE is locked,<wbr/> the flash may be fired if 5983the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> 5984ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p> 5985<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 5986is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p> 5987<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) 5988when AE is already locked,<wbr/> the camera device will not change the exposure time 5989(<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>) 5990parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> 5991is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the 5992<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/> 5993Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p> 5994<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock 5995the AE if AE is locked by the camera device internally during precapture metering 5996sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an 5997ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence 5998will never succeed in a sequence of preview requests where AE lock is always set 5999to <code>false</code>.<wbr/></p> 6000<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 6001get locked do not necessarily correspond to the settings that were present in the 6002latest capture result received from the camera device,<wbr/> since additional captures 6003and AE updates may have occurred even before the result was sent out.<wbr/> If an 6004application is switching between automatic and manual control and wishes to eliminate 6005any flicker during the switch,<wbr/> the following procedure is recommended:</p> 6006<ol> 6007<li>Starting in auto-AE mode:</li> 6008<li>Lock AE</li> 6009<li>Wait for the first result to be output that has the AE locked</li> 6010<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li> 6011<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li> 6012</ol> 6013<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> 6014 </td> 6015 </tr> 6016 6017 6018 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6019 <!-- end of entry --> 6020 6021 6022 <tr class="entry" id="dynamic_android.control.aeMode"> 6023 <td class="entry_name 6024 " rowspan="3"> 6025 android.<wbr/>control.<wbr/>ae<wbr/>Mode 6026 </td> 6027 <td class="entry_type"> 6028 <span class="entry_type_name entry_type_name_enum">byte</span> 6029 6030 <span class="entry_type_visibility"> [public]</span> 6031 6032 6033 <span class="entry_type_hwlevel">[legacy] </span> 6034 6035 6036 6037 <ul class="entry_type_enum"> 6038 <li> 6039 <span class="entry_type_enum_name">OFF</span> 6040 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p> 6041<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 6042<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and 6043<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera 6044device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's 6045a flash unit for this camera device.<wbr/></p> 6046<p>Note that auto-white balance (AWB) and auto-focus (AF) 6047behavior is device dependent when AE is in OFF mode.<wbr/> 6048To have consistent behavior across different devices,<wbr/> 6049it is recommended to either set AWB and AF to OFF mode 6050or lock AWB and AF before setting AE to OFF.<wbr/> 6051See <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/> 6052<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> 6053for more details.<wbr/></p> 6054<p>LEGACY devices do not support the OFF mode and will 6055override attempts to use this value to ON.<wbr/></p></span> 6056 </li> 6057 <li> 6058 <span class="entry_type_enum_name">ON</span> 6059 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> 6060with no flash control.<wbr/></p> 6061<p>The application's values for 6062<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 6063<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 6064<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The 6065application has control over the various 6066android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> 6067 </li> 6068 <li> 6069 <span class="entry_type_enum_name">ON_AUTO_FLASH</span> 6070 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 6071the camera's flash unit,<wbr/> firing it in low-light 6072conditions.<wbr/></p> 6073<p>The flash may be fired during a precapture sequence 6074(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 6075may be fired for captures for which the 6076<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 6077STILL_<wbr/>CAPTURE</p></span> 6078 </li> 6079 <li> 6080 <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> 6081 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls 6082the camera's flash unit,<wbr/> always firing it for still 6083captures.<wbr/></p> 6084<p>The flash may be fired during a precapture sequence 6085(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and 6086will always be fired for captures for which the 6087<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to 6088STILL_<wbr/>CAPTURE</p></span> 6089 </li> 6090 <li> 6091 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> 6092 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye 6093reduction.<wbr/></p> 6094<p>If deemed necessary by the camera device,<wbr/> a red eye 6095reduction flash will fire during the precapture 6096sequence.<wbr/></p></span> 6097 </li> 6098 </ul> 6099 6100 </td> <!-- entry_type --> 6101 6102 <td class="entry_description"> 6103 <p>The desired mode for the camera device's 6104auto-exposure routine.<wbr/></p> 6105 </td> 6106 6107 <td class="entry_units"> 6108 </td> 6109 6110 <td class="entry_range"> 6111 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> 6112 </td> 6113 6114 <td class="entry_tags"> 6115 <ul class="entry_tags"> 6116 <li><a href="#tag_BC">BC</a></li> 6117 </ul> 6118 </td> 6119 6120 </tr> 6121 <tr class="entries_header"> 6122 <th class="th_details" colspan="5">Details</th> 6123 </tr> 6124 <tr class="entry_cont"> 6125 <td class="entry_details" colspan="5"> 6126 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is 6127AUTO.<wbr/></p> 6128<p>When set to any of the ON modes,<wbr/> the camera device's 6129auto-exposure routine is enabled,<wbr/> overriding the 6130application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> 6131and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 6132<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and 6133<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes 6134is selected,<wbr/> the camera device's flash unit controls are 6135also overridden.<wbr/></p> 6136<p>The FLASH modes are only available if the camera device 6137has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> 6138<p>If flash TORCH mode is desired,<wbr/> this field must be set to 6139ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> 6140<p>When set to any of the ON modes,<wbr/> the values chosen by the 6141camera device auto-exposure routine for the overridden 6142fields for a given capture will be available in its 6143CaptureResult.<wbr/></p> 6144 </td> 6145 </tr> 6146 6147 6148 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6149 <!-- end of entry --> 6150 6151 6152 <tr class="entry" id="dynamic_android.control.aeRegions"> 6153 <td class="entry_name 6154 " rowspan="5"> 6155 android.<wbr/>control.<wbr/>ae<wbr/>Regions 6156 </td> 6157 <td class="entry_type"> 6158 <span class="entry_type_name">int32</span> 6159 <span class="entry_type_container">x</span> 6160 6161 <span class="entry_type_array"> 6162 5 x area_count 6163 </span> 6164 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 6165 6166 6167 6168 6169 6170 6171 </td> <!-- entry_type --> 6172 6173 <td class="entry_description"> 6174 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p> 6175 </td> 6176 6177 <td class="entry_units"> 6178 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 6179 </td> 6180 6181 <td class="entry_range"> 6182 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 6183<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 6184 </td> 6185 6186 <td class="entry_tags"> 6187 <ul class="entry_tags"> 6188 <li><a href="#tag_BC">BC</a></li> 6189 </ul> 6190 </td> 6191 6192 </tr> 6193 <tr class="entries_header"> 6194 <th class="th_details" colspan="5">Details</th> 6195 </tr> 6196 <tr class="entry_cont"> 6197 <td class="entry_details" colspan="5"> 6198 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/> 6199Otherwise will always be present.<wbr/></p> 6200<p>The maximum number of regions supported by the device is determined by the value 6201of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p> 6202<p>The coordinate system is based on the active pixel array,<wbr/> 6203with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 6204(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 6205<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 6206bottom-right pixel in the active pixel array.<wbr/></p> 6207<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 6208for every pixel in the area.<wbr/> This means that a large metering area 6209with the same weight as a smaller area will have more effect in 6210the metering result.<wbr/> Metering areas can partially overlap and the 6211camera device will add the weights in the overlap region.<wbr/></p> 6212<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one 6213region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 6214weight is ignored.<wbr/></p> 6215<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 6216camera device.<wbr/></p> 6217<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 6218capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 6219region and output only the intersection rectangle as the metering region in the result 6220metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 6221not reported in the result metadata.<wbr/></p> 6222 </td> 6223 </tr> 6224 6225 <tr class="entries_header"> 6226 <th class="th_details" colspan="5">HAL Implementation Details</th> 6227 </tr> 6228 <tr class="entry_cont"> 6229 <td class="entry_details" colspan="5"> 6230 <p>The HAL level representation of MeteringRectangle[] is a 6231int[5 * area_<wbr/>count].<wbr/> 6232Every five elements represent a metering region of 6233(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 6234The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 6235exclusive on xmax and ymax.<wbr/></p> 6236 </td> 6237 </tr> 6238 6239 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6240 <!-- end of entry --> 6241 6242 6243 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange"> 6244 <td class="entry_name 6245 " rowspan="3"> 6246 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range 6247 </td> 6248 <td class="entry_type"> 6249 <span class="entry_type_name">int32</span> 6250 <span class="entry_type_container">x</span> 6251 6252 <span class="entry_type_array"> 6253 2 6254 </span> 6255 <span class="entry_type_visibility"> [public as rangeInt]</span> 6256 6257 6258 <span class="entry_type_hwlevel">[legacy] </span> 6259 6260 6261 6262 6263 </td> <!-- entry_type --> 6264 6265 <td class="entry_description"> 6266 <p>Range over which the auto-exposure routine can 6267adjust the capture frame rate to maintain good 6268exposure.<wbr/></p> 6269 </td> 6270 6271 <td class="entry_units"> 6272 Frames per second (FPS) 6273 </td> 6274 6275 <td class="entry_range"> 6276 <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> 6277 </td> 6278 6279 <td class="entry_tags"> 6280 <ul class="entry_tags"> 6281 <li><a href="#tag_BC">BC</a></li> 6282 </ul> 6283 </td> 6284 6285 </tr> 6286 <tr class="entries_header"> 6287 <th class="th_details" colspan="5">Details</th> 6288 </tr> 6289 <tr class="entry_cont"> 6290 <td class="entry_details" colspan="5"> 6291 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not 6292manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and 6293<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> 6294 </td> 6295 </tr> 6296 6297 6298 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6299 <!-- end of entry --> 6300 6301 6302 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger"> 6303 <td class="entry_name 6304 " rowspan="5"> 6305 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger 6306 </td> 6307 <td class="entry_type"> 6308 <span class="entry_type_name entry_type_name_enum">byte</span> 6309 6310 <span class="entry_type_visibility"> [public]</span> 6311 6312 6313 <span class="entry_type_hwlevel">[limited] </span> 6314 6315 6316 6317 <ul class="entry_type_enum"> 6318 <li> 6319 <span class="entry_type_enum_name">IDLE</span> 6320 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 6321 </li> 6322 <li> 6323 <span class="entry_type_enum_name">START</span> 6324 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started 6325by the camera device.<wbr/></p> 6326<p>The exact effect of the precapture trigger depends on 6327the current AE mode and state.<wbr/></p></span> 6328 </li> 6329 <li> 6330 <span class="entry_type_enum_name">CANCEL</span> 6331 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed 6332precapture metering sequence,<wbr/> the auto-exposure routine will return to its 6333initial state.<wbr/></p></span> 6334 </li> 6335 </ul> 6336 6337 </td> <!-- entry_type --> 6338 6339 <td class="entry_description"> 6340 <p>Whether the camera device will trigger a precapture 6341metering sequence when it processes this request.<wbr/></p> 6342 </td> 6343 6344 <td class="entry_units"> 6345 </td> 6346 6347 <td class="entry_range"> 6348 </td> 6349 6350 <td class="entry_tags"> 6351 <ul class="entry_tags"> 6352 <li><a href="#tag_BC">BC</a></li> 6353 </ul> 6354 </td> 6355 6356 </tr> 6357 <tr class="entries_header"> 6358 <th class="th_details" colspan="5">Details</th> 6359 </tr> 6360 <tr class="entry_cont"> 6361 <td class="entry_details" colspan="5"> 6362 <p>This entry is normally set to IDLE,<wbr/> or is not 6363included at all in the request settings.<wbr/> When included and 6364set to START,<wbr/> the camera device will trigger the auto-exposure (AE) 6365precapture metering sequence.<wbr/></p> 6366<p>When set to CANCEL,<wbr/> the camera device will cancel any active 6367precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> 6368If a precapture metering sequence is already completed,<wbr/> and the camera 6369device has implicitly locked the AE for subsequent still capture,<wbr/> the 6370CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> 6371<p>The precapture sequence should be triggered before starting a 6372high-quality still capture for final metering decisions to 6373be made,<wbr/> and for firing pre-capture flash pulses to estimate 6374scene brightness and required final capture flash power,<wbr/> when 6375the flash is enabled.<wbr/></p> 6376<p>Normally,<wbr/> this entry should be set to START for only a 6377single request,<wbr/> and the application should wait until the 6378sequence completes before starting a new one.<wbr/></p> 6379<p>When a precapture metering sequence is finished,<wbr/> the camera device 6380may lock the auto-exposure routine internally to be able to accurately expose the 6381subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> 6382For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is 6383submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should 6384submit 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 6385with <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 6386still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for 6387API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device 6388internally locked AE if the application doesn't submit a still capture request after 6389the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not 6390be used in devices that have earlier API levels.<wbr/></p> 6391<p>The exact effect of auto-exposure (AE) precapture trigger 6392depends on the current AE mode and state; see 6393<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition 6394details.<wbr/></p> 6395<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; 6396capturing a high-resolution JPEG image will automatically trigger a 6397precapture sequence before the high-resolution capture,<wbr/> including 6398potentially firing a pre-capture flash.<wbr/></p> 6399<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> 6400simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 6401the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 6402focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 6403trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 6404changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for 6405example.<wbr/></p> 6406<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then 6407the camera device will complete them in the optimal order for that device.<wbr/></p> 6408 </td> 6409 </tr> 6410 6411 <tr class="entries_header"> 6412 <th class="th_details" colspan="5">HAL Implementation Details</th> 6413 </tr> 6414 <tr class="entry_cont"> 6415 <td class="entry_details" colspan="5"> 6416 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active 6417(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to 6418treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 6419AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 6420to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 6421 </td> 6422 </tr> 6423 6424 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6425 <!-- end of entry --> 6426 6427 6428 <tr class="entry" id="dynamic_android.control.aeState"> 6429 <td class="entry_name 6430 " rowspan="3"> 6431 android.<wbr/>control.<wbr/>ae<wbr/>State 6432 </td> 6433 <td class="entry_type"> 6434 <span class="entry_type_name entry_type_name_enum">byte</span> 6435 6436 <span class="entry_type_visibility"> [public]</span> 6437 6438 6439 <span class="entry_type_hwlevel">[limited] </span> 6440 6441 6442 6443 <ul class="entry_type_enum"> 6444 <li> 6445 <span class="entry_type_enum_name">INACTIVE</span> 6446 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p> 6447<p>When a camera device is opened,<wbr/> it starts in 6448this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting 6449this state in capture result.<wbr/></p></span> 6450 </li> 6451 <li> 6452 <span class="entry_type_enum_name">SEARCHING</span> 6453 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values 6454for the current scene.<wbr/></p> 6455<p>This is a transient state,<wbr/> the camera device may skip 6456reporting this state in capture result.<wbr/></p></span> 6457 </li> 6458 <li> 6459 <span class="entry_type_enum_name">CONVERGED</span> 6460 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the 6461current scene.<wbr/></p></span> 6462 </li> 6463 <li> 6464 <span class="entry_type_enum_name">LOCKED</span> 6465 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span> 6466 </li> 6467 <li> 6468 <span class="entry_type_enum_name">FLASH_REQUIRED</span> 6469 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash 6470needs to be fired for good quality still 6471capture.<wbr/></p></span> 6472 </li> 6473 <li> 6474 <span class="entry_type_enum_name">PRECAPTURE</span> 6475 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence 6476and is currently executing it.<wbr/></p> 6477<p>Precapture can be triggered through setting 6478<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently 6479active and completed (if it causes camera device internal AE lock) precapture 6480metering sequence can be canceled through setting 6481<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p> 6482<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED 6483or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient 6484state,<wbr/> the camera device may skip reporting this state in 6485capture result.<wbr/></p></span> 6486 </li> 6487 </ul> 6488 6489 </td> <!-- entry_type --> 6490 6491 <td class="entry_description"> 6492 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p> 6493 </td> 6494 6495 <td class="entry_units"> 6496 </td> 6497 6498 <td class="entry_range"> 6499 </td> 6500 6501 <td class="entry_tags"> 6502 </td> 6503 6504 </tr> 6505 <tr class="entries_header"> 6506 <th class="th_details" colspan="5">Details</th> 6507 </tr> 6508 <tr class="entry_cont"> 6509 <td class="entry_details" colspan="5"> 6510 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always 6511resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 6512or <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 6513the algorithm states to INACTIVE.<wbr/></p> 6514<p>The camera device can do several state transitions between two results,<wbr/> if it is 6515allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 6516seen in a result.<wbr/></p> 6517<p>The state in the result is the state for this image (in sync with this image): if 6518AE state becomes CONVERGED,<wbr/> then the image data associated with this result should 6519be good to use.<wbr/></p> 6520<p>Below are state transition tables for different AE modes.<wbr/></p> 6521<table> 6522<thead> 6523<tr> 6524<th align="center">State</th> 6525<th align="center">Transition Cause</th> 6526<th align="center">New State</th> 6527<th align="center">Notes</th> 6528</tr> 6529</thead> 6530<tbody> 6531<tr> 6532<td align="center">INACTIVE</td> 6533<td align="center"></td> 6534<td align="center">INACTIVE</td> 6535<td align="center">Camera device auto exposure algorithm is disabled</td> 6536</tr> 6537</tbody> 6538</table> 6539<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p> 6540<table> 6541<thead> 6542<tr> 6543<th align="center">State</th> 6544<th align="center">Transition Cause</th> 6545<th align="center">New State</th> 6546<th align="center">Notes</th> 6547</tr> 6548</thead> 6549<tbody> 6550<tr> 6551<td align="center">INACTIVE</td> 6552<td align="center">Camera device initiates AE scan</td> 6553<td align="center">SEARCHING</td> 6554<td align="center">Values changing</td> 6555</tr> 6556<tr> 6557<td align="center">INACTIVE</td> 6558<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6559<td align="center">LOCKED</td> 6560<td align="center">Values locked</td> 6561</tr> 6562<tr> 6563<td align="center">SEARCHING</td> 6564<td align="center">Camera device finishes AE scan</td> 6565<td align="center">CONVERGED</td> 6566<td align="center">Good values,<wbr/> not changing</td> 6567</tr> 6568<tr> 6569<td align="center">SEARCHING</td> 6570<td align="center">Camera device finishes AE scan</td> 6571<td align="center">FLASH_<wbr/>REQUIRED</td> 6572<td align="center">Converged but too dark w/<wbr/>o flash</td> 6573</tr> 6574<tr> 6575<td align="center">SEARCHING</td> 6576<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6577<td align="center">LOCKED</td> 6578<td align="center">Values locked</td> 6579</tr> 6580<tr> 6581<td align="center">CONVERGED</td> 6582<td align="center">Camera device initiates AE scan</td> 6583<td align="center">SEARCHING</td> 6584<td align="center">Values changing</td> 6585</tr> 6586<tr> 6587<td align="center">CONVERGED</td> 6588<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6589<td align="center">LOCKED</td> 6590<td align="center">Values locked</td> 6591</tr> 6592<tr> 6593<td align="center">FLASH_<wbr/>REQUIRED</td> 6594<td align="center">Camera device initiates AE scan</td> 6595<td align="center">SEARCHING</td> 6596<td align="center">Values changing</td> 6597</tr> 6598<tr> 6599<td align="center">FLASH_<wbr/>REQUIRED</td> 6600<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6601<td align="center">LOCKED</td> 6602<td align="center">Values locked</td> 6603</tr> 6604<tr> 6605<td align="center">LOCKED</td> 6606<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6607<td align="center">SEARCHING</td> 6608<td align="center">Values not good after unlock</td> 6609</tr> 6610<tr> 6611<td align="center">LOCKED</td> 6612<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6613<td align="center">CONVERGED</td> 6614<td align="center">Values good after unlock</td> 6615</tr> 6616<tr> 6617<td align="center">LOCKED</td> 6618<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6619<td align="center">FLASH_<wbr/>REQUIRED</td> 6620<td align="center">Exposure good,<wbr/> but too dark</td> 6621</tr> 6622<tr> 6623<td align="center">PRECAPTURE</td> 6624<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> 6625<td align="center">CONVERGED</td> 6626<td align="center">Ready for high-quality capture</td> 6627</tr> 6628<tr> 6629<td align="center">PRECAPTURE</td> 6630<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> 6631<td align="center">LOCKED</td> 6632<td align="center">Ready for high-quality capture</td> 6633</tr> 6634<tr> 6635<td align="center">LOCKED</td> 6636<td align="center">aeLock is ON and aePrecaptureTrigger is START</td> 6637<td align="center">LOCKED</td> 6638<td align="center">Precapture trigger is ignored when AE is already locked</td> 6639</tr> 6640<tr> 6641<td align="center">LOCKED</td> 6642<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td> 6643<td align="center">LOCKED</td> 6644<td align="center">Precapture trigger is ignored when AE is already locked</td> 6645</tr> 6646<tr> 6647<td align="center">Any state (excluding LOCKED)</td> 6648<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> 6649<td align="center">PRECAPTURE</td> 6650<td align="center">Start AE precapture metering sequence</td> 6651</tr> 6652<tr> 6653<td align="center">Any state (excluding LOCKED)</td> 6654<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td> 6655<td align="center">INACTIVE</td> 6656<td align="center">Currently active precapture metering sequence is canceled</td> 6657</tr> 6658</tbody> 6659</table> 6660<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 6661without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 6662can be skipped in that manner is called a transient state.<wbr/></p> 6663<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions 6664listed in above table,<wbr/> it is also legal for the camera device to skip one or more 6665transient states between two results.<wbr/> See below table for examples:</p> 6666<table> 6667<thead> 6668<tr> 6669<th align="center">State</th> 6670<th align="center">Transition Cause</th> 6671<th align="center">New State</th> 6672<th align="center">Notes</th> 6673</tr> 6674</thead> 6675<tbody> 6676<tr> 6677<td align="center">INACTIVE</td> 6678<td align="center">Camera device finished AE scan</td> 6679<td align="center">CONVERGED</td> 6680<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 6681</tr> 6682<tr> 6683<td align="center">Any state (excluding LOCKED)</td> 6684<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> 6685<td align="center">FLASH_<wbr/>REQUIRED</td> 6686<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> 6687</tr> 6688<tr> 6689<td align="center">Any state (excluding LOCKED)</td> 6690<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> 6691<td align="center">CONVERGED</td> 6692<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> 6693</tr> 6694<tr> 6695<td align="center">Any state (excluding LOCKED)</td> 6696<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 6697<td align="center">FLASH_<wbr/>REQUIRED</td> 6698<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> 6699</tr> 6700<tr> 6701<td align="center">Any state (excluding LOCKED)</td> 6702<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> 6703<td align="center">CONVERGED</td> 6704<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td> 6705</tr> 6706<tr> 6707<td align="center">CONVERGED</td> 6708<td align="center">Camera device finished AE scan</td> 6709<td align="center">FLASH_<wbr/>REQUIRED</td> 6710<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> 6711</tr> 6712<tr> 6713<td align="center">FLASH_<wbr/>REQUIRED</td> 6714<td align="center">Camera device finished AE scan</td> 6715<td align="center">CONVERGED</td> 6716<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> 6717</tr> 6718</tbody> 6719</table> 6720 </td> 6721 </tr> 6722 6723 6724 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6725 <!-- end of entry --> 6726 6727 6728 <tr class="entry" id="dynamic_android.control.afMode"> 6729 <td class="entry_name 6730 " rowspan="5"> 6731 android.<wbr/>control.<wbr/>af<wbr/>Mode 6732 </td> 6733 <td class="entry_type"> 6734 <span class="entry_type_name entry_type_name_enum">byte</span> 6735 6736 <span class="entry_type_visibility"> [public]</span> 6737 6738 6739 <span class="entry_type_hwlevel">[legacy] </span> 6740 6741 6742 6743 <ul class="entry_type_enum"> 6744 <li> 6745 <span class="entry_type_enum_name">OFF</span> 6746 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens; 6747<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the 6748application.<wbr/></p></span> 6749 </li> 6750 <li> 6751 <span class="entry_type_enum_name">AUTO</span> 6752 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> 6753<p>In this mode,<wbr/> the lens does not move unless 6754the autofocus trigger action is called.<wbr/> When that trigger 6755is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 6756the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> 6757<p>Always supported if lens is not fixed focus.<wbr/></p> 6758<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 6759is fixed-focus.<wbr/></p> 6760<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> 6761and sets the AF state to INACTIVE.<wbr/></p></span> 6762 </li> 6763 <li> 6764 <span class="entry_type_enum_name">MACRO</span> 6765 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> 6766<p>In this mode,<wbr/> the lens does not move unless the 6767autofocus trigger action is called.<wbr/> When that trigger is 6768activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to 6769the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This 6770mode is optimized for focusing on objects very close to 6771the camera.<wbr/></p> 6772<p>When that trigger is activated,<wbr/> AF will transition to 6773ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or 6774NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens 6775position to default,<wbr/> and sets the AF state to 6776INACTIVE.<wbr/></p></span> 6777 </li> 6778 <li> 6779 <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span> 6780 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 6781position continually to attempt to provide a 6782constantly-in-focus image stream.<wbr/></p> 6783<p>The focusing behavior should be suitable for good quality 6784video recording; typically this means slower focus 6785movement and no overshoots.<wbr/> When the AF trigger is not 6786involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> 6787and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED 6788states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> 6789the algorithm should immediately transition into 6790AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 6791lens position until a cancel AF trigger is received.<wbr/></p> 6792<p>Once cancel is received,<wbr/> the algorithm should transition 6793back to INACTIVE and resume passive scan.<wbr/> Note that this 6794behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an 6795ongoing PASSIVE_<wbr/>SCAN must immediately be 6796canceled.<wbr/></p></span> 6797 </li> 6798 <li> 6799 <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span> 6800 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens 6801position continually to attempt to provide a 6802constantly-in-focus image stream.<wbr/></p> 6803<p>The focusing behavior should be suitable for still image 6804capture; typically this means focusing as fast as 6805possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF 6806algorithm should start in INACTIVE state,<wbr/> and then 6807transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as 6808appropriate as it attempts to maintain focus.<wbr/> When the AF 6809trigger is activated,<wbr/> the algorithm should finish its 6810PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into 6811AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the 6812lens position until a cancel AF trigger is received.<wbr/></p> 6813<p>When the AF cancel trigger is activated,<wbr/> the algorithm 6814should transition back to INACTIVE and then act as if it 6815has just been started.<wbr/></p></span> 6816 </li> 6817 <li> 6818 <span class="entry_type_enum_name">EDOF</span> 6819 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> 6820<p>The camera device will produce images with an extended 6821depth of field automatically; no special focusing 6822operations need to be done before taking a picture.<wbr/></p> 6823<p>AF triggers are ignored,<wbr/> and the AF state will always be 6824INACTIVE.<wbr/></p></span> 6825 </li> 6826 </ul> 6827 6828 </td> <!-- entry_type --> 6829 6830 <td class="entry_description"> 6831 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what 6832mode it is set to.<wbr/></p> 6833 </td> 6834 6835 <td class="entry_units"> 6836 </td> 6837 6838 <td class="entry_range"> 6839 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p> 6840 </td> 6841 6842 <td class="entry_tags"> 6843 <ul class="entry_tags"> 6844 <li><a href="#tag_BC">BC</a></li> 6845 </ul> 6846 </td> 6847 6848 </tr> 6849 <tr class="entries_header"> 6850 <th class="th_details" colspan="5">Details</th> 6851 </tr> 6852 <tr class="entry_cont"> 6853 <td class="entry_details" colspan="5"> 6854 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus 6855(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 6856when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device 6857dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before 6858setting <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> 6859<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> 6860the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> 6861in result metadata.<wbr/></p> 6862 </td> 6863 </tr> 6864 6865 <tr class="entries_header"> 6866 <th class="th_details" colspan="5">HAL Implementation Details</th> 6867 </tr> 6868 <tr class="entry_cont"> 6869 <td class="entry_details" colspan="5"> 6870 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a 6871request (<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 6872up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see 6873<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 6874locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move 6875after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that 6876the same focal plane remains in focus.<wbr/></p> 6877<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF 6878scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger 6879(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 6880same lock behavior as above.<wbr/></p> 6881<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the 6882focus 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/> 6883However,<wbr/> the lens must not move regardless of the camera movement for any focus distance 6884manual control.<wbr/></p> 6885<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on 6886camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to 6887remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> 6888by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue 6889that will arise on camera modules with open-loop VCMs.<wbr/></p> 6890 </td> 6891 </tr> 6892 6893 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6894 <!-- end of entry --> 6895 6896 6897 <tr class="entry" id="dynamic_android.control.afRegions"> 6898 <td class="entry_name 6899 " rowspan="5"> 6900 android.<wbr/>control.<wbr/>af<wbr/>Regions 6901 </td> 6902 <td class="entry_type"> 6903 <span class="entry_type_name">int32</span> 6904 <span class="entry_type_container">x</span> 6905 6906 <span class="entry_type_array"> 6907 5 x area_count 6908 </span> 6909 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 6910 6911 6912 6913 6914 6915 6916 </td> <!-- entry_type --> 6917 6918 <td class="entry_description"> 6919 <p>List of metering areas to use for auto-focus.<wbr/></p> 6920 </td> 6921 6922 <td class="entry_units"> 6923 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 6924 </td> 6925 6926 <td class="entry_range"> 6927 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 6928<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 6929 </td> 6930 6931 <td class="entry_tags"> 6932 <ul class="entry_tags"> 6933 <li><a href="#tag_BC">BC</a></li> 6934 </ul> 6935 </td> 6936 6937 </tr> 6938 <tr class="entries_header"> 6939 <th class="th_details" colspan="5">Details</th> 6940 </tr> 6941 <tr class="entry_cont"> 6942 <td class="entry_details" colspan="5"> 6943 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> 6944Otherwise will always be present.<wbr/></p> 6945<p>The maximum number of focus areas supported by the device is determined by the value 6946of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p> 6947<p>The coordinate system is based on the active pixel array,<wbr/> 6948with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 6949(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 6950<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 6951bottom-right pixel in the active pixel array.<wbr/></p> 6952<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight 6953for every pixel in the area.<wbr/> This means that a large metering area 6954with the same weight as a smaller area will have more effect in 6955the metering result.<wbr/> Metering areas can partially overlap and the 6956camera device will add the weights in the overlap region.<wbr/></p> 6957<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region 6958is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is 6959ignored.<wbr/></p> 6960<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 6961camera device.<wbr/></p> 6962<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 6963capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 6964region and output only the intersection rectangle as the metering region in the result 6965metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 6966not reported in the result metadata.<wbr/></p> 6967 </td> 6968 </tr> 6969 6970 <tr class="entries_header"> 6971 <th class="th_details" colspan="5">HAL Implementation Details</th> 6972 </tr> 6973 <tr class="entry_cont"> 6974 <td class="entry_details" colspan="5"> 6975 <p>The HAL level representation of MeteringRectangle[] is a 6976int[5 * area_<wbr/>count].<wbr/> 6977Every five elements represent a metering region of 6978(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 6979The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 6980exclusive on xmax and ymax.<wbr/></p> 6981 </td> 6982 </tr> 6983 6984 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 6985 <!-- end of entry --> 6986 6987 6988 <tr class="entry" id="dynamic_android.control.afTrigger"> 6989 <td class="entry_name 6990 " rowspan="5"> 6991 android.<wbr/>control.<wbr/>af<wbr/>Trigger 6992 </td> 6993 <td class="entry_type"> 6994 <span class="entry_type_name entry_type_name_enum">byte</span> 6995 6996 <span class="entry_type_visibility"> [public]</span> 6997 6998 6999 <span class="entry_type_hwlevel">[legacy] </span> 7000 7001 7002 7003 <ul class="entry_type_enum"> 7004 <li> 7005 <span class="entry_type_enum_name">IDLE</span> 7006 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> 7007 </li> 7008 <li> 7009 <span class="entry_type_enum_name">START</span> 7010 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> 7011 </li> 7012 <li> 7013 <span class="entry_type_enum_name">CANCEL</span> 7014 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial 7015state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> 7016 </li> 7017 </ul> 7018 7019 </td> <!-- entry_type --> 7020 7021 <td class="entry_description"> 7022 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p> 7023 </td> 7024 7025 <td class="entry_units"> 7026 </td> 7027 7028 <td class="entry_range"> 7029 </td> 7030 7031 <td class="entry_tags"> 7032 <ul class="entry_tags"> 7033 <li><a href="#tag_BC">BC</a></li> 7034 </ul> 7035 </td> 7036 7037 </tr> 7038 <tr class="entries_header"> 7039 <th class="th_details" colspan="5">Details</th> 7040 </tr> 7041 <tr class="entry_cont"> 7042 <td class="entry_details" colspan="5"> 7043 <p>This entry is normally set to IDLE,<wbr/> or is not 7044included at all in the request settings.<wbr/></p> 7045<p>When included and set to START,<wbr/> the camera device will trigger the 7046autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> 7047<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> 7048and return to its initial AF state.<wbr/></p> 7049<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a 7050single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying 7051START for multiple captures in a row means restarting the AF operation over 7052and over again.<wbr/></p> 7053<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> 7054<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> 7055simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between 7056the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a 7057focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous 7058trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and 7059changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p> 7060 </td> 7061 </tr> 7062 7063 <tr class="entries_header"> 7064 <th class="th_details" colspan="5">HAL Implementation Details</th> 7065 </tr> 7066 <tr class="entry_cont"> 7067 <td class="entry_details" colspan="5"> 7068 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active 7069(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to 7070treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the 7071AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> 7072to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p> 7073 </td> 7074 </tr> 7075 7076 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7077 <!-- end of entry --> 7078 7079 7080 <tr class="entry" id="dynamic_android.control.afState"> 7081 <td class="entry_name 7082 " rowspan="3"> 7083 android.<wbr/>control.<wbr/>af<wbr/>State 7084 </td> 7085 <td class="entry_type"> 7086 <span class="entry_type_name entry_type_name_enum">byte</span> 7087 7088 <span class="entry_type_visibility"> [public]</span> 7089 7090 7091 <span class="entry_type_hwlevel">[legacy] </span> 7092 7093 7094 7095 <ul class="entry_type_enum"> 7096 <li> 7097 <span class="entry_type_enum_name">INACTIVE</span> 7098 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked 7099to scan.<wbr/></p> 7100<p>When a camera device is opened,<wbr/> it starts in this 7101state.<wbr/> This is a transient state,<wbr/> the camera device may 7102skip reporting this state in capture 7103result.<wbr/></p></span> 7104 </li> 7105 <li> 7106 <span class="entry_type_enum_name">PASSIVE_SCAN</span> 7107 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the 7108camera device in a continuous autofocus mode.<wbr/></p> 7109<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 7110state,<wbr/> the camera device may skip reporting this state in 7111capture result.<wbr/></p></span> 7112 </li> 7113 <li> 7114 <span class="entry_type_enum_name">PASSIVE_FOCUSED</span> 7115 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may 7116restart scanning at any time.<wbr/></p> 7117<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient 7118state,<wbr/> the camera device may skip reporting this state in 7119capture result.<wbr/></p></span> 7120 </li> 7121 <li> 7122 <span class="entry_type_enum_name">ACTIVE_SCAN</span> 7123 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was 7124triggered by AF trigger.<wbr/></p> 7125<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient 7126state,<wbr/> the camera device may skip reporting this state in 7127capture result.<wbr/></p></span> 7128 </li> 7129 <li> 7130 <span class="entry_type_enum_name">FOCUSED_LOCKED</span> 7131 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked 7132focus.<wbr/></p> 7133<p>This state is reached only after an explicit START AF trigger has been 7134sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p> 7135<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 7136a 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> 7137 </li> 7138 <li> 7139 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span> 7140 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked 7141focus.<wbr/></p> 7142<p>This state is reached only after an explicit START AF trigger has been 7143sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p> 7144<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 7145a 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> 7146 </li> 7147 <li> 7148 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span> 7149 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/> 7150and may restart scanning at any time.<wbr/></p> 7151<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera 7152device may skip reporting this state in capture result.<wbr/></p> 7153<p>LEGACY camera devices do not support this state.<wbr/> When a passive 7154scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span> 7155 </li> 7156 </ul> 7157 7158 </td> <!-- entry_type --> 7159 7160 <td class="entry_description"> 7161 <p>Current state of auto-focus (AF) algorithm.<wbr/></p> 7162 </td> 7163 7164 <td class="entry_units"> 7165 </td> 7166 7167 <td class="entry_range"> 7168 </td> 7169 7170 <td class="entry_tags"> 7171 </td> 7172 7173 </tr> 7174 <tr class="entries_header"> 7175 <th class="th_details" colspan="5">Details</th> 7176 </tr> 7177 <tr class="entry_cont"> 7178 <td class="entry_details" colspan="5"> 7179 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always 7180resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 7181or <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 7182the algorithm states to INACTIVE.<wbr/></p> 7183<p>The camera device can do several state transitions between two results,<wbr/> if it is 7184allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be 7185seen in a result.<wbr/></p> 7186<p>The state in the result is the state for this image (in sync with this image): if 7187AF state becomes FOCUSED,<wbr/> then the image data associated with this result should 7188be sharp.<wbr/></p> 7189<p>Below are state transition tables for different AF modes.<wbr/></p> 7190<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> 7191<table> 7192<thead> 7193<tr> 7194<th align="center">State</th> 7195<th align="center">Transition Cause</th> 7196<th align="center">New State</th> 7197<th align="center">Notes</th> 7198</tr> 7199</thead> 7200<tbody> 7201<tr> 7202<td align="center">INACTIVE</td> 7203<td align="center"></td> 7204<td align="center">INACTIVE</td> 7205<td align="center">Never changes</td> 7206</tr> 7207</tbody> 7208</table> 7209<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> 7210<table> 7211<thead> 7212<tr> 7213<th align="center">State</th> 7214<th align="center">Transition Cause</th> 7215<th align="center">New State</th> 7216<th align="center">Notes</th> 7217</tr> 7218</thead> 7219<tbody> 7220<tr> 7221<td align="center">INACTIVE</td> 7222<td align="center">AF_<wbr/>TRIGGER</td> 7223<td align="center">ACTIVE_<wbr/>SCAN</td> 7224<td align="center">Start AF sweep,<wbr/> Lens now moving</td> 7225</tr> 7226<tr> 7227<td align="center">ACTIVE_<wbr/>SCAN</td> 7228<td align="center">AF sweep done</td> 7229<td align="center">FOCUSED_<wbr/>LOCKED</td> 7230<td align="center">Focused,<wbr/> Lens now locked</td> 7231</tr> 7232<tr> 7233<td align="center">ACTIVE_<wbr/>SCAN</td> 7234<td align="center">AF sweep done</td> 7235<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7236<td align="center">Not focused,<wbr/> Lens now locked</td> 7237</tr> 7238<tr> 7239<td align="center">ACTIVE_<wbr/>SCAN</td> 7240<td align="center">AF_<wbr/>CANCEL</td> 7241<td align="center">INACTIVE</td> 7242<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> 7243</tr> 7244<tr> 7245<td align="center">FOCUSED_<wbr/>LOCKED</td> 7246<td align="center">AF_<wbr/>CANCEL</td> 7247<td align="center">INACTIVE</td> 7248<td align="center">Cancel/<wbr/>reset AF</td> 7249</tr> 7250<tr> 7251<td align="center">FOCUSED_<wbr/>LOCKED</td> 7252<td align="center">AF_<wbr/>TRIGGER</td> 7253<td align="center">ACTIVE_<wbr/>SCAN</td> 7254<td align="center">Start new sweep,<wbr/> Lens now moving</td> 7255</tr> 7256<tr> 7257<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7258<td align="center">AF_<wbr/>CANCEL</td> 7259<td align="center">INACTIVE</td> 7260<td align="center">Cancel/<wbr/>reset AF</td> 7261</tr> 7262<tr> 7263<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7264<td align="center">AF_<wbr/>TRIGGER</td> 7265<td align="center">ACTIVE_<wbr/>SCAN</td> 7266<td align="center">Start new sweep,<wbr/> Lens now moving</td> 7267</tr> 7268<tr> 7269<td align="center">Any state</td> 7270<td align="center">Mode change</td> 7271<td align="center">INACTIVE</td> 7272<td align="center"></td> 7273</tr> 7274</tbody> 7275</table> 7276<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 7277without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 7278can be skipped in that manner is called a transient state.<wbr/></p> 7279<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the 7280state transitions listed in above table,<wbr/> it is also legal for the camera device to skip 7281one or more transient states between two results.<wbr/> See below table for examples:</p> 7282<table> 7283<thead> 7284<tr> 7285<th align="center">State</th> 7286<th align="center">Transition Cause</th> 7287<th align="center">New State</th> 7288<th align="center">Notes</th> 7289</tr> 7290</thead> 7291<tbody> 7292<tr> 7293<td align="center">INACTIVE</td> 7294<td align="center">AF_<wbr/>TRIGGER</td> 7295<td align="center">FOCUSED_<wbr/>LOCKED</td> 7296<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 7297</tr> 7298<tr> 7299<td align="center">INACTIVE</td> 7300<td align="center">AF_<wbr/>TRIGGER</td> 7301<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7302<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td> 7303</tr> 7304<tr> 7305<td align="center">FOCUSED_<wbr/>LOCKED</td> 7306<td align="center">AF_<wbr/>TRIGGER</td> 7307<td align="center">FOCUSED_<wbr/>LOCKED</td> 7308<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> 7309</tr> 7310<tr> 7311<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7312<td align="center">AF_<wbr/>TRIGGER</td> 7313<td align="center">FOCUSED_<wbr/>LOCKED</td> 7314<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td> 7315</tr> 7316</tbody> 7317</table> 7318<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> 7319<table> 7320<thead> 7321<tr> 7322<th align="center">State</th> 7323<th align="center">Transition Cause</th> 7324<th align="center">New State</th> 7325<th align="center">Notes</th> 7326</tr> 7327</thead> 7328<tbody> 7329<tr> 7330<td align="center">INACTIVE</td> 7331<td align="center">Camera device initiates new scan</td> 7332<td align="center">PASSIVE_<wbr/>SCAN</td> 7333<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7334</tr> 7335<tr> 7336<td align="center">INACTIVE</td> 7337<td align="center">AF_<wbr/>TRIGGER</td> 7338<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7339<td align="center">AF state query,<wbr/> Lens now locked</td> 7340</tr> 7341<tr> 7342<td align="center">PASSIVE_<wbr/>SCAN</td> 7343<td align="center">Camera device completes current scan</td> 7344<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7345<td align="center">End AF scan,<wbr/> Lens now locked</td> 7346</tr> 7347<tr> 7348<td align="center">PASSIVE_<wbr/>SCAN</td> 7349<td align="center">Camera device fails current scan</td> 7350<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7351<td align="center">End AF scan,<wbr/> Lens now locked</td> 7352</tr> 7353<tr> 7354<td align="center">PASSIVE_<wbr/>SCAN</td> 7355<td align="center">AF_<wbr/>TRIGGER</td> 7356<td align="center">FOCUSED_<wbr/>LOCKED</td> 7357<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td> 7358</tr> 7359<tr> 7360<td align="center">PASSIVE_<wbr/>SCAN</td> 7361<td align="center">AF_<wbr/>TRIGGER</td> 7362<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7363<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td> 7364</tr> 7365<tr> 7366<td align="center">PASSIVE_<wbr/>SCAN</td> 7367<td align="center">AF_<wbr/>CANCEL</td> 7368<td align="center">INACTIVE</td> 7369<td align="center">Reset lens position,<wbr/> Lens now locked</td> 7370</tr> 7371<tr> 7372<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7373<td align="center">Camera device initiates new scan</td> 7374<td align="center">PASSIVE_<wbr/>SCAN</td> 7375<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7376</tr> 7377<tr> 7378<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7379<td align="center">Camera device initiates new scan</td> 7380<td align="center">PASSIVE_<wbr/>SCAN</td> 7381<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7382</tr> 7383<tr> 7384<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7385<td align="center">AF_<wbr/>TRIGGER</td> 7386<td align="center">FOCUSED_<wbr/>LOCKED</td> 7387<td align="center">Immediate transition,<wbr/> lens now locked</td> 7388</tr> 7389<tr> 7390<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7391<td align="center">AF_<wbr/>TRIGGER</td> 7392<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7393<td align="center">Immediate transition,<wbr/> lens now locked</td> 7394</tr> 7395<tr> 7396<td align="center">FOCUSED_<wbr/>LOCKED</td> 7397<td align="center">AF_<wbr/>TRIGGER</td> 7398<td align="center">FOCUSED_<wbr/>LOCKED</td> 7399<td align="center">No effect</td> 7400</tr> 7401<tr> 7402<td align="center">FOCUSED_<wbr/>LOCKED</td> 7403<td align="center">AF_<wbr/>CANCEL</td> 7404<td align="center">INACTIVE</td> 7405<td align="center">Restart AF scan</td> 7406</tr> 7407<tr> 7408<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7409<td align="center">AF_<wbr/>TRIGGER</td> 7410<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7411<td align="center">No effect</td> 7412</tr> 7413<tr> 7414<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7415<td align="center">AF_<wbr/>CANCEL</td> 7416<td align="center">INACTIVE</td> 7417<td align="center">Restart AF scan</td> 7418</tr> 7419</tbody> 7420</table> 7421<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> 7422<table> 7423<thead> 7424<tr> 7425<th align="center">State</th> 7426<th align="center">Transition Cause</th> 7427<th align="center">New State</th> 7428<th align="center">Notes</th> 7429</tr> 7430</thead> 7431<tbody> 7432<tr> 7433<td align="center">INACTIVE</td> 7434<td align="center">Camera device initiates new scan</td> 7435<td align="center">PASSIVE_<wbr/>SCAN</td> 7436<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7437</tr> 7438<tr> 7439<td align="center">INACTIVE</td> 7440<td align="center">AF_<wbr/>TRIGGER</td> 7441<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7442<td align="center">AF state query,<wbr/> Lens now locked</td> 7443</tr> 7444<tr> 7445<td align="center">PASSIVE_<wbr/>SCAN</td> 7446<td align="center">Camera device completes current scan</td> 7447<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7448<td align="center">End AF scan,<wbr/> Lens now locked</td> 7449</tr> 7450<tr> 7451<td align="center">PASSIVE_<wbr/>SCAN</td> 7452<td align="center">Camera device fails current scan</td> 7453<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7454<td align="center">End AF scan,<wbr/> Lens now locked</td> 7455</tr> 7456<tr> 7457<td align="center">PASSIVE_<wbr/>SCAN</td> 7458<td align="center">AF_<wbr/>TRIGGER</td> 7459<td align="center">FOCUSED_<wbr/>LOCKED</td> 7460<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td> 7461</tr> 7462<tr> 7463<td align="center">PASSIVE_<wbr/>SCAN</td> 7464<td align="center">AF_<wbr/>TRIGGER</td> 7465<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7466<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td> 7467</tr> 7468<tr> 7469<td align="center">PASSIVE_<wbr/>SCAN</td> 7470<td align="center">AF_<wbr/>CANCEL</td> 7471<td align="center">INACTIVE</td> 7472<td align="center">Reset lens position,<wbr/> Lens now locked</td> 7473</tr> 7474<tr> 7475<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7476<td align="center">Camera device initiates new scan</td> 7477<td align="center">PASSIVE_<wbr/>SCAN</td> 7478<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7479</tr> 7480<tr> 7481<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7482<td align="center">Camera device initiates new scan</td> 7483<td align="center">PASSIVE_<wbr/>SCAN</td> 7484<td align="center">Start AF scan,<wbr/> Lens now moving</td> 7485</tr> 7486<tr> 7487<td align="center">PASSIVE_<wbr/>FOCUSED</td> 7488<td align="center">AF_<wbr/>TRIGGER</td> 7489<td align="center">FOCUSED_<wbr/>LOCKED</td> 7490<td align="center">Immediate trans.<wbr/> Lens now locked</td> 7491</tr> 7492<tr> 7493<td align="center">PASSIVE_<wbr/>UNFOCUSED</td> 7494<td align="center">AF_<wbr/>TRIGGER</td> 7495<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7496<td align="center">Immediate trans.<wbr/> Lens now locked</td> 7497</tr> 7498<tr> 7499<td align="center">FOCUSED_<wbr/>LOCKED</td> 7500<td align="center">AF_<wbr/>TRIGGER</td> 7501<td align="center">FOCUSED_<wbr/>LOCKED</td> 7502<td align="center">No effect</td> 7503</tr> 7504<tr> 7505<td align="center">FOCUSED_<wbr/>LOCKED</td> 7506<td align="center">AF_<wbr/>CANCEL</td> 7507<td align="center">INACTIVE</td> 7508<td align="center">Restart AF scan</td> 7509</tr> 7510<tr> 7511<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7512<td align="center">AF_<wbr/>TRIGGER</td> 7513<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7514<td align="center">No effect</td> 7515</tr> 7516<tr> 7517<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> 7518<td align="center">AF_<wbr/>CANCEL</td> 7519<td align="center">INACTIVE</td> 7520<td align="center">Restart AF scan</td> 7521</tr> 7522</tbody> 7523</table> 7524<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO 7525(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the 7526camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger 7527will be evaluated in the context of the new mode in the request.<wbr/> 7528See below table for examples:</p> 7529<table> 7530<thead> 7531<tr> 7532<th align="center">State</th> 7533<th align="center">Transition Cause</th> 7534<th align="center">New State</th> 7535<th align="center">Notes</th> 7536</tr> 7537</thead> 7538<tbody> 7539<tr> 7540<td align="center">any state</td> 7541<td align="center">CAF-->AUTO mode switch</td> 7542<td align="center">INACTIVE</td> 7543<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td> 7544</tr> 7545<tr> 7546<td align="center">any state</td> 7547<td align="center">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td> 7548<td align="center">trigger-reachable states from INACTIVE</td> 7549<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td> 7550</tr> 7551<tr> 7552<td align="center">any state</td> 7553<td align="center">AUTO-->CAF mode switch</td> 7554<td align="center">passively reachable states from INACTIVE</td> 7555<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td> 7556</tr> 7557</tbody> 7558</table> 7559 </td> 7560 </tr> 7561 7562 7563 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7564 <!-- end of entry --> 7565 7566 7567 <tr class="entry" id="dynamic_android.control.afTriggerId"> 7568 <td class="entry_name 7569 entry_name_deprecated 7570 " rowspan="3"> 7571 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id 7572 </td> 7573 <td class="entry_type"> 7574 <span class="entry_type_name">int32</span> 7575 7576 <span class="entry_type_visibility"> [system]</span> 7577 7578 7579 7580 <span class="entry_type_deprecated">[deprecated] </span> 7581 7582 7583 7584 </td> <!-- entry_type --> 7585 7586 <td class="entry_description"> 7587 <p>The ID sent with the latest 7588CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p> 7589 </td> 7590 7591 <td class="entry_units"> 7592 </td> 7593 7594 <td class="entry_range"> 7595 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 7596 </td> 7597 7598 <td class="entry_tags"> 7599 </td> 7600 7601 </tr> 7602 <tr class="entries_header"> 7603 <th class="th_details" colspan="5">Details</th> 7604 </tr> 7605 <tr class="entry_cont"> 7606 <td class="entry_details" colspan="5"> 7607 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger 7608received yet by HAL.<wbr/> Always updated even if AF algorithm 7609ignores the trigger</p> 7610 </td> 7611 </tr> 7612 7613 7614 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7615 <!-- end of entry --> 7616 7617 7618 <tr class="entry" id="dynamic_android.control.awbLock"> 7619 <td class="entry_name 7620 " rowspan="3"> 7621 android.<wbr/>control.<wbr/>awb<wbr/>Lock 7622 </td> 7623 <td class="entry_type"> 7624 <span class="entry_type_name entry_type_name_enum">byte</span> 7625 7626 <span class="entry_type_visibility"> [public as boolean]</span> 7627 7628 7629 <span class="entry_type_hwlevel">[legacy] </span> 7630 7631 7632 7633 <ul class="entry_type_enum"> 7634 <li> 7635 <span class="entry_type_enum_name">OFF</span> 7636 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB 7637algorithm is free to update its parameters if in AUTO 7638mode.<wbr/></p></span> 7639 </li> 7640 <li> 7641 <span class="entry_type_enum_name">ON</span> 7642 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB 7643algorithm will not update its parameters while the lock 7644is active.<wbr/></p></span> 7645 </li> 7646 </ul> 7647 7648 </td> <!-- entry_type --> 7649 7650 <td class="entry_description"> 7651 <p>Whether auto-white balance (AWB) is currently locked to its 7652latest calculated values.<wbr/></p> 7653 </td> 7654 7655 <td class="entry_units"> 7656 </td> 7657 7658 <td class="entry_range"> 7659 </td> 7660 7661 <td class="entry_tags"> 7662 <ul class="entry_tags"> 7663 <li><a href="#tag_BC">BC</a></li> 7664 </ul> 7665 </td> 7666 7667 </tr> 7668 <tr class="entries_header"> 7669 <th class="th_details" colspan="5">Details</th> 7670 </tr> 7671 <tr class="entry_cont"> 7672 <td class="entry_details" colspan="5"> 7673 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/> 7674and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p> 7675<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that 7676get locked do not necessarily correspond to the settings that were present in the 7677latest capture result received from the camera device,<wbr/> since additional captures 7678and AWB updates may have occurred even before the result was sent out.<wbr/> If an 7679application is switching between automatic and manual control and wishes to eliminate 7680any flicker during the switch,<wbr/> the following procedure is recommended:</p> 7681<ol> 7682<li>Starting in auto-AWB mode:</li> 7683<li>Lock AWB</li> 7684<li>Wait for the first result to be output that has the AWB locked</li> 7685<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> 7686<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> 7687</ol> 7688<p>Note that AWB lock is only meaningful when 7689<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> 7690AWB is already fixed to a specific setting.<wbr/></p> 7691<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p> 7692 </td> 7693 </tr> 7694 7695 7696 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7697 <!-- end of entry --> 7698 7699 7700 <tr class="entry" id="dynamic_android.control.awbMode"> 7701 <td class="entry_name 7702 " rowspan="3"> 7703 android.<wbr/>control.<wbr/>awb<wbr/>Mode 7704 </td> 7705 <td class="entry_type"> 7706 <span class="entry_type_name entry_type_name_enum">byte</span> 7707 7708 <span class="entry_type_visibility"> [public]</span> 7709 7710 7711 <span class="entry_type_hwlevel">[legacy] </span> 7712 7713 7714 7715 <ul class="entry_type_enum"> 7716 <li> 7717 <span class="entry_type_enum_name">OFF</span> 7718 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p> 7719<p>The application-selected color transform matrix 7720(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains 7721(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera 7722device for manual white balance control.<wbr/></p></span> 7723 </li> 7724 <li> 7725 <span class="entry_type_enum_name">AUTO</span> 7726 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p> 7727<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7728and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7729For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7730values used by the camera device for the transform and gains 7731will be available in the capture result for this request.<wbr/></p></span> 7732 </li> 7733 <li> 7734 <span class="entry_type_enum_name">INCANDESCENT</span> 7735 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7736the camera device uses incandescent light as the assumed scene 7737illumination for white balance.<wbr/></p> 7738<p>While the exact white balance transforms are up to the 7739camera device,<wbr/> they will approximately match the CIE 7740standard illuminant A.<wbr/></p> 7741<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7742and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7743For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7744values used by the camera device for the transform and gains 7745will be available in the capture result for this request.<wbr/></p></span> 7746 </li> 7747 <li> 7748 <span class="entry_type_enum_name">FLUORESCENT</span> 7749 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7750the camera device uses fluorescent light as the assumed scene 7751illumination for white balance.<wbr/></p> 7752<p>While the exact white balance transforms are up to the 7753camera device,<wbr/> they will approximately match the CIE 7754standard illuminant F2.<wbr/></p> 7755<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7756and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7757For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7758values used by the camera device for the transform and gains 7759will be available in the capture result for this request.<wbr/></p></span> 7760 </li> 7761 <li> 7762 <span class="entry_type_enum_name">WARM_FLUORESCENT</span> 7763 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7764the camera device uses warm fluorescent light as the assumed scene 7765illumination for white balance.<wbr/></p> 7766<p>While the exact white balance transforms are up to the 7767camera device,<wbr/> they will approximately match the CIE 7768standard illuminant F4.<wbr/></p> 7769<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7770and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7771For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7772values used by the camera device for the transform and gains 7773will be available in the capture result for this request.<wbr/></p></span> 7774 </li> 7775 <li> 7776 <span class="entry_type_enum_name">DAYLIGHT</span> 7777 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7778the camera device uses daylight light as the assumed scene 7779illumination for white balance.<wbr/></p> 7780<p>While the exact white balance transforms are up to the 7781camera device,<wbr/> they will approximately match the CIE 7782standard illuminant D65.<wbr/></p> 7783<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7784and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7785For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7786values used by the camera device for the transform and gains 7787will be available in the capture result for this request.<wbr/></p></span> 7788 </li> 7789 <li> 7790 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span> 7791 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7792the camera device uses cloudy daylight light as the assumed scene 7793illumination for white balance.<wbr/></p> 7794<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7795and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7796For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7797values used by the camera device for the transform and gains 7798will be available in the capture result for this request.<wbr/></p></span> 7799 </li> 7800 <li> 7801 <span class="entry_type_enum_name">TWILIGHT</span> 7802 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7803the camera device uses twilight light as the assumed scene 7804illumination for white balance.<wbr/></p> 7805<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7806and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7807For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7808values used by the camera device for the transform and gains 7809will be available in the capture result for this request.<wbr/></p></span> 7810 </li> 7811 <li> 7812 <span class="entry_type_enum_name">SHADE</span> 7813 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; 7814the camera device uses shade light as the assumed scene 7815illumination for white balance.<wbr/></p> 7816<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> 7817and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> 7818For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the 7819values used by the camera device for the transform and gains 7820will be available in the capture result for this request.<wbr/></p></span> 7821 </li> 7822 </ul> 7823 7824 </td> <!-- entry_type --> 7825 7826 <td class="entry_description"> 7827 <p>Whether auto-white balance (AWB) is currently setting the color 7828transform fields,<wbr/> and what its illumination target 7829is.<wbr/></p> 7830 </td> 7831 7832 <td class="entry_units"> 7833 </td> 7834 7835 <td class="entry_range"> 7836 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p> 7837 </td> 7838 7839 <td class="entry_tags"> 7840 <ul class="entry_tags"> 7841 <li><a href="#tag_BC">BC</a></li> 7842 </ul> 7843 </td> 7844 7845 </tr> 7846 <tr class="entries_header"> 7847 <th class="th_details" colspan="5">Details</th> 7848 </tr> 7849 <tr class="entry_cont"> 7850 <td class="entry_details" colspan="5"> 7851 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> 7852<p>When set to the ON mode,<wbr/> the camera device's auto-white balance 7853routine is enabled,<wbr/> overriding the application's selected 7854<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 7855<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> 7856is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to 7857also 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 7858setting AE mode to OFF.<wbr/></p> 7859<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance 7860routine is disabled.<wbr/> The application manually controls the white 7861balance 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> 7862and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> 7863<p>When set to any other modes,<wbr/> the camera device's auto-white 7864balance routine is disabled.<wbr/> The camera device uses each 7865particular illumination target for white balance 7866adjustment.<wbr/> The application's values for 7867<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> 7868<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and 7869<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p> 7870 </td> 7871 </tr> 7872 7873 7874 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7875 <!-- end of entry --> 7876 7877 7878 <tr class="entry" id="dynamic_android.control.awbRegions"> 7879 <td class="entry_name 7880 " rowspan="5"> 7881 android.<wbr/>control.<wbr/>awb<wbr/>Regions 7882 </td> 7883 <td class="entry_type"> 7884 <span class="entry_type_name">int32</span> 7885 <span class="entry_type_container">x</span> 7886 7887 <span class="entry_type_array"> 7888 5 x area_count 7889 </span> 7890 <span class="entry_type_visibility"> [public as meteringRectangle]</span> 7891 7892 7893 7894 7895 7896 7897 </td> <!-- entry_type --> 7898 7899 <td class="entry_description"> 7900 <p>List of metering areas to use for auto-white-balance illuminant 7901estimation.<wbr/></p> 7902 </td> 7903 7904 <td class="entry_units"> 7905 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 7906 </td> 7907 7908 <td class="entry_range"> 7909 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of 7910<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p> 7911 </td> 7912 7913 <td class="entry_tags"> 7914 <ul class="entry_tags"> 7915 <li><a href="#tag_BC">BC</a></li> 7916 </ul> 7917 </td> 7918 7919 </tr> 7920 <tr class="entries_header"> 7921 <th class="th_details" colspan="5">Details</th> 7922 </tr> 7923 <tr class="entry_cont"> 7924 <td class="entry_details" colspan="5"> 7925 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/> 7926Otherwise will always be present.<wbr/></p> 7927<p>The maximum number of regions supported by the device is determined by the value 7928of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p> 7929<p>The coordinate system is based on the active pixel array,<wbr/> 7930with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and 7931(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> 7932<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the 7933bottom-right pixel in the active pixel array.<wbr/></p> 7934<p>The weight must range from 0 to 1000,<wbr/> and represents a weight 7935for every pixel in the area.<wbr/> This means that a large metering area 7936with the same weight as a smaller area will have more effect in 7937the metering result.<wbr/> Metering areas can partially overlap and the 7938camera device will add the weights in the overlap region.<wbr/></p> 7939<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if 7940only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 79410 weight is ignored.<wbr/></p> 7942<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the 7943camera device.<wbr/></p> 7944<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 7945capture result metadata,<wbr/> the camera device will ignore the sections outside the crop 7946region and output only the intersection rectangle as the metering region in the result 7947metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and 7948not reported in the result metadata.<wbr/></p> 7949 </td> 7950 </tr> 7951 7952 <tr class="entries_header"> 7953 <th class="th_details" colspan="5">HAL Implementation Details</th> 7954 </tr> 7955 <tr class="entry_cont"> 7956 <td class="entry_details" colspan="5"> 7957 <p>The HAL level representation of MeteringRectangle[] is a 7958int[5 * area_<wbr/>count].<wbr/> 7959Every five elements represent a metering region of 7960(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/> 7961The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but 7962exclusive on xmax and ymax.<wbr/></p> 7963 </td> 7964 </tr> 7965 7966 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 7967 <!-- end of entry --> 7968 7969 7970 <tr class="entry" id="dynamic_android.control.captureIntent"> 7971 <td class="entry_name 7972 " rowspan="3"> 7973 android.<wbr/>control.<wbr/>capture<wbr/>Intent 7974 </td> 7975 <td class="entry_type"> 7976 <span class="entry_type_name entry_type_name_enum">byte</span> 7977 7978 <span class="entry_type_visibility"> [public]</span> 7979 7980 7981 <span class="entry_type_hwlevel">[legacy] </span> 7982 7983 7984 7985 <ul class="entry_type_enum"> 7986 <li> 7987 <span class="entry_type_enum_name">CUSTOM</span> 7988 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other 7989categories.<wbr/> The camera device will default to preview-like 7990behavior.<wbr/></p></span> 7991 </li> 7992 <li> 7993 <span class="entry_type_enum_name">PREVIEW</span> 7994 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> 7995<p>The precapture trigger may be used to start off a metering 7996w/<wbr/>flash sequence.<wbr/></p></span> 7997 </li> 7998 <li> 7999 <span class="entry_type_enum_name">STILL_CAPTURE</span> 8000 <span class="entry_type_enum_notes"><p>This request is for a still capture-type 8001use case.<wbr/></p> 8002<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> 8003 </li> 8004 <li> 8005 <span class="entry_type_enum_name">VIDEO_RECORD</span> 8006 <span class="entry_type_enum_notes"><p>This request is for a video recording 8007use case.<wbr/></p></span> 8008 </li> 8009 <li> 8010 <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> 8011 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still 8012image while recording video) use case.<wbr/></p> 8013<p>The camera device should take the highest-quality image 8014possible (given the other settings) without disrupting the 8015frame rate of video recording.<wbr/> </p></span> 8016 </li> 8017 <li> 8018 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 8019 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the 8020application will stream full-resolution images and 8021reprocess one or several later for a final 8022capture.<wbr/></p></span> 8023 </li> 8024 <li> 8025 <span class="entry_type_enum_name">MANUAL</span> 8026 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where 8027the applications want to directly control the capture parameters.<wbr/></p> 8028<p>For example,<wbr/> the application may wish to manually control 8029<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> 8030 </li> 8031 </ul> 8032 8033 </td> <!-- entry_type --> 8034 8035 <td class="entry_description"> 8036 <p>Information to the camera device 3A (auto-exposure,<wbr/> 8037auto-focus,<wbr/> auto-white balance) routines about the purpose 8038of this capture,<wbr/> to help the camera device to decide optimal 3A 8039strategy.<wbr/></p> 8040 </td> 8041 8042 <td class="entry_units"> 8043 </td> 8044 8045 <td class="entry_range"> 8046 </td> 8047 8048 <td class="entry_tags"> 8049 <ul class="entry_tags"> 8050 <li><a href="#tag_BC">BC</a></li> 8051 </ul> 8052 </td> 8053 8054 </tr> 8055 <tr class="entries_header"> 8056 <th class="th_details" colspan="5">Details</th> 8057 </tr> 8058 <tr class="entry_cont"> 8059 <td class="entry_details" colspan="5"> 8060 <p>This control (except for MANUAL) is only effective if 8061<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> 8062<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 8063contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if 8064<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are 8065always supported.<wbr/></p> 8066 </td> 8067 </tr> 8068 8069 8070 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8071 <!-- end of entry --> 8072 8073 8074 <tr class="entry" id="dynamic_android.control.awbState"> 8075 <td class="entry_name 8076 " rowspan="3"> 8077 android.<wbr/>control.<wbr/>awb<wbr/>State 8078 </td> 8079 <td class="entry_type"> 8080 <span class="entry_type_name entry_type_name_enum">byte</span> 8081 8082 <span class="entry_type_visibility"> [public]</span> 8083 8084 8085 <span class="entry_type_hwlevel">[limited] </span> 8086 8087 8088 8089 <ul class="entry_type_enum"> 8090 <li> 8091 <span class="entry_type_enum_name">INACTIVE</span> 8092 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p> 8093<p>When a camera device is opened,<wbr/> it starts in this 8094state.<wbr/> This is a transient state,<wbr/> the camera device may 8095skip reporting this state in capture 8096result.<wbr/></p></span> 8097 </li> 8098 <li> 8099 <span class="entry_type_enum_name">SEARCHING</span> 8100 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control 8101values for the current scene.<wbr/></p> 8102<p>This is a transient state,<wbr/> the camera device 8103may skip reporting this state in capture result.<wbr/></p></span> 8104 </li> 8105 <li> 8106 <span class="entry_type_enum_name">CONVERGED</span> 8107 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the 8108current scene.<wbr/></p></span> 8109 </li> 8110 <li> 8111 <span class="entry_type_enum_name">LOCKED</span> 8112 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span> 8113 </li> 8114 </ul> 8115 8116 </td> <!-- entry_type --> 8117 8118 <td class="entry_description"> 8119 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p> 8120 </td> 8121 8122 <td class="entry_units"> 8123 </td> 8124 8125 <td class="entry_range"> 8126 </td> 8127 8128 <td class="entry_tags"> 8129 </td> 8130 8131 </tr> 8132 <tr class="entries_header"> 8133 <th class="th_details" colspan="5">Details</th> 8134 </tr> 8135 <tr class="entry_cont"> 8136 <td class="entry_details" colspan="5"> 8137 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always 8138resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> 8139or <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 8140the algorithm states to INACTIVE.<wbr/></p> 8141<p>The camera device can do several state transitions between two results,<wbr/> if it is 8142allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in 8143a result.<wbr/></p> 8144<p>The state in the result is the state for this image (in sync with this image): if 8145AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should 8146be good to use.<wbr/></p> 8147<p>Below are state transition tables for different AWB modes.<wbr/></p> 8148<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p> 8149<table> 8150<thead> 8151<tr> 8152<th align="center">State</th> 8153<th align="center">Transition Cause</th> 8154<th align="center">New State</th> 8155<th align="center">Notes</th> 8156</tr> 8157</thead> 8158<tbody> 8159<tr> 8160<td align="center">INACTIVE</td> 8161<td align="center"></td> 8162<td align="center">INACTIVE</td> 8163<td align="center">Camera device auto white balance algorithm is disabled</td> 8164</tr> 8165</tbody> 8166</table> 8167<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p> 8168<table> 8169<thead> 8170<tr> 8171<th align="center">State</th> 8172<th align="center">Transition Cause</th> 8173<th align="center">New State</th> 8174<th align="center">Notes</th> 8175</tr> 8176</thead> 8177<tbody> 8178<tr> 8179<td align="center">INACTIVE</td> 8180<td align="center">Camera device initiates AWB scan</td> 8181<td align="center">SEARCHING</td> 8182<td align="center">Values changing</td> 8183</tr> 8184<tr> 8185<td align="center">INACTIVE</td> 8186<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 8187<td align="center">LOCKED</td> 8188<td align="center">Values locked</td> 8189</tr> 8190<tr> 8191<td align="center">SEARCHING</td> 8192<td align="center">Camera device finishes AWB scan</td> 8193<td align="center">CONVERGED</td> 8194<td align="center">Good values,<wbr/> not changing</td> 8195</tr> 8196<tr> 8197<td align="center">SEARCHING</td> 8198<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 8199<td align="center">LOCKED</td> 8200<td align="center">Values locked</td> 8201</tr> 8202<tr> 8203<td align="center">CONVERGED</td> 8204<td align="center">Camera device initiates AWB scan</td> 8205<td align="center">SEARCHING</td> 8206<td align="center">Values changing</td> 8207</tr> 8208<tr> 8209<td align="center">CONVERGED</td> 8210<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> 8211<td align="center">LOCKED</td> 8212<td align="center">Values locked</td> 8213</tr> 8214<tr> 8215<td align="center">LOCKED</td> 8216<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 8217<td align="center">SEARCHING</td> 8218<td align="center">Values not good after unlock</td> 8219</tr> 8220</tbody> 8221</table> 8222<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen 8223without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that 8224can be skipped in that manner is called a transient state.<wbr/></p> 8225<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions 8226listed in above table,<wbr/> it is also legal for the camera device to skip one or more 8227transient states between two results.<wbr/> See below table for examples:</p> 8228<table> 8229<thead> 8230<tr> 8231<th align="center">State</th> 8232<th align="center">Transition Cause</th> 8233<th align="center">New State</th> 8234<th align="center">Notes</th> 8235</tr> 8236</thead> 8237<tbody> 8238<tr> 8239<td align="center">INACTIVE</td> 8240<td align="center">Camera device finished AWB scan</td> 8241<td align="center">CONVERGED</td> 8242<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> 8243</tr> 8244<tr> 8245<td align="center">LOCKED</td> 8246<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> 8247<td align="center">CONVERGED</td> 8248<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td> 8249</tr> 8250</tbody> 8251</table> 8252 </td> 8253 </tr> 8254 8255 8256 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8257 <!-- end of entry --> 8258 8259 8260 <tr class="entry" id="dynamic_android.control.effectMode"> 8261 <td class="entry_name 8262 " rowspan="3"> 8263 android.<wbr/>control.<wbr/>effect<wbr/>Mode 8264 </td> 8265 <td class="entry_type"> 8266 <span class="entry_type_name entry_type_name_enum">byte</span> 8267 8268 <span class="entry_type_visibility"> [public]</span> 8269 8270 8271 <span class="entry_type_hwlevel">[legacy] </span> 8272 8273 8274 8275 <ul class="entry_type_enum"> 8276 <li> 8277 <span class="entry_type_enum_name">OFF</span> 8278 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span> 8279 </li> 8280 <li> 8281 <span class="entry_type_enum_name">MONO</span> 8282 <span class="entry_type_enum_optional">[optional]</span> 8283 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into 8284a single color.<wbr/></p> 8285<p>This will typically be grayscale.<wbr/></p></span> 8286 </li> 8287 <li> 8288 <span class="entry_type_enum_name">NEGATIVE</span> 8289 <span class="entry_type_enum_optional">[optional]</span> 8290 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors 8291are inverted.<wbr/></p></span> 8292 </li> 8293 <li> 8294 <span class="entry_type_enum_name">SOLARIZE</span> 8295 <span class="entry_type_enum_optional">[optional]</span> 8296 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the 8297image is wholly or partially reversed in 8298tone.<wbr/></p></span> 8299 </li> 8300 <li> 8301 <span class="entry_type_enum_name">SEPIA</span> 8302 <span class="entry_type_enum_optional">[optional]</span> 8303 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm 8304gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> 8305 </li> 8306 <li> 8307 <span class="entry_type_enum_name">POSTERIZE</span> 8308 <span class="entry_type_enum_optional">[optional]</span> 8309 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses 8310discrete regions of tone rather than a continuous 8311gradient of tones.<wbr/></p></span> 8312 </li> 8313 <li> 8314 <span class="entry_type_enum_name">WHITEBOARD</span> 8315 <span class="entry_type_enum_optional">[optional]</span> 8316 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed 8317as regions of white,<wbr/> with black or grey details.<wbr/></p></span> 8318 </li> 8319 <li> 8320 <span class="entry_type_enum_name">BLACKBOARD</span> 8321 <span class="entry_type_enum_optional">[optional]</span> 8322 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed 8323as regions of black,<wbr/> with white or grey details.<wbr/></p></span> 8324 </li> 8325 <li> 8326 <span class="entry_type_enum_name">AQUA</span> 8327 <span class="entry_type_enum_optional">[optional]</span> 8328 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> 8329 </li> 8330 </ul> 8331 8332 </td> <!-- entry_type --> 8333 8334 <td class="entry_description"> 8335 <p>A special color effect to apply.<wbr/></p> 8336 </td> 8337 8338 <td class="entry_units"> 8339 </td> 8340 8341 <td class="entry_range"> 8342 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p> 8343 </td> 8344 8345 <td class="entry_tags"> 8346 <ul class="entry_tags"> 8347 <li><a href="#tag_BC">BC</a></li> 8348 </ul> 8349 </td> 8350 8351 </tr> 8352 <tr class="entries_header"> 8353 <th class="th_details" colspan="5">Details</th> 8354 </tr> 8355 <tr class="entry_cont"> 8356 <td class="entry_details" colspan="5"> 8357 <p>When this mode is set,<wbr/> a color effect will be applied 8358to images produced by the camera device.<wbr/> The interpretation 8359and implementation of these color effects is left to the 8360implementor of the camera device,<wbr/> and should not be 8361depended on to be consistent (or present) across all 8362devices.<wbr/></p> 8363 </td> 8364 </tr> 8365 8366 8367 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8368 <!-- end of entry --> 8369 8370 8371 <tr class="entry" id="dynamic_android.control.mode"> 8372 <td class="entry_name 8373 " rowspan="3"> 8374 android.<wbr/>control.<wbr/>mode 8375 </td> 8376 <td class="entry_type"> 8377 <span class="entry_type_name entry_type_name_enum">byte</span> 8378 8379 <span class="entry_type_visibility"> [public]</span> 8380 8381 8382 <span class="entry_type_hwlevel">[legacy] </span> 8383 8384 8385 8386 <ul class="entry_type_enum"> 8387 <li> 8388 <span class="entry_type_enum_name">OFF</span> 8389 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p> 8390<p>All control by the device's metering and focusing (3A) 8391routines is disabled,<wbr/> and no other settings in 8392android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that 8393<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera 8394device to select post-processing values for processing 8395blocks that do not allow for manual control,<wbr/> or are not 8396exposed by the camera API.<wbr/></p> 8397<p>However,<wbr/> the camera device's 3A routines may continue to 8398collect statistics and update their internal state so that 8399when control is switched to AUTO mode,<wbr/> good control values 8400can be immediately applied.<wbr/></p></span> 8401 </li> 8402 <li> 8403 <span class="entry_type_enum_name">AUTO</span> 8404 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> 8405<p>Manual control of capture parameters is disabled.<wbr/> All 8406controls in android.<wbr/>control.<wbr/>* besides sceneMode take 8407effect.<wbr/></p></span> 8408 </li> 8409 <li> 8410 <span class="entry_type_enum_name">USE_SCENE_MODE</span> 8411 <span class="entry_type_enum_optional">[optional]</span> 8412 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> 8413<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and 8414control.<wbr/>afMode controls; the camera device will ignore 8415those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for 8416FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> 8417This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> 8418<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> 8419contain some modes other than DISABLED).<wbr/></p></span> 8420 </li> 8421 <li> 8422 <span class="entry_type_enum_name">OFF_KEEP_STATE</span> 8423 <span class="entry_type_enum_optional">[optional]</span> 8424 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be 8425used by camera device background auto-exposure,<wbr/> auto-white balance and 8426auto-focus algorithms (3A) to update their statistics.<wbr/></p> 8427<p>Specifically,<wbr/> the 3A routines are locked to the last 8428values set from a request with AUTO,<wbr/> OFF,<wbr/> or 8429USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates 8430collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be 8431discarded by the camera device.<wbr/></p></span> 8432 </li> 8433 </ul> 8434 8435 </td> <!-- entry_type --> 8436 8437 <td class="entry_description"> 8438 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control 8439routines.<wbr/></p> 8440 </td> 8441 8442 <td class="entry_units"> 8443 </td> 8444 8445 <td class="entry_range"> 8446 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p> 8447 </td> 8448 8449 <td class="entry_tags"> 8450 <ul class="entry_tags"> 8451 <li><a href="#tag_BC">BC</a></li> 8452 </ul> 8453 </td> 8454 8455 </tr> 8456 <tr class="entries_header"> 8457 <th class="th_details" colspan="5">Details</th> 8458 </tr> 8459 <tr class="entry_cont"> 8460 <td class="entry_details" colspan="5"> 8461 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control 8462by the camera device is disabled.<wbr/> The application must set the fields for 8463capture parameters itself.<wbr/></p> 8464<p>When set to AUTO,<wbr/> the individual algorithm controls in 8465android.<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> 8466<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in 8467android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements 8468one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) 8469as it wishes.<wbr/> The camera device scene mode 3A settings are provided by 8470<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> 8471<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference 8472is that this frame will not be used by camera device background 3A statistics 8473update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario 8474where the application doesn't want a 3A manual control capture to affect 8475the subsequent auto 3A capture results.<wbr/></p> 8476 </td> 8477 </tr> 8478 8479 8480 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8481 <!-- end of entry --> 8482 8483 8484 <tr class="entry" id="dynamic_android.control.sceneMode"> 8485 <td class="entry_name 8486 " rowspan="5"> 8487 android.<wbr/>control.<wbr/>scene<wbr/>Mode 8488 </td> 8489 <td class="entry_type"> 8490 <span class="entry_type_name entry_type_name_enum">byte</span> 8491 8492 <span class="entry_type_visibility"> [public]</span> 8493 8494 8495 <span class="entry_type_hwlevel">[legacy] </span> 8496 8497 8498 8499 <ul class="entry_type_enum"> 8500 <li> 8501 <span class="entry_type_enum_name">DISABLED</span> 8502 <span class="entry_type_enum_value">0</span> 8503 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> 8504 </li> 8505 <li> 8506 <span class="entry_type_enum_name">FACE_PRIORITY</span> 8507 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face 8508detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and 8509auto-exposure routines.<wbr/></p> 8510<p>If face detection statistics are disabled 8511(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/> 8512this should still operate correctly (but will not return 8513face detection statistics to the framework).<wbr/></p> 8514<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8515<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> 8516remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> 8517 </li> 8518 <li> 8519 <span class="entry_type_enum_name">ACTION</span> 8520 <span class="entry_type_enum_optional">[optional]</span> 8521 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> 8522<p>Similar to SPORTS.<wbr/></p></span> 8523 </li> 8524 <li> 8525 <span class="entry_type_enum_name">PORTRAIT</span> 8526 <span class="entry_type_enum_optional">[optional]</span> 8527 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> 8528 </li> 8529 <li> 8530 <span class="entry_type_enum_name">LANDSCAPE</span> 8531 <span class="entry_type_enum_optional">[optional]</span> 8532 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> 8533 </li> 8534 <li> 8535 <span class="entry_type_enum_name">NIGHT</span> 8536 <span class="entry_type_enum_optional">[optional]</span> 8537 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> 8538 </li> 8539 <li> 8540 <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> 8541 <span class="entry_type_enum_optional">[optional]</span> 8542 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light 8543settings.<wbr/></p></span> 8544 </li> 8545 <li> 8546 <span class="entry_type_enum_name">THEATRE</span> 8547 <span class="entry_type_enum_optional">[optional]</span> 8548 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must 8549remain off.<wbr/></p></span> 8550 </li> 8551 <li> 8552 <span class="entry_type_enum_name">BEACH</span> 8553 <span class="entry_type_enum_optional">[optional]</span> 8554 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> 8555 </li> 8556 <li> 8557 <span class="entry_type_enum_name">SNOW</span> 8558 <span class="entry_type_enum_optional">[optional]</span> 8559 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> 8560 </li> 8561 <li> 8562 <span class="entry_type_enum_name">SUNSET</span> 8563 <span class="entry_type_enum_optional">[optional]</span> 8564 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> 8565 </li> 8566 <li> 8567 <span class="entry_type_enum_name">STEADYPHOTO</span> 8568 <span class="entry_type_enum_optional">[optional]</span> 8569 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of 8570device motion (for example: due to hand shake).<wbr/></p></span> 8571 </li> 8572 <li> 8573 <span class="entry_type_enum_name">FIREWORKS</span> 8574 <span class="entry_type_enum_optional">[optional]</span> 8575 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> 8576 </li> 8577 <li> 8578 <span class="entry_type_enum_name">SPORTS</span> 8579 <span class="entry_type_enum_optional">[optional]</span> 8580 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> 8581<p>Similar to ACTION.<wbr/></p></span> 8582 </li> 8583 <li> 8584 <span class="entry_type_enum_name">PARTY</span> 8585 <span class="entry_type_enum_optional">[optional]</span> 8586 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving 8587people.<wbr/></p></span> 8588 </li> 8589 <li> 8590 <span class="entry_type_enum_name">CANDLELIGHT</span> 8591 <span class="entry_type_enum_optional">[optional]</span> 8592 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source 8593is a flame.<wbr/></p></span> 8594 </li> 8595 <li> 8596 <span class="entry_type_enum_name">BARCODE</span> 8597 <span class="entry_type_enum_optional">[optional]</span> 8598 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode 8599for use by camera applications that wish to read the 8600barcode value.<wbr/></p></span> 8601 </li> 8602 <li> 8603 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span> 8604 <span class="entry_type_enum_deprecated">[deprecated]</span> 8605 <span class="entry_type_enum_optional">[optional]</span> 8606 <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> 8607and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> 8608for high speed video recording.<wbr/></p> 8609<p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> 8610<p>The supported high speed video sizes and fps ranges are specified in 8611<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired 8612output frame rates,<wbr/> the application is only allowed to select video size 8613and fps range combinations listed in this static metadata.<wbr/> The fps range 8614can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> 8615<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 8616ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 8617controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 8618and post-processing parameters is possible.<wbr/> All other controls operate the 8619same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 8620android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 8621<ul> 8622<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 8623<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 8624<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 8625<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 8626<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 8627<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 8628<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 8629<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 8630<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 8631<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 8632</ul> 8633<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 8634<ul> 8635<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> 8636<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 8637<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 8638<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> 8639</ul> 8640<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 8641be lower than what camera can output,<wbr/> depending on the destination Surfaces for 8642the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 8643the application need check if the video encoder is capable of supporting the 8644high frame rate for a given video size,<wbr/> or it will end up with lower recording 8645frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame 8646rate will be bounded by the screen refresh rate.<wbr/></p> 8647<p>The camera device will only support up to 2 output high speed streams 8648(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) 8649in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> 8650<ul> 8651<li>The application created no more than maxNumHighSpeedStreams processed non-stalling 8652format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as 8653min(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> 8654<li>The stream sizes are selected from the sizes reported by 8655<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> 8656<li>No processed non-stalling or raw streams are configured.<wbr/></li> 8657</ul> 8658<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and 8659<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/> 8660the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> 8661and the returned capture result metadata will give the fps range choosen 8662by the camera device.<wbr/></p> 8663<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor 8664reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 8665the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> 8666 </li> 8667 <li> 8668 <span class="entry_type_enum_name">HDR</span> 8669 <span class="entry_type_enum_optional">[optional]</span> 8670 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> 8671<p>In this scene mode,<wbr/> the camera device captures images 8672that keep a larger range of scene illumination levels 8673visible in the final image.<wbr/> For example,<wbr/> when taking a 8674picture of a object in front of a bright window,<wbr/> both 8675the object and the scene through the window may be 8676visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> 8677one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> 8678HDR mode generally takes much longer to capture a single 8679image,<wbr/> has no user control,<wbr/> and may have other artifacts 8680depending on the HDR method used.<wbr/></p> 8681<p>Therefore,<wbr/> HDR captures operate at a much slower rate 8682than regular captures.<wbr/></p> 8683<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request 8684is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of 8685STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image 8686using a high dynamic range capture technique.<wbr/> On LEGACY 8687devices,<wbr/> captures that target a JPEG-format output will 8688be captured with HDR,<wbr/> and the capture intent is not 8689relevant.<wbr/></p> 8690<p>The HDR capture may involve the device capturing a burst 8691of images internally and combining them into one,<wbr/> or it 8692may involve the device using specialized high dynamic 8693range capture hardware.<wbr/> In all cases,<wbr/> a single image is 8694produced in response to a capture request submitted 8695while in HDR mode.<wbr/></p> 8696<p>Since substantial post-processing is generally needed to 8697produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG 8698outputs are supported for LIMITED/<wbr/>FULL device HDR 8699captures,<wbr/> and only JPEG outputs are supported for LEGACY 8700HDR captures.<wbr/> Using a RAW output for HDR capture is not 8701supported.<wbr/></p> 8702<p>Some devices may also support always-on HDR,<wbr/> which 8703applies HDR processing at full frame rate.<wbr/> For these 8704devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also 8705produce an HDR output with no frame rate impact compared 8706to normal operation,<wbr/> though the quality may be lower 8707than for STILL_<wbr/>CAPTURE intents.<wbr/></p> 8708<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types 8709or capture intents,<wbr/> the images captured will be as if 8710the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span> 8711 </li> 8712 <li> 8713 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span> 8714 <span class="entry_type_enum_optional">[optional]</span> 8715 <span class="entry_type_enum_hidden">[hidden]</span> 8716 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera 8717device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) 8718under low light conditions.<wbr/></p> 8719<p>The camera device may be tuned to expose the images in a reduced 8720sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> 8721if 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/> 8722the camera device auto-exposure routine tuning process may limit the actual 8723exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't 8724exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under 8725low light may be under-exposed when the sensor max exposure time (bounded by the 8726<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 8727ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the 8728camera device auto-exposure routine to increase the sensitivity up to the max 8729sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too 8730dark and the max exposure time is reached.<wbr/> The captured images may be noisier 8731compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is 8732recommended that the application only use this scene mode when it is capable of 8733reducing the noise level of the captured images.<wbr/></p> 8734<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8735<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> 8736remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> 8737 </li> 8738 <li> 8739 <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span> 8740 <span class="entry_type_enum_optional">[optional]</span> 8741 <span class="entry_type_enum_hidden">[hidden]</span> 8742 <span class="entry_type_enum_value">100</span> 8743 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 8744<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 8745customized scene modes.<wbr/></p></span> 8746 </li> 8747 <li> 8748 <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span> 8749 <span class="entry_type_enum_optional">[optional]</span> 8750 <span class="entry_type_enum_hidden">[hidden]</span> 8751 <span class="entry_type_enum_value">127</span> 8752 <span class="entry_type_enum_notes"><p>Scene mode values within the range of 8753<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific 8754customized scene modes.<wbr/></p></span> 8755 </li> 8756 </ul> 8757 8758 </td> <!-- entry_type --> 8759 8760 <td class="entry_description"> 8761 <p>Control for which scene mode is currently active.<wbr/></p> 8762 </td> 8763 8764 <td class="entry_units"> 8765 </td> 8766 8767 <td class="entry_range"> 8768 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p> 8769 </td> 8770 8771 <td class="entry_tags"> 8772 <ul class="entry_tags"> 8773 <li><a href="#tag_BC">BC</a></li> 8774 </ul> 8775 </td> 8776 8777 </tr> 8778 <tr class="entries_header"> 8779 <th class="th_details" colspan="5">Details</th> 8780 </tr> 8781 <tr class="entry_cont"> 8782 <td class="entry_details" colspan="5"> 8783 <p>Scene modes are custom camera modes optimized for a certain set of conditions and 8784capture settings.<wbr/></p> 8785<p>This is the mode that that is active when 8786<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 8787disable <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> 8788while in use.<wbr/></p> 8789<p>The interpretation and implementation of these scene modes is left 8790to the implementor of the camera device.<wbr/> Their behavior will not be 8791consistent across all devices,<wbr/> and any given device may only implement 8792a subset of these modes.<wbr/></p> 8793 </td> 8794 </tr> 8795 8796 <tr class="entries_header"> 8797 <th class="th_details" colspan="5">HAL Implementation Details</th> 8798 </tr> 8799 <tr class="entry_cont"> 8800 <td class="entry_details" colspan="5"> 8801 <p>HAL implementations that include scene modes are expected to provide 8802the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> 8803<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 8804<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> 8805<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/> 8806the HAL must list supported video size and fps range in 8807<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/> 88081280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming 8809mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture 8810requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/> 8811This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement 8812<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 8813capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 8814 </td> 8815 </tr> 8816 8817 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8818 <!-- end of entry --> 8819 8820 8821 <tr class="entry" id="dynamic_android.control.videoStabilizationMode"> 8822 <td class="entry_name 8823 " rowspan="3"> 8824 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode 8825 </td> 8826 <td class="entry_type"> 8827 <span class="entry_type_name entry_type_name_enum">byte</span> 8828 8829 <span class="entry_type_visibility"> [public]</span> 8830 8831 8832 <span class="entry_type_hwlevel">[legacy] </span> 8833 8834 8835 8836 <ul class="entry_type_enum"> 8837 <li> 8838 <span class="entry_type_enum_name">OFF</span> 8839 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span> 8840 </li> 8841 <li> 8842 <span class="entry_type_enum_name">ON</span> 8843 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> 8844 </li> 8845 </ul> 8846 8847 </td> <!-- entry_type --> 8848 8849 <td class="entry_description"> 8850 <p>Whether video stabilization is 8851active.<wbr/></p> 8852 </td> 8853 8854 <td class="entry_units"> 8855 </td> 8856 8857 <td class="entry_range"> 8858 </td> 8859 8860 <td class="entry_tags"> 8861 <ul class="entry_tags"> 8862 <li><a href="#tag_BC">BC</a></li> 8863 </ul> 8864 </td> 8865 8866 </tr> 8867 <tr class="entries_header"> 8868 <th class="th_details" colspan="5">Details</th> 8869 </tr> 8870 <tr class="entry_cont"> 8871 <td class="entry_details" colspan="5"> 8872 <p>Video stabilization automatically warps images from 8873the camera in order to stabilize motion between consecutive frames.<wbr/></p> 8874<p>If enabled,<wbr/> video stabilization can modify the 8875<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> 8876<p>Switching between different video stabilization modes may take several 8877frames to initialize,<wbr/> the camera device will report the current mode 8878in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> 8879the video stabilization modes in the first several capture results may 8880still be "OFF",<wbr/> and it will become "ON" when the initialization is 8881done.<wbr/></p> 8882<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for 8883stabilization by a device that reports stabilization support.<wbr/> It is guaranteed 8884that an output targeting a MediaRecorder or MediaCodec will be stabilized if 8885the recording resolution is less than or equal to 1920 x 1080 (width less than 8886or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording 8887frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult 8888<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return 8889OFF if the recording output is not stabilized,<wbr/> or if there are no output 8890Surface types that can be stabilized.<wbr/></p> 8891<p>If a camera device supports both this mode and OIS 8892(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may 8893produce undesirable interaction,<wbr/> so it is recommended not to enable 8894both at the same time.<wbr/></p> 8895 </td> 8896 </tr> 8897 8898 8899 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8900 <!-- end of entry --> 8901 8902 8903 <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost"> 8904 <td class="entry_name 8905 " rowspan="3"> 8906 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost 8907 </td> 8908 <td class="entry_type"> 8909 <span class="entry_type_name">int32</span> 8910 8911 <span class="entry_type_visibility"> [public]</span> 8912 8913 8914 8915 8916 8917 8918 </td> <!-- entry_type --> 8919 8920 <td class="entry_description"> 8921 <p>The amount of additional sensitivity boost applied to output images 8922after RAW sensor data is captured.<wbr/></p> 8923 </td> 8924 8925 <td class="entry_units"> 8926 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity 8927 </td> 8928 8929 <td class="entry_range"> 8930 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p> 8931 </td> 8932 8933 <td class="entry_tags"> 8934 </td> 8935 8936 </tr> 8937 <tr class="entries_header"> 8938 <th class="th_details" colspan="5">Details</th> 8939 </tr> 8940 <tr class="entry_cont"> 8941 <td class="entry_details" colspan="5"> 8942 <p>Some camera devices support additional digital sensitivity boosting in the 8943camera processing pipeline after sensor RAW image is captured.<wbr/> 8944Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not 8945have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p> 8946<p>This key will be <code>null</code> for devices that do not support any RAW format 8947outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always 8948present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will 8949list <code>100</code> in this key.<wbr/></p> 8950<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the 8951boost to the nearest supported value.<wbr/> 8952The final boost value used will be available in the output capture result.<wbr/></p> 8953<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images 8954of such device will have the total sensitivity of 8955<code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> * <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> /<wbr/> 100</code> 8956The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p> 8957<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 8958OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 8959 </td> 8960 </tr> 8961 8962 8963 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 8964 <!-- end of entry --> 8965 8966 8967 <tr class="entry" id="dynamic_android.control.enableZsl"> 8968 <td class="entry_name 8969 " rowspan="5"> 8970 android.<wbr/>control.<wbr/>enable<wbr/>Zsl 8971 </td> 8972 <td class="entry_type"> 8973 <span class="entry_type_name entry_type_name_enum">byte</span> 8974 8975 <span class="entry_type_visibility"> [public as boolean]</span> 8976 8977 8978 8979 8980 8981 <ul class="entry_type_enum"> 8982 <li> 8983 <span class="entry_type_enum_name">FALSE</span> 8984 <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE must be captured 8985after previous requests.<wbr/></p></span> 8986 </li> 8987 <li> 8988 <span class="entry_type_enum_name">TRUE</span> 8989 <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE may or may not be 8990captured before previous requests.<wbr/></p></span> 8991 </li> 8992 </ul> 8993 8994 </td> <!-- entry_type --> 8995 8996 <td class="entry_description"> 8997 <p>Allow camera device to enable zero-shutter-lag mode for requests with 8998<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p> 8999 </td> 9000 9001 <td class="entry_units"> 9002 </td> 9003 9004 <td class="entry_range"> 9005 </td> 9006 9007 <td class="entry_tags"> 9008 </td> 9009 9010 </tr> 9011 <tr class="entries_header"> 9012 <th class="th_details" colspan="5">Details</th> 9013 </tr> 9014 <tr class="entry_cont"> 9015 <td class="entry_details" colspan="5"> 9016 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with 9017STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to 9018produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the 9019<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/> 9020Therefore,<wbr/> the contents of the output images and the result metadata may be out of order 9021compared to previous regular requests.<wbr/> enableZsl does not affect requests with other 9022capture intents.<wbr/></p> 9023<p>For example,<wbr/> when requests are submitted in the following order: 9024 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW 9025 Request B: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is STILL_<wbr/>CAPTURE</p> 9026<p>The output images for request B may have contents captured before the output images for 9027request A,<wbr/> and the result metadata for request B may be older than the result metadata for 9028request A.<wbr/></p> 9029<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in 9030the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p> 9031<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in 9032TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always 9033<code>false</code> if present.<wbr/></p> 9034<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all 9035capture templates is always <code>false</code> if present.<wbr/></p> 9036<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p> 9037 </td> 9038 </tr> 9039 9040 <tr class="entries_header"> 9041 <th class="th_details" colspan="5">HAL Implementation Details</th> 9042 </tr> 9043 <tr class="entry_cont"> 9044 <td class="entry_details" colspan="5"> 9045 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE 9046capture intent.<wbr/></p> 9047 </td> 9048 </tr> 9049 9050 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9051 <!-- end of entry --> 9052 9053 9054 9055 <!-- end of kind --> 9056 </tbody> 9057 9058 <!-- end of section --> 9059 <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr> 9060 9061 9062 <tr><td colspan="6" class="kind">controls</td></tr> 9063 9064 <thead class="entries_header"> 9065 <tr> 9066 <th class="th_name">Property Name</th> 9067 <th class="th_type">Type</th> 9068 <th class="th_description">Description</th> 9069 <th class="th_units">Units</th> 9070 <th class="th_range">Range</th> 9071 <th class="th_tags">Tags</th> 9072 </tr> 9073 </thead> 9074 9075 <tbody> 9076 9077 9078 9079 9080 9081 9082 9083 9084 9085 9086 <tr class="entry" id="controls_android.demosaic.mode"> 9087 <td class="entry_name 9088 " rowspan="1"> 9089 android.<wbr/>demosaic.<wbr/>mode 9090 </td> 9091 <td class="entry_type"> 9092 <span class="entry_type_name entry_type_name_enum">byte</span> 9093 9094 <span class="entry_type_visibility"> [system]</span> 9095 9096 9097 9098 9099 9100 <ul class="entry_type_enum"> 9101 <li> 9102 <span class="entry_type_enum_name">FAST</span> 9103 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to 9104Bayer RAW output.<wbr/></p></span> 9105 </li> 9106 <li> 9107 <span class="entry_type_enum_name">HIGH_QUALITY</span> 9108 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down 9109relative to raw output.<wbr/></p></span> 9110 </li> 9111 </ul> 9112 9113 </td> <!-- entry_type --> 9114 9115 <td class="entry_description"> 9116 <p>Controls the quality of the demosaicing 9117processing.<wbr/></p> 9118 </td> 9119 9120 <td class="entry_units"> 9121 </td> 9122 9123 <td class="entry_range"> 9124 </td> 9125 9126 <td class="entry_tags"> 9127 <ul class="entry_tags"> 9128 <li><a href="#tag_FUTURE">FUTURE</a></li> 9129 </ul> 9130 </td> 9131 9132 </tr> 9133 9134 9135 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9136 <!-- end of entry --> 9137 9138 9139 9140 <!-- end of kind --> 9141 </tbody> 9142 9143 <!-- end of section --> 9144 <tr><td colspan="6" id="section_edge" class="section">edge</td></tr> 9145 9146 9147 <tr><td colspan="6" class="kind">controls</td></tr> 9148 9149 <thead class="entries_header"> 9150 <tr> 9151 <th class="th_name">Property Name</th> 9152 <th class="th_type">Type</th> 9153 <th class="th_description">Description</th> 9154 <th class="th_units">Units</th> 9155 <th class="th_range">Range</th> 9156 <th class="th_tags">Tags</th> 9157 </tr> 9158 </thead> 9159 9160 <tbody> 9161 9162 9163 9164 9165 9166 9167 9168 9169 9170 9171 <tr class="entry" id="controls_android.edge.mode"> 9172 <td class="entry_name 9173 " rowspan="5"> 9174 android.<wbr/>edge.<wbr/>mode 9175 </td> 9176 <td class="entry_type"> 9177 <span class="entry_type_name entry_type_name_enum">byte</span> 9178 9179 <span class="entry_type_visibility"> [public]</span> 9180 9181 9182 <span class="entry_type_hwlevel">[full] </span> 9183 9184 9185 9186 <ul class="entry_type_enum"> 9187 <li> 9188 <span class="entry_type_enum_name">OFF</span> 9189 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 9190 </li> 9191 <li> 9192 <span class="entry_type_enum_name">FAST</span> 9193 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 9194relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 9195slow down frame rate relative to sensor.<wbr/></p></span> 9196 </li> 9197 <li> 9198 <span class="entry_type_enum_name">HIGH_QUALITY</span> 9199 <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> 9200 </li> 9201 <li> 9202 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 9203 <span class="entry_type_enum_optional">[optional]</span> 9204 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/> 9205based 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 9206edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement 9207applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that 9208frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it 9209is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 9210<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 9211with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 9212high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 9213produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 9214high-resolution buffers must not have edge enhancement applied to maximize efficiency of 9215preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 9216buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 9217reasonable preview quality.<wbr/></p> 9218<p>This mode is guaranteed to be supported by devices that support either the 9219YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 9220(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 9221be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 9222 </li> 9223 </ul> 9224 9225 </td> <!-- entry_type --> 9226 9227 <td class="entry_description"> 9228 <p>Operation mode for edge 9229enhancement.<wbr/></p> 9230 </td> 9231 9232 <td class="entry_units"> 9233 </td> 9234 9235 <td class="entry_range"> 9236 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 9237 </td> 9238 9239 <td class="entry_tags"> 9240 <ul class="entry_tags"> 9241 <li><a href="#tag_V1">V1</a></li> 9242 <li><a href="#tag_REPROC">REPROC</a></li> 9243 </ul> 9244 </td> 9245 9246 </tr> 9247 <tr class="entries_header"> 9248 <th class="th_details" colspan="5">Details</th> 9249 </tr> 9250 <tr class="entry_cont"> 9251 <td class="entry_details" colspan="5"> 9252 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 9253no enhancement will be applied by the camera device.<wbr/></p> 9254<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 9255will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 9256camera device will use the highest-quality enhancement algorithms,<wbr/> 9257even if it slows down capture rate.<wbr/> FAST means the camera device will 9258not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 9259edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 9260amount of enhancement applied.<wbr/></p> 9261<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 9262buffer of high-resolution images during preview and reprocess image(s) from that buffer 9263into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 9264edge enhancement to low-resolution streams (below maximum recording resolution) to 9265maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 9266since those will be reprocessed later if necessary.<wbr/></p> 9267<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 9268device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 9269The camera device may adjust its internal edge enhancement parameters for best 9270image 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> 9271 </td> 9272 </tr> 9273 9274 <tr class="entries_header"> 9275 <th class="th_details" colspan="5">HAL Implementation Details</th> 9276 </tr> 9277 <tr class="entry_cont"> 9278 <td class="entry_details" colspan="5"> 9279 <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 9280adjust the internal edge enhancement reduction parameters appropriately to get the best 9281quality images.<wbr/></p> 9282 </td> 9283 </tr> 9284 9285 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9286 <!-- end of entry --> 9287 9288 9289 <tr class="entry" id="controls_android.edge.strength"> 9290 <td class="entry_name 9291 " rowspan="1"> 9292 android.<wbr/>edge.<wbr/>strength 9293 </td> 9294 <td class="entry_type"> 9295 <span class="entry_type_name">byte</span> 9296 9297 <span class="entry_type_visibility"> [system]</span> 9298 9299 9300 9301 9302 9303 9304 </td> <!-- entry_type --> 9305 9306 <td class="entry_description"> 9307 <p>Control the amount of edge enhancement 9308applied to the images</p> 9309 </td> 9310 9311 <td class="entry_units"> 9312 1-10; 10 is maximum sharpening 9313 </td> 9314 9315 <td class="entry_range"> 9316 </td> 9317 9318 <td class="entry_tags"> 9319 <ul class="entry_tags"> 9320 <li><a href="#tag_FUTURE">FUTURE</a></li> 9321 </ul> 9322 </td> 9323 9324 </tr> 9325 9326 9327 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9328 <!-- end of entry --> 9329 9330 9331 9332 <!-- end of kind --> 9333 </tbody> 9334 <tr><td colspan="6" class="kind">static</td></tr> 9335 9336 <thead class="entries_header"> 9337 <tr> 9338 <th class="th_name">Property Name</th> 9339 <th class="th_type">Type</th> 9340 <th class="th_description">Description</th> 9341 <th class="th_units">Units</th> 9342 <th class="th_range">Range</th> 9343 <th class="th_tags">Tags</th> 9344 </tr> 9345 </thead> 9346 9347 <tbody> 9348 9349 9350 9351 9352 9353 9354 9355 9356 9357 9358 <tr class="entry" id="static_android.edge.availableEdgeModes"> 9359 <td class="entry_name 9360 " rowspan="5"> 9361 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes 9362 </td> 9363 <td class="entry_type"> 9364 <span class="entry_type_name">byte</span> 9365 <span class="entry_type_container">x</span> 9366 9367 <span class="entry_type_array"> 9368 n 9369 </span> 9370 <span class="entry_type_visibility"> [public as enumList]</span> 9371 9372 9373 <span class="entry_type_hwlevel">[full] </span> 9374 9375 9376 <div class="entry_type_notes">list of enums</div> 9377 9378 9379 </td> <!-- entry_type --> 9380 9381 <td class="entry_description"> 9382 <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 9383device.<wbr/></p> 9384 </td> 9385 9386 <td class="entry_units"> 9387 </td> 9388 9389 <td class="entry_range"> 9390 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p> 9391 </td> 9392 9393 <td class="entry_tags"> 9394 <ul class="entry_tags"> 9395 <li><a href="#tag_V1">V1</a></li> 9396 <li><a href="#tag_REPROC">REPROC</a></li> 9397 </ul> 9398 </td> 9399 9400 </tr> 9401 <tr class="entries_header"> 9402 <th class="th_details" colspan="5">Details</th> 9403 </tr> 9404 <tr class="entry_cont"> 9405 <td class="entry_details" colspan="5"> 9406 <p>Full-capability camera devices must always support OFF; camera devices that support 9407YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will 9408list FAST.<wbr/></p> 9409 </td> 9410 </tr> 9411 9412 <tr class="entries_header"> 9413 <th class="th_details" colspan="5">HAL Implementation Details</th> 9414 </tr> 9415 <tr class="entry_cont"> 9416 <td class="entry_details" colspan="5"> 9417 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available 9418on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 9419That is,<wbr/> if the highest quality implementation on the camera device does not slow down 9420capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 9421 </td> 9422 </tr> 9423 9424 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9425 <!-- end of entry --> 9426 9427 9428 9429 <!-- end of kind --> 9430 </tbody> 9431 <tr><td colspan="6" class="kind">dynamic</td></tr> 9432 9433 <thead class="entries_header"> 9434 <tr> 9435 <th class="th_name">Property Name</th> 9436 <th class="th_type">Type</th> 9437 <th class="th_description">Description</th> 9438 <th class="th_units">Units</th> 9439 <th class="th_range">Range</th> 9440 <th class="th_tags">Tags</th> 9441 </tr> 9442 </thead> 9443 9444 <tbody> 9445 9446 9447 9448 9449 9450 9451 9452 9453 9454 9455 <tr class="entry" id="dynamic_android.edge.mode"> 9456 <td class="entry_name 9457 " rowspan="5"> 9458 android.<wbr/>edge.<wbr/>mode 9459 </td> 9460 <td class="entry_type"> 9461 <span class="entry_type_name entry_type_name_enum">byte</span> 9462 9463 <span class="entry_type_visibility"> [public]</span> 9464 9465 9466 <span class="entry_type_hwlevel">[full] </span> 9467 9468 9469 9470 <ul class="entry_type_enum"> 9471 <li> 9472 <span class="entry_type_enum_name">OFF</span> 9473 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> 9474 </li> 9475 <li> 9476 <span class="entry_type_enum_name">FAST</span> 9477 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate 9478relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will 9479slow down frame rate relative to sensor.<wbr/></p></span> 9480 </li> 9481 <li> 9482 <span class="entry_type_enum_name">HIGH_QUALITY</span> 9483 <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> 9484 </li> 9485 <li> 9486 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 9487 <span class="entry_type_enum_optional">[optional]</span> 9488 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/> 9489based 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 9490edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement 9491applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that 9492frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it 9493is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> 9494<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 9495with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 9496high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 9497produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 9498high-resolution buffers must not have edge enhancement applied to maximize efficiency of 9499preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution 9500buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for 9501reasonable preview quality.<wbr/></p> 9502<p>This mode is guaranteed to be supported by devices that support either the 9503YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 9504(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 9505be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 9506 </li> 9507 </ul> 9508 9509 </td> <!-- entry_type --> 9510 9511 <td class="entry_description"> 9512 <p>Operation mode for edge 9513enhancement.<wbr/></p> 9514 </td> 9515 9516 <td class="entry_units"> 9517 </td> 9518 9519 <td class="entry_range"> 9520 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p> 9521 </td> 9522 9523 <td class="entry_tags"> 9524 <ul class="entry_tags"> 9525 <li><a href="#tag_V1">V1</a></li> 9526 <li><a href="#tag_REPROC">REPROC</a></li> 9527 </ul> 9528 </td> 9529 9530 </tr> 9531 <tr class="entries_header"> 9532 <th class="th_details" colspan="5">Details</th> 9533 </tr> 9534 <tr class="entry_cont"> 9535 <td class="entry_details" colspan="5"> 9536 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means 9537no enhancement will be applied by the camera device.<wbr/></p> 9538<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement 9539will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the 9540camera device will use the highest-quality enhancement algorithms,<wbr/> 9541even if it slows down capture rate.<wbr/> FAST means the camera device will 9542not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if 9543edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar 9544amount of enhancement applied.<wbr/></p> 9545<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 9546buffer of high-resolution images during preview and reprocess image(s) from that buffer 9547into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 9548edge enhancement to low-resolution streams (below maximum recording resolution) to 9549maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> 9550since those will be reprocessed later if necessary.<wbr/></p> 9551<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera 9552device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> 9553The camera device may adjust its internal edge enhancement parameters for best 9554image 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> 9555 </td> 9556 </tr> 9557 9558 <tr class="entries_header"> 9559 <th class="th_details" colspan="5">HAL Implementation Details</th> 9560 </tr> 9561 <tr class="entry_cont"> 9562 <td class="entry_details" colspan="5"> 9563 <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 9564adjust the internal edge enhancement reduction parameters appropriately to get the best 9565quality images.<wbr/></p> 9566 </td> 9567 </tr> 9568 9569 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9570 <!-- end of entry --> 9571 9572 9573 9574 <!-- end of kind --> 9575 </tbody> 9576 9577 <!-- end of section --> 9578 <tr><td colspan="6" id="section_flash" class="section">flash</td></tr> 9579 9580 9581 <tr><td colspan="6" class="kind">controls</td></tr> 9582 9583 <thead class="entries_header"> 9584 <tr> 9585 <th class="th_name">Property Name</th> 9586 <th class="th_type">Type</th> 9587 <th class="th_description">Description</th> 9588 <th class="th_units">Units</th> 9589 <th class="th_range">Range</th> 9590 <th class="th_tags">Tags</th> 9591 </tr> 9592 </thead> 9593 9594 <tbody> 9595 9596 9597 9598 9599 9600 9601 9602 9603 9604 9605 <tr class="entry" id="controls_android.flash.firingPower"> 9606 <td class="entry_name 9607 " rowspan="3"> 9608 android.<wbr/>flash.<wbr/>firing<wbr/>Power 9609 </td> 9610 <td class="entry_type"> 9611 <span class="entry_type_name">byte</span> 9612 9613 <span class="entry_type_visibility"> [system]</span> 9614 9615 9616 9617 9618 9619 9620 </td> <!-- entry_type --> 9621 9622 <td class="entry_description"> 9623 <p>Power for flash firing/<wbr/>torch</p> 9624 </td> 9625 9626 <td class="entry_units"> 9627 10 is max power; 0 is no flash.<wbr/> Linear 9628 </td> 9629 9630 <td class="entry_range"> 9631 <p>0 - 10</p> 9632 </td> 9633 9634 <td class="entry_tags"> 9635 <ul class="entry_tags"> 9636 <li><a href="#tag_FUTURE">FUTURE</a></li> 9637 </ul> 9638 </td> 9639 9640 </tr> 9641 <tr class="entries_header"> 9642 <th class="th_details" colspan="5">Details</th> 9643 </tr> 9644 <tr class="entry_cont"> 9645 <td class="entry_details" colspan="5"> 9646 <p>Power for snapshot may use a different scale than 9647for torch mode.<wbr/> Only one entry for torch mode will be 9648used</p> 9649 </td> 9650 </tr> 9651 9652 9653 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9654 <!-- end of entry --> 9655 9656 9657 <tr class="entry" id="controls_android.flash.firingTime"> 9658 <td class="entry_name 9659 " rowspan="3"> 9660 android.<wbr/>flash.<wbr/>firing<wbr/>Time 9661 </td> 9662 <td class="entry_type"> 9663 <span class="entry_type_name">int64</span> 9664 9665 <span class="entry_type_visibility"> [system]</span> 9666 9667 9668 9669 9670 9671 9672 </td> <!-- entry_type --> 9673 9674 <td class="entry_description"> 9675 <p>Firing time of flash relative to start of 9676exposure</p> 9677 </td> 9678 9679 <td class="entry_units"> 9680 nanoseconds 9681 </td> 9682 9683 <td class="entry_range"> 9684 <p>0-(exposure time-flash duration)</p> 9685 </td> 9686 9687 <td class="entry_tags"> 9688 <ul class="entry_tags"> 9689 <li><a href="#tag_FUTURE">FUTURE</a></li> 9690 </ul> 9691 </td> 9692 9693 </tr> 9694 <tr class="entries_header"> 9695 <th class="th_details" colspan="5">Details</th> 9696 </tr> 9697 <tr class="entry_cont"> 9698 <td class="entry_details" colspan="5"> 9699 <p>Clamped to (0,<wbr/> exposure time - flash 9700duration).<wbr/></p> 9701 </td> 9702 </tr> 9703 9704 9705 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9706 <!-- end of entry --> 9707 9708 9709 <tr class="entry" id="controls_android.flash.mode"> 9710 <td class="entry_name 9711 " rowspan="3"> 9712 android.<wbr/>flash.<wbr/>mode 9713 </td> 9714 <td class="entry_type"> 9715 <span class="entry_type_name entry_type_name_enum">byte</span> 9716 9717 <span class="entry_type_visibility"> [public]</span> 9718 9719 9720 <span class="entry_type_hwlevel">[legacy] </span> 9721 9722 9723 9724 <ul class="entry_type_enum"> 9725 <li> 9726 <span class="entry_type_enum_name">OFF</span> 9727 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 9728 </li> 9729 <li> 9730 <span class="entry_type_enum_name">SINGLE</span> 9731 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 9732for this capture.<wbr/></p></span> 9733 </li> 9734 <li> 9735 <span class="entry_type_enum_name">TORCH</span> 9736 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 9737 </li> 9738 </ul> 9739 9740 </td> <!-- entry_type --> 9741 9742 <td class="entry_description"> 9743 <p>The desired mode for for the camera device's flash control.<wbr/></p> 9744 </td> 9745 9746 <td class="entry_units"> 9747 </td> 9748 9749 <td class="entry_range"> 9750 </td> 9751 9752 <td class="entry_tags"> 9753 <ul class="entry_tags"> 9754 <li><a href="#tag_BC">BC</a></li> 9755 </ul> 9756 </td> 9757 9758 </tr> 9759 <tr class="entries_header"> 9760 <th class="th_details" colspan="5">Details</th> 9761 </tr> 9762 <tr class="entry_cont"> 9763 <td class="entry_details" colspan="5"> 9764 <p>This control is only effective when flash unit is available 9765(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 9766<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/> 9767Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 9768ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 9769<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 9770<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 9771device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 9772control should be used along with auto-exposure (AE) precapture metering sequence 9773(<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> 9774<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 9775for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 9776<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> 9777 </td> 9778 </tr> 9779 9780 9781 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9782 <!-- end of entry --> 9783 9784 9785 9786 <!-- end of kind --> 9787 </tbody> 9788 <tr><td colspan="6" class="kind">static</td></tr> 9789 9790 <thead class="entries_header"> 9791 <tr> 9792 <th class="th_name">Property Name</th> 9793 <th class="th_type">Type</th> 9794 <th class="th_description">Description</th> 9795 <th class="th_units">Units</th> 9796 <th class="th_range">Range</th> 9797 <th class="th_tags">Tags</th> 9798 </tr> 9799 </thead> 9800 9801 <tbody> 9802 9803 9804 9805 9806 9807 9808 9809 9810 9811 9812 9813 9814 <tr class="entry" id="static_android.flash.info.available"> 9815 <td class="entry_name 9816 " rowspan="3"> 9817 android.<wbr/>flash.<wbr/>info.<wbr/>available 9818 </td> 9819 <td class="entry_type"> 9820 <span class="entry_type_name entry_type_name_enum">byte</span> 9821 9822 <span class="entry_type_visibility"> [public as boolean]</span> 9823 9824 9825 <span class="entry_type_hwlevel">[legacy] </span> 9826 9827 9828 9829 <ul class="entry_type_enum"> 9830 <li> 9831 <span class="entry_type_enum_name">FALSE</span> 9832 </li> 9833 <li> 9834 <span class="entry_type_enum_name">TRUE</span> 9835 </li> 9836 </ul> 9837 9838 </td> <!-- entry_type --> 9839 9840 <td class="entry_description"> 9841 <p>Whether this camera device has a 9842flash unit.<wbr/></p> 9843 </td> 9844 9845 <td class="entry_units"> 9846 </td> 9847 9848 <td class="entry_range"> 9849 </td> 9850 9851 <td class="entry_tags"> 9852 <ul class="entry_tags"> 9853 <li><a href="#tag_BC">BC</a></li> 9854 </ul> 9855 </td> 9856 9857 </tr> 9858 <tr class="entries_header"> 9859 <th class="th_details" colspan="5">Details</th> 9860 </tr> 9861 <tr class="entry_cont"> 9862 <td class="entry_details" colspan="5"> 9863 <p>Will be <code>false</code> if no flash is available.<wbr/></p> 9864<p>If there is no flash unit,<wbr/> none of the flash controls do 9865anything.<wbr/></p> 9866 </td> 9867 </tr> 9868 9869 9870 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9871 <!-- end of entry --> 9872 9873 9874 <tr class="entry" id="static_android.flash.info.chargeDuration"> 9875 <td class="entry_name 9876 " rowspan="3"> 9877 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration 9878 </td> 9879 <td class="entry_type"> 9880 <span class="entry_type_name">int64</span> 9881 9882 <span class="entry_type_visibility"> [system]</span> 9883 9884 9885 9886 9887 9888 9889 </td> <!-- entry_type --> 9890 9891 <td class="entry_description"> 9892 <p>Time taken before flash can fire 9893again</p> 9894 </td> 9895 9896 <td class="entry_units"> 9897 nanoseconds 9898 </td> 9899 9900 <td class="entry_range"> 9901 <p>0-1e9</p> 9902 </td> 9903 9904 <td class="entry_tags"> 9905 <ul class="entry_tags"> 9906 <li><a href="#tag_FUTURE">FUTURE</a></li> 9907 </ul> 9908 </td> 9909 9910 </tr> 9911 <tr class="entries_header"> 9912 <th class="th_details" colspan="5">Details</th> 9913 </tr> 9914 <tr class="entry_cont"> 9915 <td class="entry_details" colspan="5"> 9916 <p>1 second too long/<wbr/>too short for recharge? Should 9917this be power-dependent?</p> 9918 </td> 9919 </tr> 9920 9921 9922 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9923 <!-- end of entry --> 9924 9925 9926 9927 9928 9929 <tr class="entry" id="static_android.flash.colorTemperature"> 9930 <td class="entry_name 9931 " rowspan="1"> 9932 android.<wbr/>flash.<wbr/>color<wbr/>Temperature 9933 </td> 9934 <td class="entry_type"> 9935 <span class="entry_type_name">byte</span> 9936 9937 <span class="entry_type_visibility"> [system]</span> 9938 9939 9940 9941 9942 9943 9944 </td> <!-- entry_type --> 9945 9946 <td class="entry_description"> 9947 <p>The x,<wbr/>y whitepoint of the 9948flash</p> 9949 </td> 9950 9951 <td class="entry_units"> 9952 pair of floats 9953 </td> 9954 9955 <td class="entry_range"> 9956 <p>0-1 for both</p> 9957 </td> 9958 9959 <td class="entry_tags"> 9960 <ul class="entry_tags"> 9961 <li><a href="#tag_FUTURE">FUTURE</a></li> 9962 </ul> 9963 </td> 9964 9965 </tr> 9966 9967 9968 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 9969 <!-- end of entry --> 9970 9971 9972 <tr class="entry" id="static_android.flash.maxEnergy"> 9973 <td class="entry_name 9974 " rowspan="1"> 9975 android.<wbr/>flash.<wbr/>max<wbr/>Energy 9976 </td> 9977 <td class="entry_type"> 9978 <span class="entry_type_name">byte</span> 9979 9980 <span class="entry_type_visibility"> [system]</span> 9981 9982 9983 9984 9985 9986 9987 </td> <!-- entry_type --> 9988 9989 <td class="entry_description"> 9990 <p>Max energy output of the flash for a full 9991power single flash</p> 9992 </td> 9993 9994 <td class="entry_units"> 9995 lumen-seconds 9996 </td> 9997 9998 <td class="entry_range"> 9999 <p>>= 0</p> 10000 </td> 10001 10002 <td class="entry_tags"> 10003 <ul class="entry_tags"> 10004 <li><a href="#tag_FUTURE">FUTURE</a></li> 10005 </ul> 10006 </td> 10007 10008 </tr> 10009 10010 10011 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10012 <!-- end of entry --> 10013 10014 10015 10016 <!-- end of kind --> 10017 </tbody> 10018 <tr><td colspan="6" class="kind">dynamic</td></tr> 10019 10020 <thead class="entries_header"> 10021 <tr> 10022 <th class="th_name">Property Name</th> 10023 <th class="th_type">Type</th> 10024 <th class="th_description">Description</th> 10025 <th class="th_units">Units</th> 10026 <th class="th_range">Range</th> 10027 <th class="th_tags">Tags</th> 10028 </tr> 10029 </thead> 10030 10031 <tbody> 10032 10033 10034 10035 10036 10037 10038 10039 10040 10041 10042 <tr class="entry" id="dynamic_android.flash.firingPower"> 10043 <td class="entry_name 10044 " rowspan="3"> 10045 android.<wbr/>flash.<wbr/>firing<wbr/>Power 10046 </td> 10047 <td class="entry_type"> 10048 <span class="entry_type_name">byte</span> 10049 10050 <span class="entry_type_visibility"> [system]</span> 10051 10052 10053 10054 10055 10056 10057 </td> <!-- entry_type --> 10058 10059 <td class="entry_description"> 10060 <p>Power for flash firing/<wbr/>torch</p> 10061 </td> 10062 10063 <td class="entry_units"> 10064 10 is max power; 0 is no flash.<wbr/> Linear 10065 </td> 10066 10067 <td class="entry_range"> 10068 <p>0 - 10</p> 10069 </td> 10070 10071 <td class="entry_tags"> 10072 <ul class="entry_tags"> 10073 <li><a href="#tag_FUTURE">FUTURE</a></li> 10074 </ul> 10075 </td> 10076 10077 </tr> 10078 <tr class="entries_header"> 10079 <th class="th_details" colspan="5">Details</th> 10080 </tr> 10081 <tr class="entry_cont"> 10082 <td class="entry_details" colspan="5"> 10083 <p>Power for snapshot may use a different scale than 10084for torch mode.<wbr/> Only one entry for torch mode will be 10085used</p> 10086 </td> 10087 </tr> 10088 10089 10090 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10091 <!-- end of entry --> 10092 10093 10094 <tr class="entry" id="dynamic_android.flash.firingTime"> 10095 <td class="entry_name 10096 " rowspan="3"> 10097 android.<wbr/>flash.<wbr/>firing<wbr/>Time 10098 </td> 10099 <td class="entry_type"> 10100 <span class="entry_type_name">int64</span> 10101 10102 <span class="entry_type_visibility"> [system]</span> 10103 10104 10105 10106 10107 10108 10109 </td> <!-- entry_type --> 10110 10111 <td class="entry_description"> 10112 <p>Firing time of flash relative to start of 10113exposure</p> 10114 </td> 10115 10116 <td class="entry_units"> 10117 nanoseconds 10118 </td> 10119 10120 <td class="entry_range"> 10121 <p>0-(exposure time-flash duration)</p> 10122 </td> 10123 10124 <td class="entry_tags"> 10125 <ul class="entry_tags"> 10126 <li><a href="#tag_FUTURE">FUTURE</a></li> 10127 </ul> 10128 </td> 10129 10130 </tr> 10131 <tr class="entries_header"> 10132 <th class="th_details" colspan="5">Details</th> 10133 </tr> 10134 <tr class="entry_cont"> 10135 <td class="entry_details" colspan="5"> 10136 <p>Clamped to (0,<wbr/> exposure time - flash 10137duration).<wbr/></p> 10138 </td> 10139 </tr> 10140 10141 10142 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10143 <!-- end of entry --> 10144 10145 10146 <tr class="entry" id="dynamic_android.flash.mode"> 10147 <td class="entry_name 10148 " rowspan="3"> 10149 android.<wbr/>flash.<wbr/>mode 10150 </td> 10151 <td class="entry_type"> 10152 <span class="entry_type_name entry_type_name_enum">byte</span> 10153 10154 <span class="entry_type_visibility"> [public]</span> 10155 10156 10157 <span class="entry_type_hwlevel">[legacy] </span> 10158 10159 10160 10161 <ul class="entry_type_enum"> 10162 <li> 10163 <span class="entry_type_enum_name">OFF</span> 10164 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> 10165 </li> 10166 <li> 10167 <span class="entry_type_enum_name">SINGLE</span> 10168 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash 10169for this capture.<wbr/></p></span> 10170 </li> 10171 <li> 10172 <span class="entry_type_enum_name">TORCH</span> 10173 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> 10174 </li> 10175 </ul> 10176 10177 </td> <!-- entry_type --> 10178 10179 <td class="entry_description"> 10180 <p>The desired mode for for the camera device's flash control.<wbr/></p> 10181 </td> 10182 10183 <td class="entry_units"> 10184 </td> 10185 10186 <td class="entry_range"> 10187 </td> 10188 10189 <td class="entry_tags"> 10190 <ul class="entry_tags"> 10191 <li><a href="#tag_BC">BC</a></li> 10192 </ul> 10193 </td> 10194 10195 </tr> 10196 <tr class="entries_header"> 10197 <th class="th_details" colspan="5">Details</th> 10198 </tr> 10199 <tr class="entry_cont"> 10200 <td class="entry_details" colspan="5"> 10201 <p>This control is only effective when flash unit is available 10202(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> 10203<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/> 10204Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> 10205ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> 10206<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> 10207<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera 10208device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this 10209control should be used along with auto-exposure (AE) precapture metering sequence 10210(<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> 10211<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used 10212for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> 10213<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> 10214 </td> 10215 </tr> 10216 10217 10218 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10219 <!-- end of entry --> 10220 10221 10222 <tr class="entry" id="dynamic_android.flash.state"> 10223 <td class="entry_name 10224 " rowspan="3"> 10225 android.<wbr/>flash.<wbr/>state 10226 </td> 10227 <td class="entry_type"> 10228 <span class="entry_type_name entry_type_name_enum">byte</span> 10229 10230 <span class="entry_type_visibility"> [public]</span> 10231 10232 10233 <span class="entry_type_hwlevel">[limited] </span> 10234 10235 10236 10237 <ul class="entry_type_enum"> 10238 <li> 10239 <span class="entry_type_enum_name">UNAVAILABLE</span> 10240 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span> 10241 </li> 10242 <li> 10243 <span class="entry_type_enum_name">CHARGING</span> 10244 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span> 10245 </li> 10246 <li> 10247 <span class="entry_type_enum_name">READY</span> 10248 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span> 10249 </li> 10250 <li> 10251 <span class="entry_type_enum_name">FIRED</span> 10252 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span> 10253 </li> 10254 <li> 10255 <span class="entry_type_enum_name">PARTIAL</span> 10256 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p> 10257<p>This is usually due to the next or previous frame having 10258the flash fire,<wbr/> and the flash spilling into this capture 10259due to hardware limitations.<wbr/></p></span> 10260 </li> 10261 </ul> 10262 10263 </td> <!-- entry_type --> 10264 10265 <td class="entry_description"> 10266 <p>Current state of the flash 10267unit.<wbr/></p> 10268 </td> 10269 10270 <td class="entry_units"> 10271 </td> 10272 10273 <td class="entry_range"> 10274 </td> 10275 10276 <td class="entry_tags"> 10277 </td> 10278 10279 </tr> 10280 <tr class="entries_header"> 10281 <th class="th_details" colspan="5">Details</th> 10282 </tr> 10283 <tr class="entry_cont"> 10284 <td class="entry_details" colspan="5"> 10285 <p>When the camera device doesn't have flash unit 10286(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/> 10287Other states indicate the current flash status.<wbr/></p> 10288<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p> 10289<ul> 10290<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li> 10291<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH 10292 will always return FIRED.<wbr/></li> 10293<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH 10294 will always return FIRED.<wbr/></li> 10295</ul> 10296<p>In all other conditions the state will not be available on 10297LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p> 10298 </td> 10299 </tr> 10300 10301 10302 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10303 <!-- end of entry --> 10304 10305 10306 10307 <!-- end of kind --> 10308 </tbody> 10309 10310 <!-- end of section --> 10311 <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr> 10312 10313 10314 <tr><td colspan="6" class="kind">controls</td></tr> 10315 10316 <thead class="entries_header"> 10317 <tr> 10318 <th class="th_name">Property Name</th> 10319 <th class="th_type">Type</th> 10320 <th class="th_description">Description</th> 10321 <th class="th_units">Units</th> 10322 <th class="th_range">Range</th> 10323 <th class="th_tags">Tags</th> 10324 </tr> 10325 </thead> 10326 10327 <tbody> 10328 10329 10330 10331 10332 10333 10334 10335 10336 10337 10338 <tr class="entry" id="controls_android.hotPixel.mode"> 10339 <td class="entry_name 10340 " rowspan="3"> 10341 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 10342 </td> 10343 <td class="entry_type"> 10344 <span class="entry_type_name entry_type_name_enum">byte</span> 10345 10346 <span class="entry_type_visibility"> [public]</span> 10347 10348 10349 10350 10351 10352 <ul class="entry_type_enum"> 10353 <li> 10354 <span class="entry_type_enum_name">OFF</span> 10355 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 10356<p>The frame rate must not be reduced relative to sensor raw output 10357for this option.<wbr/></p> 10358<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> 10359 </li> 10360 <li> 10361 <span class="entry_type_enum_name">FAST</span> 10362 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 10363rate relative to sensor raw output.<wbr/></p> 10364<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> 10365 </li> 10366 <li> 10367 <span class="entry_type_enum_name">HIGH_QUALITY</span> 10368 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 10369of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 10370<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> 10371 </li> 10372 </ul> 10373 10374 </td> <!-- entry_type --> 10375 10376 <td class="entry_description"> 10377 <p>Operational mode for hot pixel correction.<wbr/></p> 10378 </td> 10379 10380 <td class="entry_units"> 10381 </td> 10382 10383 <td class="entry_range"> 10384 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 10385 </td> 10386 10387 <td class="entry_tags"> 10388 <ul class="entry_tags"> 10389 <li><a href="#tag_V1">V1</a></li> 10390 <li><a href="#tag_RAW">RAW</a></li> 10391 </ul> 10392 </td> 10393 10394 </tr> 10395 <tr class="entries_header"> 10396 <th class="th_details" colspan="5">Details</th> 10397 </tr> 10398 <tr class="entry_cont"> 10399 <td class="entry_details" colspan="5"> 10400 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 10401that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 10402are stuck at an arbitrary value or are oversensitive).<wbr/></p> 10403 </td> 10404 </tr> 10405 10406 10407 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10408 <!-- end of entry --> 10409 10410 10411 10412 <!-- end of kind --> 10413 </tbody> 10414 <tr><td colspan="6" class="kind">static</td></tr> 10415 10416 <thead class="entries_header"> 10417 <tr> 10418 <th class="th_name">Property Name</th> 10419 <th class="th_type">Type</th> 10420 <th class="th_description">Description</th> 10421 <th class="th_units">Units</th> 10422 <th class="th_range">Range</th> 10423 <th class="th_tags">Tags</th> 10424 </tr> 10425 </thead> 10426 10427 <tbody> 10428 10429 10430 10431 10432 10433 10434 10435 10436 10437 10438 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes"> 10439 <td class="entry_name 10440 " rowspan="5"> 10441 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes 10442 </td> 10443 <td class="entry_type"> 10444 <span class="entry_type_name">byte</span> 10445 <span class="entry_type_container">x</span> 10446 10447 <span class="entry_type_array"> 10448 n 10449 </span> 10450 <span class="entry_type_visibility"> [public as enumList]</span> 10451 10452 10453 10454 10455 <div class="entry_type_notes">list of enums</div> 10456 10457 10458 </td> <!-- entry_type --> 10459 10460 <td class="entry_description"> 10461 <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 10462camera device.<wbr/></p> 10463 </td> 10464 10465 <td class="entry_units"> 10466 </td> 10467 10468 <td class="entry_range"> 10469 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p> 10470 </td> 10471 10472 <td class="entry_tags"> 10473 <ul class="entry_tags"> 10474 <li><a href="#tag_V1">V1</a></li> 10475 <li><a href="#tag_RAW">RAW</a></li> 10476 </ul> 10477 </td> 10478 10479 </tr> 10480 <tr class="entries_header"> 10481 <th class="th_details" colspan="5">Details</th> 10482 </tr> 10483 <tr class="entry_cont"> 10484 <td class="entry_details" colspan="5"> 10485 <p>FULL mode camera devices will always support FAST.<wbr/></p> 10486 </td> 10487 </tr> 10488 10489 <tr class="entries_header"> 10490 <th class="th_details" colspan="5">HAL Implementation Details</th> 10491 </tr> 10492 <tr class="entry_cont"> 10493 <td class="entry_details" colspan="5"> 10494 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot 10495pixels than actual pixels on the camera sensor.<wbr/> 10496HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available 10497on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 10498That is,<wbr/> if the highest quality implementation on the camera device does not slow down 10499capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 10500 </td> 10501 </tr> 10502 10503 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10504 <!-- end of entry --> 10505 10506 10507 10508 <!-- end of kind --> 10509 </tbody> 10510 <tr><td colspan="6" class="kind">dynamic</td></tr> 10511 10512 <thead class="entries_header"> 10513 <tr> 10514 <th class="th_name">Property Name</th> 10515 <th class="th_type">Type</th> 10516 <th class="th_description">Description</th> 10517 <th class="th_units">Units</th> 10518 <th class="th_range">Range</th> 10519 <th class="th_tags">Tags</th> 10520 </tr> 10521 </thead> 10522 10523 <tbody> 10524 10525 10526 10527 10528 10529 10530 10531 10532 10533 10534 <tr class="entry" id="dynamic_android.hotPixel.mode"> 10535 <td class="entry_name 10536 " rowspan="3"> 10537 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode 10538 </td> 10539 <td class="entry_type"> 10540 <span class="entry_type_name entry_type_name_enum">byte</span> 10541 10542 <span class="entry_type_visibility"> [public]</span> 10543 10544 10545 10546 10547 10548 <ul class="entry_type_enum"> 10549 <li> 10550 <span class="entry_type_enum_name">OFF</span> 10551 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p> 10552<p>The frame rate must not be reduced relative to sensor raw output 10553for this option.<wbr/></p> 10554<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> 10555 </li> 10556 <li> 10557 <span class="entry_type_enum_name">FAST</span> 10558 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame 10559rate relative to sensor raw output.<wbr/></p> 10560<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> 10561 </li> 10562 <li> 10563 <span class="entry_type_enum_name">HIGH_QUALITY</span> 10564 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost 10565of possibly reduced frame rate relative to sensor raw output.<wbr/></p> 10566<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> 10567 </li> 10568 </ul> 10569 10570 </td> <!-- entry_type --> 10571 10572 <td class="entry_description"> 10573 <p>Operational mode for hot pixel correction.<wbr/></p> 10574 </td> 10575 10576 <td class="entry_units"> 10577 </td> 10578 10579 <td class="entry_range"> 10580 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p> 10581 </td> 10582 10583 <td class="entry_tags"> 10584 <ul class="entry_tags"> 10585 <li><a href="#tag_V1">V1</a></li> 10586 <li><a href="#tag_RAW">RAW</a></li> 10587 </ul> 10588 </td> 10589 10590 </tr> 10591 <tr class="entries_header"> 10592 <th class="th_details" colspan="5">Details</th> 10593 </tr> 10594 <tr class="entry_cont"> 10595 <td class="entry_details" colspan="5"> 10596 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels 10597that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that 10598are stuck at an arbitrary value or are oversensitive).<wbr/></p> 10599 </td> 10600 </tr> 10601 10602 10603 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10604 <!-- end of entry --> 10605 10606 10607 10608 <!-- end of kind --> 10609 </tbody> 10610 10611 <!-- end of section --> 10612 <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr> 10613 10614 10615 <tr><td colspan="6" class="kind">controls</td></tr> 10616 10617 <thead class="entries_header"> 10618 <tr> 10619 <th class="th_name">Property Name</th> 10620 <th class="th_type">Type</th> 10621 <th class="th_description">Description</th> 10622 <th class="th_units">Units</th> 10623 <th class="th_range">Range</th> 10624 <th class="th_tags">Tags</th> 10625 </tr> 10626 </thead> 10627 10628 <tbody> 10629 10630 10631 10632 10633 10634 10635 10636 10637 10638 10639 <tr class="entry" id="controls_android.jpeg.gpsLocation"> 10640 <td class="entry_name 10641 " rowspan="3"> 10642 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 10643 </td> 10644 <td class="entry_type"> 10645 <span class="entry_type_name">byte</span> 10646 10647 <span class="entry_type_visibility"> [java_public as location]</span> 10648 10649 <span class="entry_type_synthetic">[synthetic] </span> 10650 10651 <span class="entry_type_hwlevel">[legacy] </span> 10652 10653 10654 10655 10656 </td> <!-- entry_type --> 10657 10658 <td class="entry_description"> 10659 <p>A location object to use when generating image GPS metadata.<wbr/></p> 10660 </td> 10661 10662 <td class="entry_units"> 10663 </td> 10664 10665 <td class="entry_range"> 10666 </td> 10667 10668 <td class="entry_tags"> 10669 </td> 10670 10671 </tr> 10672 <tr class="entries_header"> 10673 <th class="th_details" colspan="5">Details</th> 10674 </tr> 10675 <tr class="entry_cont"> 10676 <td class="entry_details" colspan="5"> 10677 <p>Setting a location object in a request will include the GPS coordinates of the location 10678into any JPEG images captured based on the request.<wbr/> These coordinates can then be 10679viewed by anyone who receives the JPEG image.<wbr/></p> 10680 </td> 10681 </tr> 10682 10683 10684 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10685 <!-- end of entry --> 10686 10687 10688 <tr class="entry" id="controls_android.jpeg.gpsCoordinates"> 10689 <td class="entry_name 10690 " rowspan="1"> 10691 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 10692 </td> 10693 <td class="entry_type"> 10694 <span class="entry_type_name">double</span> 10695 <span class="entry_type_container">x</span> 10696 10697 <span class="entry_type_array"> 10698 3 10699 </span> 10700 <span class="entry_type_visibility"> [ndk_public]</span> 10701 10702 10703 <span class="entry_type_hwlevel">[legacy] </span> 10704 10705 10706 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 10707 10708 10709 </td> <!-- entry_type --> 10710 10711 <td class="entry_description"> 10712 <p>GPS coordinates to include in output JPEG 10713EXIF.<wbr/></p> 10714 </td> 10715 10716 <td class="entry_units"> 10717 </td> 10718 10719 <td class="entry_range"> 10720 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 10721 </td> 10722 10723 <td class="entry_tags"> 10724 <ul class="entry_tags"> 10725 <li><a href="#tag_BC">BC</a></li> 10726 </ul> 10727 </td> 10728 10729 </tr> 10730 10731 10732 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10733 <!-- end of entry --> 10734 10735 10736 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod"> 10737 <td class="entry_name 10738 " rowspan="1"> 10739 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 10740 </td> 10741 <td class="entry_type"> 10742 <span class="entry_type_name">byte</span> 10743 10744 <span class="entry_type_visibility"> [ndk_public as string]</span> 10745 10746 10747 <span class="entry_type_hwlevel">[legacy] </span> 10748 10749 10750 10751 10752 </td> <!-- entry_type --> 10753 10754 <td class="entry_description"> 10755 <p>32 characters describing GPS algorithm to 10756include in EXIF.<wbr/></p> 10757 </td> 10758 10759 <td class="entry_units"> 10760 UTF-8 null-terminated string 10761 </td> 10762 10763 <td class="entry_range"> 10764 </td> 10765 10766 <td class="entry_tags"> 10767 <ul class="entry_tags"> 10768 <li><a href="#tag_BC">BC</a></li> 10769 </ul> 10770 </td> 10771 10772 </tr> 10773 10774 10775 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10776 <!-- end of entry --> 10777 10778 10779 <tr class="entry" id="controls_android.jpeg.gpsTimestamp"> 10780 <td class="entry_name 10781 " rowspan="1"> 10782 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 10783 </td> 10784 <td class="entry_type"> 10785 <span class="entry_type_name">int64</span> 10786 10787 <span class="entry_type_visibility"> [ndk_public]</span> 10788 10789 10790 <span class="entry_type_hwlevel">[legacy] </span> 10791 10792 10793 10794 10795 </td> <!-- entry_type --> 10796 10797 <td class="entry_description"> 10798 <p>Time GPS fix was made to include in 10799EXIF.<wbr/></p> 10800 </td> 10801 10802 <td class="entry_units"> 10803 UTC in seconds since January 1,<wbr/> 1970 10804 </td> 10805 10806 <td class="entry_range"> 10807 </td> 10808 10809 <td class="entry_tags"> 10810 <ul class="entry_tags"> 10811 <li><a href="#tag_BC">BC</a></li> 10812 </ul> 10813 </td> 10814 10815 </tr> 10816 10817 10818 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10819 <!-- end of entry --> 10820 10821 10822 <tr class="entry" id="controls_android.jpeg.orientation"> 10823 <td class="entry_name 10824 " rowspan="3"> 10825 android.<wbr/>jpeg.<wbr/>orientation 10826 </td> 10827 <td class="entry_type"> 10828 <span class="entry_type_name">int32</span> 10829 10830 <span class="entry_type_visibility"> [public]</span> 10831 10832 10833 <span class="entry_type_hwlevel">[legacy] </span> 10834 10835 10836 10837 10838 </td> <!-- entry_type --> 10839 10840 <td class="entry_description"> 10841 <p>The orientation for a JPEG image.<wbr/></p> 10842 </td> 10843 10844 <td class="entry_units"> 10845 Degrees in multiples of 90 10846 </td> 10847 10848 <td class="entry_range"> 10849 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 10850 </td> 10851 10852 <td class="entry_tags"> 10853 <ul class="entry_tags"> 10854 <li><a href="#tag_BC">BC</a></li> 10855 </ul> 10856 </td> 10857 10858 </tr> 10859 <tr class="entries_header"> 10860 <th class="th_details" colspan="5">Details</th> 10861 </tr> 10862 <tr class="entry_cont"> 10863 <td class="entry_details" colspan="5"> 10864 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 10865to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 10866upright.<wbr/></p> 10867<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 10868rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 10869the thumbnail data will also be rotated.<wbr/></p> 10870<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 10871by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 10872<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following 10873sample code may be used:</p> 10874<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 10875 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 10876 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 10877 10878 //<wbr/> Round device orientation to a multiple of 90 10879 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 10880 10881 //<wbr/> Reverse device orientation for front-facing cameras 10882 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 10883 if (facingFront) deviceOrientation = -deviceOrientation; 10884 10885 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 10886 //<wbr/> the image upright relative to the device orientation 10887 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 10888 10889 return jpegOrientation; 10890} 10891</code></pre> 10892 </td> 10893 </tr> 10894 10895 10896 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10897 <!-- end of entry --> 10898 10899 10900 <tr class="entry" id="controls_android.jpeg.quality"> 10901 <td class="entry_name 10902 " rowspan="3"> 10903 android.<wbr/>jpeg.<wbr/>quality 10904 </td> 10905 <td class="entry_type"> 10906 <span class="entry_type_name">byte</span> 10907 10908 <span class="entry_type_visibility"> [public]</span> 10909 10910 10911 <span class="entry_type_hwlevel">[legacy] </span> 10912 10913 10914 10915 10916 </td> <!-- entry_type --> 10917 10918 <td class="entry_description"> 10919 <p>Compression quality of the final JPEG 10920image.<wbr/></p> 10921 </td> 10922 10923 <td class="entry_units"> 10924 </td> 10925 10926 <td class="entry_range"> 10927 <p>1-100; larger is higher quality</p> 10928 </td> 10929 10930 <td class="entry_tags"> 10931 <ul class="entry_tags"> 10932 <li><a href="#tag_BC">BC</a></li> 10933 </ul> 10934 </td> 10935 10936 </tr> 10937 <tr class="entries_header"> 10938 <th class="th_details" colspan="5">Details</th> 10939 </tr> 10940 <tr class="entry_cont"> 10941 <td class="entry_details" colspan="5"> 10942 <p>85-95 is typical usage range.<wbr/></p> 10943 </td> 10944 </tr> 10945 10946 10947 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10948 <!-- end of entry --> 10949 10950 10951 <tr class="entry" id="controls_android.jpeg.thumbnailQuality"> 10952 <td class="entry_name 10953 " rowspan="1"> 10954 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 10955 </td> 10956 <td class="entry_type"> 10957 <span class="entry_type_name">byte</span> 10958 10959 <span class="entry_type_visibility"> [public]</span> 10960 10961 10962 <span class="entry_type_hwlevel">[legacy] </span> 10963 10964 10965 10966 10967 </td> <!-- entry_type --> 10968 10969 <td class="entry_description"> 10970 <p>Compression quality of JPEG 10971thumbnail.<wbr/></p> 10972 </td> 10973 10974 <td class="entry_units"> 10975 </td> 10976 10977 <td class="entry_range"> 10978 <p>1-100; larger is higher quality</p> 10979 </td> 10980 10981 <td class="entry_tags"> 10982 <ul class="entry_tags"> 10983 <li><a href="#tag_BC">BC</a></li> 10984 </ul> 10985 </td> 10986 10987 </tr> 10988 10989 10990 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 10991 <!-- end of entry --> 10992 10993 10994 <tr class="entry" id="controls_android.jpeg.thumbnailSize"> 10995 <td class="entry_name 10996 " rowspan="5"> 10997 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 10998 </td> 10999 <td class="entry_type"> 11000 <span class="entry_type_name">int32</span> 11001 <span class="entry_type_container">x</span> 11002 11003 <span class="entry_type_array"> 11004 2 11005 </span> 11006 <span class="entry_type_visibility"> [public as size]</span> 11007 11008 11009 <span class="entry_type_hwlevel">[legacy] </span> 11010 11011 11012 11013 11014 </td> <!-- entry_type --> 11015 11016 <td class="entry_description"> 11017 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 11018 </td> 11019 11020 <td class="entry_units"> 11021 </td> 11022 11023 <td class="entry_range"> 11024 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 11025 </td> 11026 11027 <td class="entry_tags"> 11028 <ul class="entry_tags"> 11029 <li><a href="#tag_BC">BC</a></li> 11030 </ul> 11031 </td> 11032 11033 </tr> 11034 <tr class="entries_header"> 11035 <th class="th_details" colspan="5">Details</th> 11036 </tr> 11037 <tr class="entry_cont"> 11038 <td class="entry_details" colspan="5"> 11039 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 11040but the captured JPEG will still be a valid image.<wbr/></p> 11041<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 11042should have the same aspect ratio as the main JPEG output.<wbr/></p> 11043<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 11044ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 11045For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1104616:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 11047generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 11048Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 11049<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 11050the camera device will handle thumbnail rotation in one of the following ways:</p> 11051<ul> 11052<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 11053 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 11054<li>Rotate the jpeg and thumbnail image data and not set 11055 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 11056 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in 11057 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 11058 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 11059 size.<wbr/></li> 11060</ul> 11061 </td> 11062 </tr> 11063 11064 <tr class="entries_header"> 11065 <th class="th_details" colspan="5">HAL Implementation Details</th> 11066 </tr> 11067 <tr class="entry_cont"> 11068 <td class="entry_details" colspan="5"> 11069 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 11070The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 11071The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 11072thumbnail image cropping.<wbr/></p> 11073 </td> 11074 </tr> 11075 11076 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11077 <!-- end of entry --> 11078 11079 11080 11081 <!-- end of kind --> 11082 </tbody> 11083 <tr><td colspan="6" class="kind">static</td></tr> 11084 11085 <thead class="entries_header"> 11086 <tr> 11087 <th class="th_name">Property Name</th> 11088 <th class="th_type">Type</th> 11089 <th class="th_description">Description</th> 11090 <th class="th_units">Units</th> 11091 <th class="th_range">Range</th> 11092 <th class="th_tags">Tags</th> 11093 </tr> 11094 </thead> 11095 11096 <tbody> 11097 11098 11099 11100 11101 11102 11103 11104 11105 11106 11107 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes"> 11108 <td class="entry_name 11109 " rowspan="3"> 11110 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes 11111 </td> 11112 <td class="entry_type"> 11113 <span class="entry_type_name">int32</span> 11114 <span class="entry_type_container">x</span> 11115 11116 <span class="entry_type_array"> 11117 2 x n 11118 </span> 11119 <span class="entry_type_visibility"> [public as size]</span> 11120 11121 11122 <span class="entry_type_hwlevel">[legacy] </span> 11123 11124 11125 11126 11127 </td> <!-- entry_type --> 11128 11129 <td class="entry_description"> 11130 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this 11131camera device.<wbr/></p> 11132 </td> 11133 11134 <td class="entry_units"> 11135 </td> 11136 11137 <td class="entry_range"> 11138 </td> 11139 11140 <td class="entry_tags"> 11141 <ul class="entry_tags"> 11142 <li><a href="#tag_BC">BC</a></li> 11143 </ul> 11144 </td> 11145 11146 </tr> 11147 <tr class="entries_header"> 11148 <th class="th_details" colspan="5">Details</th> 11149 </tr> 11150 <tr class="entry_cont"> 11151 <td class="entry_details" colspan="5"> 11152 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no 11153thumbnail should be generated.<wbr/></p> 11154<p>Below condiditions will be satisfied for this size list:</p> 11155<ul> 11156<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/> 11157If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li> 11158<li>The aspect ratio of the largest thumbnail size will be same as the 11159aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 11160The largest size is defined as the size that has the largest pixel area 11161in a given size list.<wbr/></li> 11162<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 11163one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> 11164and vice versa.<wbr/></li> 11165<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li> 11166</ul> 11167 </td> 11168 </tr> 11169 11170 11171 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11172 <!-- end of entry --> 11173 11174 11175 <tr class="entry" id="static_android.jpeg.maxSize"> 11176 <td class="entry_name 11177 " rowspan="3"> 11178 android.<wbr/>jpeg.<wbr/>max<wbr/>Size 11179 </td> 11180 <td class="entry_type"> 11181 <span class="entry_type_name">int32</span> 11182 11183 <span class="entry_type_visibility"> [system]</span> 11184 11185 11186 11187 11188 11189 11190 </td> <!-- entry_type --> 11191 11192 <td class="entry_description"> 11193 <p>Maximum size in bytes for the compressed 11194JPEG buffer</p> 11195 </td> 11196 11197 <td class="entry_units"> 11198 </td> 11199 11200 <td class="entry_range"> 11201 <p>Must be large enough to fit any JPEG produced by 11202the camera</p> 11203 </td> 11204 11205 <td class="entry_tags"> 11206 </td> 11207 11208 </tr> 11209 <tr class="entries_header"> 11210 <th class="th_details" colspan="5">Details</th> 11211 </tr> 11212 <tr class="entry_cont"> 11213 <td class="entry_details" colspan="5"> 11214 <p>This is used for sizing the gralloc buffers for 11215JPEG</p> 11216 </td> 11217 </tr> 11218 11219 11220 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11221 <!-- end of entry --> 11222 11223 11224 11225 <!-- end of kind --> 11226 </tbody> 11227 <tr><td colspan="6" class="kind">dynamic</td></tr> 11228 11229 <thead class="entries_header"> 11230 <tr> 11231 <th class="th_name">Property Name</th> 11232 <th class="th_type">Type</th> 11233 <th class="th_description">Description</th> 11234 <th class="th_units">Units</th> 11235 <th class="th_range">Range</th> 11236 <th class="th_tags">Tags</th> 11237 </tr> 11238 </thead> 11239 11240 <tbody> 11241 11242 11243 11244 11245 11246 11247 11248 11249 11250 11251 <tr class="entry" id="dynamic_android.jpeg.gpsLocation"> 11252 <td class="entry_name 11253 " rowspan="3"> 11254 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location 11255 </td> 11256 <td class="entry_type"> 11257 <span class="entry_type_name">byte</span> 11258 11259 <span class="entry_type_visibility"> [java_public as location]</span> 11260 11261 <span class="entry_type_synthetic">[synthetic] </span> 11262 11263 <span class="entry_type_hwlevel">[legacy] </span> 11264 11265 11266 11267 11268 </td> <!-- entry_type --> 11269 11270 <td class="entry_description"> 11271 <p>A location object to use when generating image GPS metadata.<wbr/></p> 11272 </td> 11273 11274 <td class="entry_units"> 11275 </td> 11276 11277 <td class="entry_range"> 11278 </td> 11279 11280 <td class="entry_tags"> 11281 </td> 11282 11283 </tr> 11284 <tr class="entries_header"> 11285 <th class="th_details" colspan="5">Details</th> 11286 </tr> 11287 <tr class="entry_cont"> 11288 <td class="entry_details" colspan="5"> 11289 <p>Setting a location object in a request will include the GPS coordinates of the location 11290into any JPEG images captured based on the request.<wbr/> These coordinates can then be 11291viewed by anyone who receives the JPEG image.<wbr/></p> 11292 </td> 11293 </tr> 11294 11295 11296 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11297 <!-- end of entry --> 11298 11299 11300 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates"> 11301 <td class="entry_name 11302 " rowspan="1"> 11303 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates 11304 </td> 11305 <td class="entry_type"> 11306 <span class="entry_type_name">double</span> 11307 <span class="entry_type_container">x</span> 11308 11309 <span class="entry_type_array"> 11310 3 11311 </span> 11312 <span class="entry_type_visibility"> [ndk_public]</span> 11313 11314 11315 <span class="entry_type_hwlevel">[legacy] </span> 11316 11317 11318 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> 11319 11320 11321 </td> <!-- entry_type --> 11322 11323 <td class="entry_description"> 11324 <p>GPS coordinates to include in output JPEG 11325EXIF.<wbr/></p> 11326 </td> 11327 11328 <td class="entry_units"> 11329 </td> 11330 11331 <td class="entry_range"> 11332 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p> 11333 </td> 11334 11335 <td class="entry_tags"> 11336 <ul class="entry_tags"> 11337 <li><a href="#tag_BC">BC</a></li> 11338 </ul> 11339 </td> 11340 11341 </tr> 11342 11343 11344 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11345 <!-- end of entry --> 11346 11347 11348 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod"> 11349 <td class="entry_name 11350 " rowspan="1"> 11351 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method 11352 </td> 11353 <td class="entry_type"> 11354 <span class="entry_type_name">byte</span> 11355 11356 <span class="entry_type_visibility"> [ndk_public as string]</span> 11357 11358 11359 <span class="entry_type_hwlevel">[legacy] </span> 11360 11361 11362 11363 11364 </td> <!-- entry_type --> 11365 11366 <td class="entry_description"> 11367 <p>32 characters describing GPS algorithm to 11368include in EXIF.<wbr/></p> 11369 </td> 11370 11371 <td class="entry_units"> 11372 UTF-8 null-terminated string 11373 </td> 11374 11375 <td class="entry_range"> 11376 </td> 11377 11378 <td class="entry_tags"> 11379 <ul class="entry_tags"> 11380 <li><a href="#tag_BC">BC</a></li> 11381 </ul> 11382 </td> 11383 11384 </tr> 11385 11386 11387 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11388 <!-- end of entry --> 11389 11390 11391 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp"> 11392 <td class="entry_name 11393 " rowspan="1"> 11394 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp 11395 </td> 11396 <td class="entry_type"> 11397 <span class="entry_type_name">int64</span> 11398 11399 <span class="entry_type_visibility"> [ndk_public]</span> 11400 11401 11402 <span class="entry_type_hwlevel">[legacy] </span> 11403 11404 11405 11406 11407 </td> <!-- entry_type --> 11408 11409 <td class="entry_description"> 11410 <p>Time GPS fix was made to include in 11411EXIF.<wbr/></p> 11412 </td> 11413 11414 <td class="entry_units"> 11415 UTC in seconds since January 1,<wbr/> 1970 11416 </td> 11417 11418 <td class="entry_range"> 11419 </td> 11420 11421 <td class="entry_tags"> 11422 <ul class="entry_tags"> 11423 <li><a href="#tag_BC">BC</a></li> 11424 </ul> 11425 </td> 11426 11427 </tr> 11428 11429 11430 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11431 <!-- end of entry --> 11432 11433 11434 <tr class="entry" id="dynamic_android.jpeg.orientation"> 11435 <td class="entry_name 11436 " rowspan="3"> 11437 android.<wbr/>jpeg.<wbr/>orientation 11438 </td> 11439 <td class="entry_type"> 11440 <span class="entry_type_name">int32</span> 11441 11442 <span class="entry_type_visibility"> [public]</span> 11443 11444 11445 <span class="entry_type_hwlevel">[legacy] </span> 11446 11447 11448 11449 11450 </td> <!-- entry_type --> 11451 11452 <td class="entry_description"> 11453 <p>The orientation for a JPEG image.<wbr/></p> 11454 </td> 11455 11456 <td class="entry_units"> 11457 Degrees in multiples of 90 11458 </td> 11459 11460 <td class="entry_range"> 11461 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 11462 </td> 11463 11464 <td class="entry_tags"> 11465 <ul class="entry_tags"> 11466 <li><a href="#tag_BC">BC</a></li> 11467 </ul> 11468 </td> 11469 11470 </tr> 11471 <tr class="entries_header"> 11472 <th class="th_details" colspan="5">Details</th> 11473 </tr> 11474 <tr class="entry_cont"> 11475 <td class="entry_details" colspan="5"> 11476 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation 11477to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed 11478upright.<wbr/></p> 11479<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or 11480rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/> 11481the thumbnail data will also be rotated.<wbr/></p> 11482<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given 11483by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p> 11484<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following 11485sample code may be used:</p> 11486<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) { 11487 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0; 11488 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION); 11489 11490 //<wbr/> Round device orientation to a multiple of 90 11491 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90; 11492 11493 //<wbr/> Reverse device orientation for front-facing cameras 11494 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT; 11495 if (facingFront) deviceOrientation = -deviceOrientation; 11496 11497 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make 11498 //<wbr/> the image upright relative to the device orientation 11499 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360; 11500 11501 return jpegOrientation; 11502} 11503</code></pre> 11504 </td> 11505 </tr> 11506 11507 11508 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11509 <!-- end of entry --> 11510 11511 11512 <tr class="entry" id="dynamic_android.jpeg.quality"> 11513 <td class="entry_name 11514 " rowspan="3"> 11515 android.<wbr/>jpeg.<wbr/>quality 11516 </td> 11517 <td class="entry_type"> 11518 <span class="entry_type_name">byte</span> 11519 11520 <span class="entry_type_visibility"> [public]</span> 11521 11522 11523 <span class="entry_type_hwlevel">[legacy] </span> 11524 11525 11526 11527 11528 </td> <!-- entry_type --> 11529 11530 <td class="entry_description"> 11531 <p>Compression quality of the final JPEG 11532image.<wbr/></p> 11533 </td> 11534 11535 <td class="entry_units"> 11536 </td> 11537 11538 <td class="entry_range"> 11539 <p>1-100; larger is higher quality</p> 11540 </td> 11541 11542 <td class="entry_tags"> 11543 <ul class="entry_tags"> 11544 <li><a href="#tag_BC">BC</a></li> 11545 </ul> 11546 </td> 11547 11548 </tr> 11549 <tr class="entries_header"> 11550 <th class="th_details" colspan="5">Details</th> 11551 </tr> 11552 <tr class="entry_cont"> 11553 <td class="entry_details" colspan="5"> 11554 <p>85-95 is typical usage range.<wbr/></p> 11555 </td> 11556 </tr> 11557 11558 11559 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11560 <!-- end of entry --> 11561 11562 11563 <tr class="entry" id="dynamic_android.jpeg.size"> 11564 <td class="entry_name 11565 " rowspan="3"> 11566 android.<wbr/>jpeg.<wbr/>size 11567 </td> 11568 <td class="entry_type"> 11569 <span class="entry_type_name">int32</span> 11570 11571 <span class="entry_type_visibility"> [system]</span> 11572 11573 11574 11575 11576 11577 11578 </td> <!-- entry_type --> 11579 11580 <td class="entry_description"> 11581 <p>The size of the compressed JPEG image,<wbr/> in 11582bytes</p> 11583 </td> 11584 11585 <td class="entry_units"> 11586 </td> 11587 11588 <td class="entry_range"> 11589 <p>>= 0</p> 11590 </td> 11591 11592 <td class="entry_tags"> 11593 <ul class="entry_tags"> 11594 <li><a href="#tag_FUTURE">FUTURE</a></li> 11595 </ul> 11596 </td> 11597 11598 </tr> 11599 <tr class="entries_header"> 11600 <th class="th_details" colspan="5">Details</th> 11601 </tr> 11602 <tr class="entry_cont"> 11603 <td class="entry_details" colspan="5"> 11604 <p>If no JPEG output is produced for the request,<wbr/> 11605this must be 0.<wbr/></p> 11606<p>Otherwise,<wbr/> this describes the real size of the compressed 11607JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> 11608if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture 11609has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from 11610the JPEG stream will be 1000000 bytes,<wbr/> of which the first 11611500000 make up the real data.<wbr/></p> 11612 </td> 11613 </tr> 11614 11615 11616 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11617 <!-- end of entry --> 11618 11619 11620 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality"> 11621 <td class="entry_name 11622 " rowspan="1"> 11623 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality 11624 </td> 11625 <td class="entry_type"> 11626 <span class="entry_type_name">byte</span> 11627 11628 <span class="entry_type_visibility"> [public]</span> 11629 11630 11631 <span class="entry_type_hwlevel">[legacy] </span> 11632 11633 11634 11635 11636 </td> <!-- entry_type --> 11637 11638 <td class="entry_description"> 11639 <p>Compression quality of JPEG 11640thumbnail.<wbr/></p> 11641 </td> 11642 11643 <td class="entry_units"> 11644 </td> 11645 11646 <td class="entry_range"> 11647 <p>1-100; larger is higher quality</p> 11648 </td> 11649 11650 <td class="entry_tags"> 11651 <ul class="entry_tags"> 11652 <li><a href="#tag_BC">BC</a></li> 11653 </ul> 11654 </td> 11655 11656 </tr> 11657 11658 11659 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11660 <!-- end of entry --> 11661 11662 11663 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize"> 11664 <td class="entry_name 11665 " rowspan="5"> 11666 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size 11667 </td> 11668 <td class="entry_type"> 11669 <span class="entry_type_name">int32</span> 11670 <span class="entry_type_container">x</span> 11671 11672 <span class="entry_type_array"> 11673 2 11674 </span> 11675 <span class="entry_type_visibility"> [public as size]</span> 11676 11677 11678 <span class="entry_type_hwlevel">[legacy] </span> 11679 11680 11681 11682 11683 </td> <!-- entry_type --> 11684 11685 <td class="entry_description"> 11686 <p>Resolution of embedded JPEG thumbnail.<wbr/></p> 11687 </td> 11688 11689 <td class="entry_units"> 11690 </td> 11691 11692 <td class="entry_range"> 11693 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> 11694 </td> 11695 11696 <td class="entry_tags"> 11697 <ul class="entry_tags"> 11698 <li><a href="#tag_BC">BC</a></li> 11699 </ul> 11700 </td> 11701 11702 </tr> 11703 <tr class="entries_header"> 11704 <th class="th_details" colspan="5">Details</th> 11705 </tr> 11706 <tr class="entry_cont"> 11707 <td class="entry_details" colspan="5"> 11708 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> 11709but the captured JPEG will still be a valid image.<wbr/></p> 11710<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected 11711should have the same aspect ratio as the main JPEG output.<wbr/></p> 11712<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect 11713ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/> 11714For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has 1171516:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to 11716generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field 11717Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p> 11718<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/> 11719the camera device will handle thumbnail rotation in one of the following ways:</p> 11720<ul> 11721<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a> 11722 and keep jpeg and thumbnail image data unrotated.<wbr/></li> 11723<li>Rotate the jpeg and thumbnail image data and not set 11724 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this 11725 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in 11726 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree 11727 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail 11728 size.<wbr/></li> 11729</ul> 11730 </td> 11731 </tr> 11732 11733 <tr class="entries_header"> 11734 <th class="th_details" colspan="5">HAL Implementation Details</th> 11735 </tr> 11736 <tr class="entry_cont"> 11737 <td class="entry_details" colspan="5"> 11738 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/> 11739The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/> 11740The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the 11741thumbnail image cropping.<wbr/></p> 11742 </td> 11743 </tr> 11744 11745 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11746 <!-- end of entry --> 11747 11748 11749 11750 <!-- end of kind --> 11751 </tbody> 11752 11753 <!-- end of section --> 11754 <tr><td colspan="6" id="section_lens" class="section">lens</td></tr> 11755 11756 11757 <tr><td colspan="6" class="kind">controls</td></tr> 11758 11759 <thead class="entries_header"> 11760 <tr> 11761 <th class="th_name">Property Name</th> 11762 <th class="th_type">Type</th> 11763 <th class="th_description">Description</th> 11764 <th class="th_units">Units</th> 11765 <th class="th_range">Range</th> 11766 <th class="th_tags">Tags</th> 11767 </tr> 11768 </thead> 11769 11770 <tbody> 11771 11772 11773 11774 11775 11776 11777 11778 11779 11780 11781 <tr class="entry" id="controls_android.lens.aperture"> 11782 <td class="entry_name 11783 " rowspan="3"> 11784 android.<wbr/>lens.<wbr/>aperture 11785 </td> 11786 <td class="entry_type"> 11787 <span class="entry_type_name">float</span> 11788 11789 <span class="entry_type_visibility"> [public]</span> 11790 11791 11792 <span class="entry_type_hwlevel">[full] </span> 11793 11794 11795 11796 11797 </td> <!-- entry_type --> 11798 11799 <td class="entry_description"> 11800 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 11801effective aperture diameter.<wbr/></p> 11802 </td> 11803 11804 <td class="entry_units"> 11805 The f-number (f/<wbr/>N) 11806 </td> 11807 11808 <td class="entry_range"> 11809 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 11810 </td> 11811 11812 <td class="entry_tags"> 11813 <ul class="entry_tags"> 11814 <li><a href="#tag_V1">V1</a></li> 11815 </ul> 11816 </td> 11817 11818 </tr> 11819 <tr class="entries_header"> 11820 <th class="th_details" colspan="5">Details</th> 11821 </tr> 11822 <tr class="entry_cont"> 11823 <td class="entry_details" colspan="5"> 11824 <p>Setting this value is only supported on the camera devices that have a variable 11825aperture lens.<wbr/></p> 11826<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 11827this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 11828<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> 11829to achieve manual exposure control.<wbr/></p> 11830<p>The requested aperture value may take several frames to reach the 11831requested value; the camera device will report the current (intermediate) 11832aperture size in capture result metadata while the aperture is changing.<wbr/> 11833While 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> 11834<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 11835the ON modes,<wbr/> this will be overridden by the camera device 11836auto-exposure algorithm,<wbr/> the overridden values are then provided 11837back to the user in the corresponding result.<wbr/></p> 11838 </td> 11839 </tr> 11840 11841 11842 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11843 <!-- end of entry --> 11844 11845 11846 <tr class="entry" id="controls_android.lens.filterDensity"> 11847 <td class="entry_name 11848 " rowspan="3"> 11849 android.<wbr/>lens.<wbr/>filter<wbr/>Density 11850 </td> 11851 <td class="entry_type"> 11852 <span class="entry_type_name">float</span> 11853 11854 <span class="entry_type_visibility"> [public]</span> 11855 11856 11857 <span class="entry_type_hwlevel">[full] </span> 11858 11859 11860 11861 11862 </td> <!-- entry_type --> 11863 11864 <td class="entry_description"> 11865 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 11866 </td> 11867 11868 <td class="entry_units"> 11869 Exposure Value (EV) 11870 </td> 11871 11872 <td class="entry_range"> 11873 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 11874 </td> 11875 11876 <td class="entry_tags"> 11877 <ul class="entry_tags"> 11878 <li><a href="#tag_V1">V1</a></li> 11879 </ul> 11880 </td> 11881 11882 </tr> 11883 <tr class="entries_header"> 11884 <th class="th_details" colspan="5">Details</th> 11885 </tr> 11886 <tr class="entry_cont"> 11887 <td class="entry_details" colspan="5"> 11888 <p>This control will not be supported on most camera devices.<wbr/></p> 11889<p>Lens filters are typically used to lower the amount of light the 11890sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 11891step is the standard logarithmic representation,<wbr/> which are 11892non-negative,<wbr/> and inversely proportional to the amount of light 11893hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 11894in no reduction of the incoming light,<wbr/> and setting this to 2 would 11895mean that the filter is set to reduce incoming light by two stops 11896(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 11897<p>It may take several frames before the lens filter density changes 11898to the requested value.<wbr/> While the filter density is still changing,<wbr/> 11899<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 11900 </td> 11901 </tr> 11902 11903 11904 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11905 <!-- end of entry --> 11906 11907 11908 <tr class="entry" id="controls_android.lens.focalLength"> 11909 <td class="entry_name 11910 " rowspan="3"> 11911 android.<wbr/>lens.<wbr/>focal<wbr/>Length 11912 </td> 11913 <td class="entry_type"> 11914 <span class="entry_type_name">float</span> 11915 11916 <span class="entry_type_visibility"> [public]</span> 11917 11918 11919 <span class="entry_type_hwlevel">[legacy] </span> 11920 11921 11922 11923 11924 </td> <!-- entry_type --> 11925 11926 <td class="entry_description"> 11927 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 11928 </td> 11929 11930 <td class="entry_units"> 11931 Millimeters 11932 </td> 11933 11934 <td class="entry_range"> 11935 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 11936 </td> 11937 11938 <td class="entry_tags"> 11939 <ul class="entry_tags"> 11940 <li><a href="#tag_V1">V1</a></li> 11941 </ul> 11942 </td> 11943 11944 </tr> 11945 <tr class="entries_header"> 11946 <th class="th_details" colspan="5">Details</th> 11947 </tr> 11948 <tr class="entry_cont"> 11949 <td class="entry_details" colspan="5"> 11950 <p>This setting controls the physical focal length of the camera 11951device's lens.<wbr/> Changing the focal length changes the field of 11952view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 11953<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 11954setting won't be applied instantaneously,<wbr/> and it may take several 11955frames before the lens can change to the requested focal length.<wbr/> 11956While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 11957be set to MOVING.<wbr/></p> 11958<p>Optical zoom will not be supported on most devices.<wbr/></p> 11959 </td> 11960 </tr> 11961 11962 11963 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 11964 <!-- end of entry --> 11965 11966 11967 <tr class="entry" id="controls_android.lens.focusDistance"> 11968 <td class="entry_name 11969 " rowspan="3"> 11970 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 11971 </td> 11972 <td class="entry_type"> 11973 <span class="entry_type_name">float</span> 11974 11975 <span class="entry_type_visibility"> [public]</span> 11976 11977 11978 <span class="entry_type_hwlevel">[full] </span> 11979 11980 11981 11982 11983 </td> <!-- entry_type --> 11984 11985 <td class="entry_description"> 11986 <p>Desired distance to plane of sharpest focus,<wbr/> 11987measured from frontmost surface of the lens.<wbr/></p> 11988 </td> 11989 11990 <td class="entry_units"> 11991 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 11992 </td> 11993 11994 <td class="entry_range"> 11995 <p>>= 0</p> 11996 </td> 11997 11998 <td class="entry_tags"> 11999 <ul class="entry_tags"> 12000 <li><a href="#tag_BC">BC</a></li> 12001 <li><a href="#tag_V1">V1</a></li> 12002 </ul> 12003 </td> 12004 12005 </tr> 12006 <tr class="entries_header"> 12007 <th class="th_details" colspan="5">Details</th> 12008 </tr> 12009 <tr class="entry_cont"> 12010 <td class="entry_details" colspan="5"> 12011 <p>This control can be used for setting manual focus,<wbr/> on devices that support 12012the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see 12013<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p> 12014<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to 12015<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> 12016<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied 12017instantaneously,<wbr/> and it may take several frames before the lens 12018can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/> 12019<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 12020<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code> 12021for infinity focus.<wbr/></p> 12022 </td> 12023 </tr> 12024 12025 12026 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12027 <!-- end of entry --> 12028 12029 12030 <tr class="entry" id="controls_android.lens.opticalStabilizationMode"> 12031 <td class="entry_name 12032 " rowspan="3"> 12033 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 12034 </td> 12035 <td class="entry_type"> 12036 <span class="entry_type_name entry_type_name_enum">byte</span> 12037 12038 <span class="entry_type_visibility"> [public]</span> 12039 12040 12041 <span class="entry_type_hwlevel">[limited] </span> 12042 12043 12044 12045 <ul class="entry_type_enum"> 12046 <li> 12047 <span class="entry_type_enum_name">OFF</span> 12048 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 12049 </li> 12050 <li> 12051 <span class="entry_type_enum_name">ON</span> 12052 <span class="entry_type_enum_optional">[optional]</span> 12053 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 12054 </li> 12055 </ul> 12056 12057 </td> <!-- entry_type --> 12058 12059 <td class="entry_description"> 12060 <p>Sets whether the camera device uses optical image stabilization (OIS) 12061when capturing images.<wbr/></p> 12062 </td> 12063 12064 <td class="entry_units"> 12065 </td> 12066 12067 <td class="entry_range"> 12068 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 12069 </td> 12070 12071 <td class="entry_tags"> 12072 <ul class="entry_tags"> 12073 <li><a href="#tag_V1">V1</a></li> 12074 </ul> 12075 </td> 12076 12077 </tr> 12078 <tr class="entries_header"> 12079 <th class="th_details" colspan="5">Details</th> 12080 </tr> 12081 <tr class="entry_cont"> 12082 <td class="entry_details" colspan="5"> 12083 <p>OIS is used to compensate for motion blur due to small 12084movements of the camera during capture.<wbr/> Unlike digital image 12085stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 12086makes use of mechanical elements to stabilize the camera 12087sensor,<wbr/> and thus allows for longer exposure times before 12088camera shake becomes apparent.<wbr/></p> 12089<p>Switching between different optical stabilization modes may take several 12090frames to initialize,<wbr/> the camera device will report the current mode in 12091capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 12092optical stabilization modes in the first several capture results may still 12093be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 12094<p>If a camera device supports both OIS and digital image stabilization 12095(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 12096interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 12097<p>Not all devices will support OIS; see 12098<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 12099available controls.<wbr/></p> 12100 </td> 12101 </tr> 12102 12103 12104 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12105 <!-- end of entry --> 12106 12107 12108 12109 <!-- end of kind --> 12110 </tbody> 12111 <tr><td colspan="6" class="kind">static</td></tr> 12112 12113 <thead class="entries_header"> 12114 <tr> 12115 <th class="th_name">Property Name</th> 12116 <th class="th_type">Type</th> 12117 <th class="th_description">Description</th> 12118 <th class="th_units">Units</th> 12119 <th class="th_range">Range</th> 12120 <th class="th_tags">Tags</th> 12121 </tr> 12122 </thead> 12123 12124 <tbody> 12125 12126 12127 12128 12129 12130 12131 12132 12133 12134 12135 12136 12137 <tr class="entry" id="static_android.lens.info.availableApertures"> 12138 <td class="entry_name 12139 " rowspan="3"> 12140 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures 12141 </td> 12142 <td class="entry_type"> 12143 <span class="entry_type_name">float</span> 12144 <span class="entry_type_container">x</span> 12145 12146 <span class="entry_type_array"> 12147 n 12148 </span> 12149 <span class="entry_type_visibility"> [public]</span> 12150 12151 12152 <span class="entry_type_hwlevel">[full] </span> 12153 12154 12155 12156 12157 </td> <!-- entry_type --> 12158 12159 <td class="entry_description"> 12160 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are 12161supported by this camera device.<wbr/></p> 12162 </td> 12163 12164 <td class="entry_units"> 12165 The aperture f-number 12166 </td> 12167 12168 <td class="entry_range"> 12169 </td> 12170 12171 <td class="entry_tags"> 12172 <ul class="entry_tags"> 12173 <li><a href="#tag_V1">V1</a></li> 12174 </ul> 12175 </td> 12176 12177 </tr> 12178 <tr class="entries_header"> 12179 <th class="th_details" colspan="5">Details</th> 12180 </tr> 12181 <tr class="entry_cont"> 12182 <td class="entry_details" colspan="5"> 12183 <p>If the camera device doesn't support a variable lens aperture,<wbr/> 12184this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p> 12185<p>If the camera device supports a variable aperture,<wbr/> the aperture values 12186in this list will be sorted in ascending order.<wbr/></p> 12187 </td> 12188 </tr> 12189 12190 12191 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12192 <!-- end of entry --> 12193 12194 12195 <tr class="entry" id="static_android.lens.info.availableFilterDensities"> 12196 <td class="entry_name 12197 " rowspan="3"> 12198 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities 12199 </td> 12200 <td class="entry_type"> 12201 <span class="entry_type_name">float</span> 12202 <span class="entry_type_container">x</span> 12203 12204 <span class="entry_type_array"> 12205 n 12206 </span> 12207 <span class="entry_type_visibility"> [public]</span> 12208 12209 12210 <span class="entry_type_hwlevel">[full] </span> 12211 12212 12213 12214 12215 </td> <!-- entry_type --> 12216 12217 <td class="entry_description"> 12218 <p>List of neutral density filter values for 12219<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p> 12220 </td> 12221 12222 <td class="entry_units"> 12223 Exposure value (EV) 12224 </td> 12225 12226 <td class="entry_range"> 12227 <p>Values are >= 0</p> 12228 </td> 12229 12230 <td class="entry_tags"> 12231 <ul class="entry_tags"> 12232 <li><a href="#tag_V1">V1</a></li> 12233 </ul> 12234 </td> 12235 12236 </tr> 12237 <tr class="entries_header"> 12238 <th class="th_details" colspan="5">Details</th> 12239 </tr> 12240 <tr class="entry_cont"> 12241 <td class="entry_details" colspan="5"> 12242 <p>If a neutral density filter is not supported by this camera device,<wbr/> 12243this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every 12244filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p> 12245 </td> 12246 </tr> 12247 12248 12249 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12250 <!-- end of entry --> 12251 12252 12253 <tr class="entry" id="static_android.lens.info.availableFocalLengths"> 12254 <td class="entry_name 12255 " rowspan="3"> 12256 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths 12257 </td> 12258 <td class="entry_type"> 12259 <span class="entry_type_name">float</span> 12260 <span class="entry_type_container">x</span> 12261 12262 <span class="entry_type_array"> 12263 n 12264 </span> 12265 <span class="entry_type_visibility"> [public]</span> 12266 12267 12268 <span class="entry_type_hwlevel">[legacy] </span> 12269 12270 12271 <div class="entry_type_notes">The list of available focal lengths</div> 12272 12273 12274 </td> <!-- entry_type --> 12275 12276 <td class="entry_description"> 12277 <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 12278device.<wbr/></p> 12279 </td> 12280 12281 <td class="entry_units"> 12282 Millimeters 12283 </td> 12284 12285 <td class="entry_range"> 12286 <p>Values are > 0</p> 12287 </td> 12288 12289 <td class="entry_tags"> 12290 <ul class="entry_tags"> 12291 <li><a href="#tag_BC">BC</a></li> 12292 <li><a href="#tag_V1">V1</a></li> 12293 </ul> 12294 </td> 12295 12296 </tr> 12297 <tr class="entries_header"> 12298 <th class="th_details" colspan="5">Details</th> 12299 </tr> 12300 <tr class="entry_cont"> 12301 <td class="entry_details" colspan="5"> 12302 <p>If optical zoom is not supported,<wbr/> this list will only contain 12303a single value corresponding to the fixed focal length of the 12304device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported 12305by the camera device,<wbr/> in ascending order.<wbr/></p> 12306 </td> 12307 </tr> 12308 12309 12310 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12311 <!-- end of entry --> 12312 12313 12314 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization"> 12315 <td class="entry_name 12316 " rowspan="3"> 12317 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization 12318 </td> 12319 <td class="entry_type"> 12320 <span class="entry_type_name">byte</span> 12321 <span class="entry_type_container">x</span> 12322 12323 <span class="entry_type_array"> 12324 n 12325 </span> 12326 <span class="entry_type_visibility"> [public as enumList]</span> 12327 12328 12329 <span class="entry_type_hwlevel">[limited] </span> 12330 12331 12332 <div class="entry_type_notes">list of enums</div> 12333 12334 12335 </td> <!-- entry_type --> 12336 12337 <td class="entry_description"> 12338 <p>List of optical image stabilization (OIS) modes for 12339<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> 12340 </td> 12341 12342 <td class="entry_units"> 12343 </td> 12344 12345 <td class="entry_range"> 12346 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p> 12347 </td> 12348 12349 <td class="entry_tags"> 12350 <ul class="entry_tags"> 12351 <li><a href="#tag_V1">V1</a></li> 12352 </ul> 12353 </td> 12354 12355 </tr> 12356 <tr class="entries_header"> 12357 <th class="th_details" colspan="5">Details</th> 12358 </tr> 12359 <tr class="entry_cont"> 12360 <td class="entry_details" colspan="5"> 12361 <p>If OIS is not supported by a given camera device,<wbr/> this list will 12362contain only OFF.<wbr/></p> 12363 </td> 12364 </tr> 12365 12366 12367 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12368 <!-- end of entry --> 12369 12370 12371 <tr class="entry" id="static_android.lens.info.hyperfocalDistance"> 12372 <td class="entry_name 12373 " rowspan="3"> 12374 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance 12375 </td> 12376 <td class="entry_type"> 12377 <span class="entry_type_name">float</span> 12378 12379 <span class="entry_type_visibility"> [public]</span> 12380 12381 12382 <span class="entry_type_hwlevel">[limited] </span> 12383 12384 12385 12386 12387 </td> <!-- entry_type --> 12388 12389 <td class="entry_description"> 12390 <p>Hyperfocal distance for this lens.<wbr/></p> 12391 </td> 12392 12393 <td class="entry_units"> 12394 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 12395 </td> 12396 12397 <td class="entry_range"> 12398 <p>If lens is fixed focus,<wbr/> >= 0.<wbr/> If lens has focuser unit,<wbr/> the value is 12399within <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> 12400 </td> 12401 12402 <td class="entry_tags"> 12403 </td> 12404 12405 </tr> 12406 <tr class="entries_header"> 12407 <th class="th_details" colspan="5">Details</th> 12408 </tr> 12409 <tr class="entry_cont"> 12410 <td class="entry_details" colspan="5"> 12411 <p>If the lens is not fixed focus,<wbr/> the camera device will report this 12412field 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> 12413 </td> 12414 </tr> 12415 12416 12417 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12418 <!-- end of entry --> 12419 12420 12421 <tr class="entry" id="static_android.lens.info.minimumFocusDistance"> 12422 <td class="entry_name 12423 " rowspan="5"> 12424 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance 12425 </td> 12426 <td class="entry_type"> 12427 <span class="entry_type_name">float</span> 12428 12429 <span class="entry_type_visibility"> [public]</span> 12430 12431 12432 <span class="entry_type_hwlevel">[limited] </span> 12433 12434 12435 12436 12437 </td> <!-- entry_type --> 12438 12439 <td class="entry_description"> 12440 <p>Shortest distance from frontmost surface 12441of the lens that can be brought into sharp focus.<wbr/></p> 12442 </td> 12443 12444 <td class="entry_units"> 12445 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 12446 </td> 12447 12448 <td class="entry_range"> 12449 <p>>= 0</p> 12450 </td> 12451 12452 <td class="entry_tags"> 12453 <ul class="entry_tags"> 12454 <li><a href="#tag_V1">V1</a></li> 12455 </ul> 12456 </td> 12457 12458 </tr> 12459 <tr class="entries_header"> 12460 <th class="th_details" colspan="5">Details</th> 12461 </tr> 12462 <tr class="entry_cont"> 12463 <td class="entry_details" colspan="5"> 12464 <p>If the lens is fixed-focus,<wbr/> this will be 124650.<wbr/></p> 12466 </td> 12467 </tr> 12468 12469 <tr class="entries_header"> 12470 <th class="th_details" colspan="5">HAL Implementation Details</th> 12471 </tr> 12472 <tr class="entry_cont"> 12473 <td class="entry_details" colspan="5"> 12474 <p>Mandatory for FULL devices; LIMITED devices 12475must always set this value to 0 for fixed-focus; and may omit 12476the minimum focus distance otherwise.<wbr/></p> 12477<p>This field is also mandatory for all devices advertising 12478the MANUAL_<wbr/>SENSOR capability.<wbr/></p> 12479 </td> 12480 </tr> 12481 12482 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12483 <!-- end of entry --> 12484 12485 12486 <tr class="entry" id="static_android.lens.info.shadingMapSize"> 12487 <td class="entry_name 12488 " rowspan="3"> 12489 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size 12490 </td> 12491 <td class="entry_type"> 12492 <span class="entry_type_name">int32</span> 12493 <span class="entry_type_container">x</span> 12494 12495 <span class="entry_type_array"> 12496 2 12497 </span> 12498 <span class="entry_type_visibility"> [ndk_public as size]</span> 12499 12500 12501 <span class="entry_type_hwlevel">[full] </span> 12502 12503 12504 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div> 12505 12506 12507 </td> <!-- entry_type --> 12508 12509 <td class="entry_description"> 12510 <p>Dimensions of lens shading map.<wbr/></p> 12511 </td> 12512 12513 <td class="entry_units"> 12514 </td> 12515 12516 <td class="entry_range"> 12517 <p>Both values >= 1</p> 12518 </td> 12519 12520 <td class="entry_tags"> 12521 <ul class="entry_tags"> 12522 <li><a href="#tag_V1">V1</a></li> 12523 </ul> 12524 </td> 12525 12526 </tr> 12527 <tr class="entries_header"> 12528 <th class="th_details" colspan="5">Details</th> 12529 </tr> 12530 <tr class="entry_cont"> 12531 <td class="entry_details" colspan="5"> 12532 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and 12533must be smaller than 64x64.<wbr/></p> 12534 </td> 12535 </tr> 12536 12537 12538 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12539 <!-- end of entry --> 12540 12541 12542 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration"> 12543 <td class="entry_name 12544 " rowspan="5"> 12545 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration 12546 </td> 12547 <td class="entry_type"> 12548 <span class="entry_type_name entry_type_name_enum">byte</span> 12549 12550 <span class="entry_type_visibility"> [public]</span> 12551 12552 12553 <span class="entry_type_hwlevel">[limited] </span> 12554 12555 12556 12557 <ul class="entry_type_enum"> 12558 <li> 12559 <span class="entry_type_enum_name">UNCALIBRATED</span> 12560 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for 12561<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p> 12562<p>Setting the lens to the same focus distance on separate occasions may 12563result in a different real focus distance,<wbr/> depending on factors such 12564as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> 12565and the device temperature.<wbr/> The focus distance value will still be 12566in 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 12567represents the farthest focus.<wbr/></p></span> 12568 </li> 12569 <li> 12570 <span class="entry_type_enum_name">APPROXIMATE</span> 12571 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p> 12572<p>However,<wbr/> setting the lens to the same focus distance 12573on separate occasions may result in a different real 12574focus distance,<wbr/> depending on factors such as the 12575orientation of the device,<wbr/> the age of the focusing 12576mechanism,<wbr/> and the device temperature.<wbr/></p></span> 12577 </li> 12578 <li> 12579 <span class="entry_type_enum_name">CALIBRATED</span> 12580 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and 12581is calibrated.<wbr/></p> 12582<p>The lens mechanism is calibrated so that setting the 12583same focus distance is repeatable on multiple 12584occasions with good accuracy,<wbr/> and the focus distance 12585corresponds to the real physical distance to the plane 12586of best focus.<wbr/></p></span> 12587 </li> 12588 </ul> 12589 12590 </td> <!-- entry_type --> 12591 12592 <td class="entry_description"> 12593 <p>The lens focus distance calibration quality.<wbr/></p> 12594 </td> 12595 12596 <td class="entry_units"> 12597 </td> 12598 12599 <td class="entry_range"> 12600 </td> 12601 12602 <td class="entry_tags"> 12603 <ul class="entry_tags"> 12604 <li><a href="#tag_V1">V1</a></li> 12605 </ul> 12606 </td> 12607 12608 </tr> 12609 <tr class="entries_header"> 12610 <th class="th_details" colspan="5">Details</th> 12611 </tr> 12612 <tr class="entry_cont"> 12613 <td class="entry_details" colspan="5"> 12614 <p>The lens focus distance calibration quality determines the reliability of 12615focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> 12616<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 12617<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p> 12618<p>APPROXIMATE and CALIBRATED devices report the focus metadata in 12619units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/> 12620and increasing positive numbers represent focusing closer and closer 12621to the camera device.<wbr/> The focus distance control also uses diopters 12622on these devices.<wbr/></p> 12623<p>UNCALIBRATED devices do not use units that are directly comparable 12624to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest 12625focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the 12626nearest focus the device can achieve.<wbr/></p> 12627 </td> 12628 </tr> 12629 12630 <tr class="entries_header"> 12631 <th class="th_details" colspan="5">HAL Implementation Details</th> 12632 </tr> 12633 <tr class="entry_cont"> 12634 <td class="entry_details" colspan="5"> 12635 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity 12636focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF) 12637and the lens focus distance is set to 0 diopters 12638(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity 12639and is stably focused at infinity even if the device tilts.<wbr/> It may take the 12640lens some time to move; during the move the lens state should be MOVING and 12641the output diopter value should be changing toward 0.<wbr/></p> 12642 </td> 12643 </tr> 12644 12645 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12646 <!-- end of entry --> 12647 12648 12649 12650 12651 12652 <tr class="entry" id="static_android.lens.facing"> 12653 <td class="entry_name 12654 " rowspan="1"> 12655 android.<wbr/>lens.<wbr/>facing 12656 </td> 12657 <td class="entry_type"> 12658 <span class="entry_type_name entry_type_name_enum">byte</span> 12659 12660 <span class="entry_type_visibility"> [public]</span> 12661 12662 12663 <span class="entry_type_hwlevel">[legacy] </span> 12664 12665 12666 12667 <ul class="entry_type_enum"> 12668 <li> 12669 <span class="entry_type_enum_name">FRONT</span> 12670 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span> 12671 </li> 12672 <li> 12673 <span class="entry_type_enum_name">BACK</span> 12674 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span> 12675 </li> 12676 <li> 12677 <span class="entry_type_enum_name">EXTERNAL</span> 12678 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the 12679device's screen.<wbr/></p></span> 12680 </li> 12681 </ul> 12682 12683 </td> <!-- entry_type --> 12684 12685 <td class="entry_description"> 12686 <p>Direction the camera faces relative to 12687device screen.<wbr/></p> 12688 </td> 12689 12690 <td class="entry_units"> 12691 </td> 12692 12693 <td class="entry_range"> 12694 </td> 12695 12696 <td class="entry_tags"> 12697 </td> 12698 12699 </tr> 12700 12701 12702 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12703 <!-- end of entry --> 12704 12705 12706 <tr class="entry" id="static_android.lens.poseRotation"> 12707 <td class="entry_name 12708 " rowspan="3"> 12709 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 12710 </td> 12711 <td class="entry_type"> 12712 <span class="entry_type_name">float</span> 12713 <span class="entry_type_container">x</span> 12714 12715 <span class="entry_type_array"> 12716 4 12717 </span> 12718 <span class="entry_type_visibility"> [public]</span> 12719 12720 12721 12722 12723 12724 12725 </td> <!-- entry_type --> 12726 12727 <td class="entry_description"> 12728 <p>The orientation of the camera relative to the sensor 12729coordinate system.<wbr/></p> 12730 </td> 12731 12732 <td class="entry_units"> 12733 12734 Quaternion coefficients 12735 12736 </td> 12737 12738 <td class="entry_range"> 12739 </td> 12740 12741 <td class="entry_tags"> 12742 <ul class="entry_tags"> 12743 <li><a href="#tag_DEPTH">DEPTH</a></li> 12744 </ul> 12745 </td> 12746 12747 </tr> 12748 <tr class="entries_header"> 12749 <th class="th_details" colspan="5">Details</th> 12750 </tr> 12751 <tr class="entry_cont"> 12752 <td class="entry_details" colspan="5"> 12753 <p>The four coefficients that describe the quaternion 12754rotation from the Android sensor coordinate system to a 12755camera-aligned coordinate system where the X-axis is 12756aligned with the long side of the image sensor,<wbr/> the Y-axis 12757is aligned with the short side of the image sensor,<wbr/> and 12758the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 12759<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 12760to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 12761amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 12762<pre><code> theta = 2 * acos(w) 12763a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 12764a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 12765a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 12766</code></pre> 12767<p>To create a 3x3 rotation matrix that applies the rotation 12768defined by this quaternion,<wbr/> the following matrix can be 12769used:</p> 12770<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 12771 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 12772 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 12773</code></pre> 12774<p>This matrix can then be used to apply the rotation to a 12775 column vector point with</p> 12776<p><code>p' = Rp</code></p> 12777<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 12778 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 12779 </td> 12780 </tr> 12781 12782 12783 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12784 <!-- end of entry --> 12785 12786 12787 <tr class="entry" id="static_android.lens.poseTranslation"> 12788 <td class="entry_name 12789 " rowspan="3"> 12790 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 12791 </td> 12792 <td class="entry_type"> 12793 <span class="entry_type_name">float</span> 12794 <span class="entry_type_container">x</span> 12795 12796 <span class="entry_type_array"> 12797 3 12798 </span> 12799 <span class="entry_type_visibility"> [public]</span> 12800 12801 12802 12803 12804 12805 12806 </td> <!-- entry_type --> 12807 12808 <td class="entry_description"> 12809 <p>Position of the camera optical center.<wbr/></p> 12810 </td> 12811 12812 <td class="entry_units"> 12813 Meters 12814 </td> 12815 12816 <td class="entry_range"> 12817 </td> 12818 12819 <td class="entry_tags"> 12820 <ul class="entry_tags"> 12821 <li><a href="#tag_DEPTH">DEPTH</a></li> 12822 </ul> 12823 </td> 12824 12825 </tr> 12826 <tr class="entries_header"> 12827 <th class="th_details" colspan="5">Details</th> 12828 </tr> 12829 <tr class="entry_cont"> 12830 <td class="entry_details" colspan="5"> 12831 <p>The position of the camera device's lens optical center,<wbr/> 12832as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the 12833optical center of the largest camera device facing in the 12834same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate 12835axes</a>.<wbr/> Note that only the axis definitions are shared with 12836the sensor coordinate system,<wbr/> but not the origin.<wbr/></p> 12837<p>If this device is the largest or only camera device with a 12838given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a 12839camera device with a lens optical center located 3 cm from 12840the main sensor along the +X axis (to the right from the 12841user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> 12842<p>To transform a pixel coordinates between two cameras 12843facing the same direction,<wbr/> first the source camera 12844<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then 12845the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs 12846to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> 12847of the source camera,<wbr/> the translation of the source camera 12848relative to the destination camera,<wbr/> the 12849<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and 12850finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 12851of the destination camera.<wbr/> This obtains a 12852radial-distortion-free coordinate in the destination 12853camera pixel coordinates.<wbr/></p> 12854<p>To compare this against a real image from the destination 12855camera,<wbr/> the destination camera image then needs to be 12856corrected for radial distortion before comparison or 12857sampling.<wbr/></p> 12858 </td> 12859 </tr> 12860 12861 12862 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12863 <!-- end of entry --> 12864 12865 12866 <tr class="entry" id="static_android.lens.intrinsicCalibration"> 12867 <td class="entry_name 12868 " rowspan="3"> 12869 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 12870 </td> 12871 <td class="entry_type"> 12872 <span class="entry_type_name">float</span> 12873 <span class="entry_type_container">x</span> 12874 12875 <span class="entry_type_array"> 12876 5 12877 </span> 12878 <span class="entry_type_visibility"> [public]</span> 12879 12880 12881 12882 12883 12884 12885 </td> <!-- entry_type --> 12886 12887 <td class="entry_description"> 12888 <p>The parameters for this camera device's intrinsic 12889calibration.<wbr/></p> 12890 </td> 12891 12892 <td class="entry_units"> 12893 12894 Pixels in the 12895 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 12896 coordinate system.<wbr/> 12897 12898 </td> 12899 12900 <td class="entry_range"> 12901 </td> 12902 12903 <td class="entry_tags"> 12904 <ul class="entry_tags"> 12905 <li><a href="#tag_DEPTH">DEPTH</a></li> 12906 </ul> 12907 </td> 12908 12909 </tr> 12910 <tr class="entries_header"> 12911 <th class="th_details" colspan="5">Details</th> 12912 </tr> 12913 <tr class="entry_cont"> 12914 <td class="entry_details" colspan="5"> 12915 <p>The five calibration parameters that describe the 12916transform from camera-centric 3D coordinates to sensor 12917pixel coordinates:</p> 12918<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 12919</code></pre> 12920<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 12921focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 12922axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 12923being aligned with the lens plane.<wbr/></p> 12924<p>These are typically used within a transformation matrix K:</p> 12925<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 12926 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 12927 0 0,<wbr/> 1 ] 12928</code></pre> 12929<p>which can then be combined with the camera pose rotation 12930<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 12931<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the 12932complete transform from world coordinates to pixel 12933coordinates:</p> 12934<pre><code>P = [ K 0 * [ R t 12935 0 1 ] 0 1 ] 12936</code></pre> 12937<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system 12938and <code>p_<wbr/>s</code> being a point in the camera active pixel array 12939coordinate system,<wbr/> and with the mapping including the 12940homogeneous division by z:</p> 12941<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 12942p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 12943</code></pre> 12944<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 12945point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 12946(depth) in pixel coordinates.<wbr/></p> 12947<p>Note that the coordinate system for this transform is the 12948<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/> 12949where <code>(0,<wbr/>0)</code> is the top-left of the 12950preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 12951intrinsic calibration transforms have been applied to a 12952world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> 12953transform needs to be applied,<wbr/> and the result adjusted to 12954be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 12955system (where <code>(0,<wbr/> 0)</code> is the top-left of the 12956activeArraySize rectangle),<wbr/> to determine the final pixel 12957coordinate of the world point for processed (non-RAW) 12958output buffers.<wbr/></p> 12959 </td> 12960 </tr> 12961 12962 12963 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 12964 <!-- end of entry --> 12965 12966 12967 <tr class="entry" id="static_android.lens.radialDistortion"> 12968 <td class="entry_name 12969 " rowspan="3"> 12970 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 12971 </td> 12972 <td class="entry_type"> 12973 <span class="entry_type_name">float</span> 12974 <span class="entry_type_container">x</span> 12975 12976 <span class="entry_type_array"> 12977 6 12978 </span> 12979 <span class="entry_type_visibility"> [public]</span> 12980 12981 12982 12983 12984 12985 12986 </td> <!-- entry_type --> 12987 12988 <td class="entry_description"> 12989 <p>The correction coefficients to correct for this camera device's 12990radial and tangential lens distortion.<wbr/></p> 12991 </td> 12992 12993 <td class="entry_units"> 12994 12995 Unitless coefficients.<wbr/> 12996 12997 </td> 12998 12999 <td class="entry_range"> 13000 </td> 13001 13002 <td class="entry_tags"> 13003 <ul class="entry_tags"> 13004 <li><a href="#tag_DEPTH">DEPTH</a></li> 13005 </ul> 13006 </td> 13007 13008 </tr> 13009 <tr class="entries_header"> 13010 <th class="th_details" colspan="5">Details</th> 13011 </tr> 13012 <tr class="entry_cont"> 13013 <td class="entry_details" colspan="5"> 13014 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 13015kappa_<wbr/>3]</code> and two tangential distortion coefficients 13016<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 13017lens's geometric distortion with the mapping equations:</p> 13018<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 ) + 13019 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 13020 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 13021 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 13022</code></pre> 13023<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 13024input image that correspond to the pixel values in the 13025corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 13026<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 13027</code></pre> 13028<p>The pixel coordinates are defined in a normalized 13029coordinate system related to the 13030<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 13031Both <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 13032lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 13033of both x and y coordinates are normalized to be 1 at the 13034edge further from the optical center,<wbr/> so the range 13035for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 13036<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 13037optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 13038is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 13039<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 13040 </td> 13041 </tr> 13042 13043 13044 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13045 <!-- end of entry --> 13046 13047 13048 13049 <!-- end of kind --> 13050 </tbody> 13051 <tr><td colspan="6" class="kind">dynamic</td></tr> 13052 13053 <thead class="entries_header"> 13054 <tr> 13055 <th class="th_name">Property Name</th> 13056 <th class="th_type">Type</th> 13057 <th class="th_description">Description</th> 13058 <th class="th_units">Units</th> 13059 <th class="th_range">Range</th> 13060 <th class="th_tags">Tags</th> 13061 </tr> 13062 </thead> 13063 13064 <tbody> 13065 13066 13067 13068 13069 13070 13071 13072 13073 13074 13075 <tr class="entry" id="dynamic_android.lens.aperture"> 13076 <td class="entry_name 13077 " rowspan="3"> 13078 android.<wbr/>lens.<wbr/>aperture 13079 </td> 13080 <td class="entry_type"> 13081 <span class="entry_type_name">float</span> 13082 13083 <span class="entry_type_visibility"> [public]</span> 13084 13085 13086 <span class="entry_type_hwlevel">[full] </span> 13087 13088 13089 13090 13091 </td> <!-- entry_type --> 13092 13093 <td class="entry_description"> 13094 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the 13095effective aperture diameter.<wbr/></p> 13096 </td> 13097 13098 <td class="entry_units"> 13099 The f-number (f/<wbr/>N) 13100 </td> 13101 13102 <td class="entry_range"> 13103 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> 13104 </td> 13105 13106 <td class="entry_tags"> 13107 <ul class="entry_tags"> 13108 <li><a href="#tag_V1">V1</a></li> 13109 </ul> 13110 </td> 13111 13112 </tr> 13113 <tr class="entries_header"> 13114 <th class="th_details" colspan="5">Details</th> 13115 </tr> 13116 <tr class="entry_cont"> 13117 <td class="entry_details" colspan="5"> 13118 <p>Setting this value is only supported on the camera devices that have a variable 13119aperture lens.<wbr/></p> 13120<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> 13121this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> 13122<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> 13123to achieve manual exposure control.<wbr/></p> 13124<p>The requested aperture value may take several frames to reach the 13125requested value; the camera device will report the current (intermediate) 13126aperture size in capture result metadata while the aperture is changing.<wbr/> 13127While 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> 13128<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of 13129the ON modes,<wbr/> this will be overridden by the camera device 13130auto-exposure algorithm,<wbr/> the overridden values are then provided 13131back to the user in the corresponding result.<wbr/></p> 13132 </td> 13133 </tr> 13134 13135 13136 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13137 <!-- end of entry --> 13138 13139 13140 <tr class="entry" id="dynamic_android.lens.filterDensity"> 13141 <td class="entry_name 13142 " rowspan="3"> 13143 android.<wbr/>lens.<wbr/>filter<wbr/>Density 13144 </td> 13145 <td class="entry_type"> 13146 <span class="entry_type_name">float</span> 13147 13148 <span class="entry_type_visibility"> [public]</span> 13149 13150 13151 <span class="entry_type_hwlevel">[full] </span> 13152 13153 13154 13155 13156 </td> <!-- entry_type --> 13157 13158 <td class="entry_description"> 13159 <p>The desired setting for the lens neutral density filter(s).<wbr/></p> 13160 </td> 13161 13162 <td class="entry_units"> 13163 Exposure Value (EV) 13164 </td> 13165 13166 <td class="entry_range"> 13167 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> 13168 </td> 13169 13170 <td class="entry_tags"> 13171 <ul class="entry_tags"> 13172 <li><a href="#tag_V1">V1</a></li> 13173 </ul> 13174 </td> 13175 13176 </tr> 13177 <tr class="entries_header"> 13178 <th class="th_details" colspan="5">Details</th> 13179 </tr> 13180 <tr class="entry_cont"> 13181 <td class="entry_details" colspan="5"> 13182 <p>This control will not be supported on most camera devices.<wbr/></p> 13183<p>Lens filters are typically used to lower the amount of light the 13184sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV 13185step is the standard logarithmic representation,<wbr/> which are 13186non-negative,<wbr/> and inversely proportional to the amount of light 13187hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result 13188in no reduction of the incoming light,<wbr/> and setting this to 2 would 13189mean that the filter is set to reduce incoming light by two stops 13190(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> 13191<p>It may take several frames before the lens filter density changes 13192to the requested value.<wbr/> While the filter density is still changing,<wbr/> 13193<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> 13194 </td> 13195 </tr> 13196 13197 13198 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13199 <!-- end of entry --> 13200 13201 13202 <tr class="entry" id="dynamic_android.lens.focalLength"> 13203 <td class="entry_name 13204 " rowspan="3"> 13205 android.<wbr/>lens.<wbr/>focal<wbr/>Length 13206 </td> 13207 <td class="entry_type"> 13208 <span class="entry_type_name">float</span> 13209 13210 <span class="entry_type_visibility"> [public]</span> 13211 13212 13213 <span class="entry_type_hwlevel">[legacy] </span> 13214 13215 13216 13217 13218 </td> <!-- entry_type --> 13219 13220 <td class="entry_description"> 13221 <p>The desired lens focal length; used for optical zoom.<wbr/></p> 13222 </td> 13223 13224 <td class="entry_units"> 13225 Millimeters 13226 </td> 13227 13228 <td class="entry_range"> 13229 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> 13230 </td> 13231 13232 <td class="entry_tags"> 13233 <ul class="entry_tags"> 13234 <li><a href="#tag_BC">BC</a></li> 13235 </ul> 13236 </td> 13237 13238 </tr> 13239 <tr class="entries_header"> 13240 <th class="th_details" colspan="5">Details</th> 13241 </tr> 13242 <tr class="entry_cont"> 13243 <td class="entry_details" colspan="5"> 13244 <p>This setting controls the physical focal length of the camera 13245device's lens.<wbr/> Changing the focal length changes the field of 13246view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> 13247<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 13248setting won't be applied instantaneously,<wbr/> and it may take several 13249frames before the lens can change to the requested focal length.<wbr/> 13250While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will 13251be set to MOVING.<wbr/></p> 13252<p>Optical zoom will not be supported on most devices.<wbr/></p> 13253 </td> 13254 </tr> 13255 13256 13257 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13258 <!-- end of entry --> 13259 13260 13261 <tr class="entry" id="dynamic_android.lens.focusDistance"> 13262 <td class="entry_name 13263 " rowspan="3"> 13264 android.<wbr/>lens.<wbr/>focus<wbr/>Distance 13265 </td> 13266 <td class="entry_type"> 13267 <span class="entry_type_name">float</span> 13268 13269 <span class="entry_type_visibility"> [public]</span> 13270 13271 13272 <span class="entry_type_hwlevel">[full] </span> 13273 13274 13275 13276 13277 </td> <!-- entry_type --> 13278 13279 <td class="entry_description"> 13280 <p>Desired distance to plane of sharpest focus,<wbr/> 13281measured from frontmost surface of the lens.<wbr/></p> 13282 </td> 13283 13284 <td class="entry_units"> 13285 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details 13286 </td> 13287 13288 <td class="entry_range"> 13289 <p>>= 0</p> 13290 </td> 13291 13292 <td class="entry_tags"> 13293 <ul class="entry_tags"> 13294 <li><a href="#tag_BC">BC</a></li> 13295 </ul> 13296 </td> 13297 13298 </tr> 13299 <tr class="entries_header"> 13300 <th class="th_details" colspan="5">Details</th> 13301 </tr> 13302 <tr class="entry_cont"> 13303 <td class="entry_details" colspan="5"> 13304 <p>Should be zero for fixed-focus cameras</p> 13305 </td> 13306 </tr> 13307 13308 13309 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13310 <!-- end of entry --> 13311 13312 13313 <tr class="entry" id="dynamic_android.lens.focusRange"> 13314 <td class="entry_name 13315 " rowspan="3"> 13316 android.<wbr/>lens.<wbr/>focus<wbr/>Range 13317 </td> 13318 <td class="entry_type"> 13319 <span class="entry_type_name">float</span> 13320 <span class="entry_type_container">x</span> 13321 13322 <span class="entry_type_array"> 13323 2 13324 </span> 13325 <span class="entry_type_visibility"> [public as pairFloatFloat]</span> 13326 13327 13328 <span class="entry_type_hwlevel">[limited] </span> 13329 13330 13331 <div class="entry_type_notes">Range of scene distances that are in focus</div> 13332 13333 13334 </td> <!-- entry_type --> 13335 13336 <td class="entry_description"> 13337 <p>The range of scene distances that are in 13338sharp focus (depth of field).<wbr/></p> 13339 </td> 13340 13341 <td class="entry_units"> 13342 A pair of focus distances in diopters: (near,<wbr/> 13343 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> 13344 </td> 13345 13346 <td class="entry_range"> 13347 <p>>=0</p> 13348 </td> 13349 13350 <td class="entry_tags"> 13351 <ul class="entry_tags"> 13352 <li><a href="#tag_BC">BC</a></li> 13353 </ul> 13354 </td> 13355 13356 </tr> 13357 <tr class="entries_header"> 13358 <th class="th_details" colspan="5">Details</th> 13359 </tr> 13360 <tr class="entry_cont"> 13361 <td class="entry_details" colspan="5"> 13362 <p>If variable focus not supported,<wbr/> can still report 13363fixed depth of field range</p> 13364 </td> 13365 </tr> 13366 13367 13368 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13369 <!-- end of entry --> 13370 13371 13372 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode"> 13373 <td class="entry_name 13374 " rowspan="3"> 13375 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode 13376 </td> 13377 <td class="entry_type"> 13378 <span class="entry_type_name entry_type_name_enum">byte</span> 13379 13380 <span class="entry_type_visibility"> [public]</span> 13381 13382 13383 <span class="entry_type_hwlevel">[limited] </span> 13384 13385 13386 13387 <ul class="entry_type_enum"> 13388 <li> 13389 <span class="entry_type_enum_name">OFF</span> 13390 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> 13391 </li> 13392 <li> 13393 <span class="entry_type_enum_name">ON</span> 13394 <span class="entry_type_enum_optional">[optional]</span> 13395 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> 13396 </li> 13397 </ul> 13398 13399 </td> <!-- entry_type --> 13400 13401 <td class="entry_description"> 13402 <p>Sets whether the camera device uses optical image stabilization (OIS) 13403when capturing images.<wbr/></p> 13404 </td> 13405 13406 <td class="entry_units"> 13407 </td> 13408 13409 <td class="entry_range"> 13410 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> 13411 </td> 13412 13413 <td class="entry_tags"> 13414 <ul class="entry_tags"> 13415 <li><a href="#tag_V1">V1</a></li> 13416 </ul> 13417 </td> 13418 13419 </tr> 13420 <tr class="entries_header"> 13421 <th class="th_details" colspan="5">Details</th> 13422 </tr> 13423 <tr class="entry_cont"> 13424 <td class="entry_details" colspan="5"> 13425 <p>OIS is used to compensate for motion blur due to small 13426movements of the camera during capture.<wbr/> Unlike digital image 13427stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS 13428makes use of mechanical elements to stabilize the camera 13429sensor,<wbr/> and thus allows for longer exposure times before 13430camera shake becomes apparent.<wbr/></p> 13431<p>Switching between different optical stabilization modes may take several 13432frames to initialize,<wbr/> the camera device will report the current mode in 13433capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the 13434optical stabilization modes in the first several capture results may still 13435be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p> 13436<p>If a camera device supports both OIS and digital image stabilization 13437(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable 13438interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p> 13439<p>Not all devices will support OIS; see 13440<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for 13441available controls.<wbr/></p> 13442 </td> 13443 </tr> 13444 13445 13446 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13447 <!-- end of entry --> 13448 13449 13450 <tr class="entry" id="dynamic_android.lens.state"> 13451 <td class="entry_name 13452 " rowspan="3"> 13453 android.<wbr/>lens.<wbr/>state 13454 </td> 13455 <td class="entry_type"> 13456 <span class="entry_type_name entry_type_name_enum">byte</span> 13457 13458 <span class="entry_type_visibility"> [public]</span> 13459 13460 13461 <span class="entry_type_hwlevel">[limited] </span> 13462 13463 13464 13465 <ul class="entry_type_enum"> 13466 <li> 13467 <span class="entry_type_enum_name">STATIONARY</span> 13468 <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/> 13469<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> 13470 </li> 13471 <li> 13472 <span class="entry_type_enum_name">MOVING</span> 13473 <span class="entry_type_enum_notes"><p>One or several of the lens parameters 13474(<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/> 13475<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 13476currently changing.<wbr/></p></span> 13477 </li> 13478 </ul> 13479 13480 </td> <!-- entry_type --> 13481 13482 <td class="entry_description"> 13483 <p>Current lens status.<wbr/></p> 13484 </td> 13485 13486 <td class="entry_units"> 13487 </td> 13488 13489 <td class="entry_range"> 13490 </td> 13491 13492 <td class="entry_tags"> 13493 <ul class="entry_tags"> 13494 <li><a href="#tag_V1">V1</a></li> 13495 </ul> 13496 </td> 13497 13498 </tr> 13499 <tr class="entries_header"> 13500 <th class="th_details" colspan="5">Details</th> 13501 </tr> 13502 <tr class="entry_cont"> 13503 <td class="entry_details" colspan="5"> 13504 <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/> 13505<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/> 13506they may take several frames to reach the requested values.<wbr/> This state indicates 13507the current status of the lens parameters.<wbr/></p> 13508<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be 13509either because the parameters are all fixed,<wbr/> or because the lens has had enough 13510time to reach the most recently-requested values.<wbr/> 13511If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p> 13512<ul> 13513<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 13514<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li> 13515<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/> 13516which means the optical zoom is not supported.<wbr/></li> 13517<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> 13518<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> 13519</ul> 13520<p>Then this state will always be STATIONARY.<wbr/></p> 13521<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters 13522is changing.<wbr/></p> 13523 </td> 13524 </tr> 13525 13526 13527 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13528 <!-- end of entry --> 13529 13530 13531 <tr class="entry" id="dynamic_android.lens.poseRotation"> 13532 <td class="entry_name 13533 " rowspan="3"> 13534 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation 13535 </td> 13536 <td class="entry_type"> 13537 <span class="entry_type_name">float</span> 13538 <span class="entry_type_container">x</span> 13539 13540 <span class="entry_type_array"> 13541 4 13542 </span> 13543 <span class="entry_type_visibility"> [public]</span> 13544 13545 13546 13547 13548 13549 13550 </td> <!-- entry_type --> 13551 13552 <td class="entry_description"> 13553 <p>The orientation of the camera relative to the sensor 13554coordinate system.<wbr/></p> 13555 </td> 13556 13557 <td class="entry_units"> 13558 13559 Quaternion coefficients 13560 13561 </td> 13562 13563 <td class="entry_range"> 13564 </td> 13565 13566 <td class="entry_tags"> 13567 <ul class="entry_tags"> 13568 <li><a href="#tag_DEPTH">DEPTH</a></li> 13569 </ul> 13570 </td> 13571 13572 </tr> 13573 <tr class="entries_header"> 13574 <th class="th_details" colspan="5">Details</th> 13575 </tr> 13576 <tr class="entry_cont"> 13577 <td class="entry_details" colspan="5"> 13578 <p>The four coefficients that describe the quaternion 13579rotation from the Android sensor coordinate system to a 13580camera-aligned coordinate system where the X-axis is 13581aligned with the long side of the image sensor,<wbr/> the Y-axis 13582is aligned with the short side of the image sensor,<wbr/> and 13583the Z-axis is aligned with the optical axis of the sensor.<wbr/></p> 13584<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code> 13585to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation 13586amount <code>theta</code>,<wbr/> the following formulas can be used:</p> 13587<pre><code> theta = 2 * acos(w) 13588a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2) 13589a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2) 13590a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2) 13591</code></pre> 13592<p>To create a 3x3 rotation matrix that applies the rotation 13593defined by this quaternion,<wbr/> the following matrix can be 13594used:</p> 13595<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/> 13596 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/> 13597 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ] 13598</code></pre> 13599<p>This matrix can then be used to apply the rotation to a 13600 column vector point with</p> 13601<p><code>p' = Rp</code></p> 13602<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and 13603 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p> 13604 </td> 13605 </tr> 13606 13607 13608 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13609 <!-- end of entry --> 13610 13611 13612 <tr class="entry" id="dynamic_android.lens.poseTranslation"> 13613 <td class="entry_name 13614 " rowspan="3"> 13615 android.<wbr/>lens.<wbr/>pose<wbr/>Translation 13616 </td> 13617 <td class="entry_type"> 13618 <span class="entry_type_name">float</span> 13619 <span class="entry_type_container">x</span> 13620 13621 <span class="entry_type_array"> 13622 3 13623 </span> 13624 <span class="entry_type_visibility"> [public]</span> 13625 13626 13627 13628 13629 13630 13631 </td> <!-- entry_type --> 13632 13633 <td class="entry_description"> 13634 <p>Position of the camera optical center.<wbr/></p> 13635 </td> 13636 13637 <td class="entry_units"> 13638 Meters 13639 </td> 13640 13641 <td class="entry_range"> 13642 </td> 13643 13644 <td class="entry_tags"> 13645 <ul class="entry_tags"> 13646 <li><a href="#tag_DEPTH">DEPTH</a></li> 13647 </ul> 13648 </td> 13649 13650 </tr> 13651 <tr class="entries_header"> 13652 <th class="th_details" colspan="5">Details</th> 13653 </tr> 13654 <tr class="entry_cont"> 13655 <td class="entry_details" colspan="5"> 13656 <p>The position of the camera device's lens optical center,<wbr/> 13657as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the 13658optical center of the largest camera device facing in the 13659same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate 13660axes</a>.<wbr/> Note that only the axis definitions are shared with 13661the sensor coordinate system,<wbr/> but not the origin.<wbr/></p> 13662<p>If this device is the largest or only camera device with a 13663given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a 13664camera device with a lens optical center located 3 cm from 13665the main sensor along the +X axis (to the right from the 13666user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p> 13667<p>To transform a pixel coordinates between two cameras 13668facing the same direction,<wbr/> first the source camera 13669<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then 13670the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs 13671to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> 13672of the source camera,<wbr/> the translation of the source camera 13673relative to the destination camera,<wbr/> the 13674<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and 13675finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> 13676of the destination camera.<wbr/> This obtains a 13677radial-distortion-free coordinate in the destination 13678camera pixel coordinates.<wbr/></p> 13679<p>To compare this against a real image from the destination 13680camera,<wbr/> the destination camera image then needs to be 13681corrected for radial distortion before comparison or 13682sampling.<wbr/></p> 13683 </td> 13684 </tr> 13685 13686 13687 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13688 <!-- end of entry --> 13689 13690 13691 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration"> 13692 <td class="entry_name 13693 " rowspan="3"> 13694 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration 13695 </td> 13696 <td class="entry_type"> 13697 <span class="entry_type_name">float</span> 13698 <span class="entry_type_container">x</span> 13699 13700 <span class="entry_type_array"> 13701 5 13702 </span> 13703 <span class="entry_type_visibility"> [public]</span> 13704 13705 13706 13707 13708 13709 13710 </td> <!-- entry_type --> 13711 13712 <td class="entry_description"> 13713 <p>The parameters for this camera device's intrinsic 13714calibration.<wbr/></p> 13715 </td> 13716 13717 <td class="entry_units"> 13718 13719 Pixels in the 13720 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 13721 coordinate system.<wbr/> 13722 13723 </td> 13724 13725 <td class="entry_range"> 13726 </td> 13727 13728 <td class="entry_tags"> 13729 <ul class="entry_tags"> 13730 <li><a href="#tag_DEPTH">DEPTH</a></li> 13731 </ul> 13732 </td> 13733 13734 </tr> 13735 <tr class="entries_header"> 13736 <th class="th_details" colspan="5">Details</th> 13737 </tr> 13738 <tr class="entry_cont"> 13739 <td class="entry_details" colspan="5"> 13740 <p>The five calibration parameters that describe the 13741transform from camera-centric 3D coordinates to sensor 13742pixel coordinates:</p> 13743<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s] 13744</code></pre> 13745<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical 13746focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical 13747axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not 13748being aligned with the lens plane.<wbr/></p> 13749<p>These are typically used within a transformation matrix K:</p> 13750<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/> 13751 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/> 13752 0 0,<wbr/> 1 ] 13753</code></pre> 13754<p>which can then be combined with the camera pose rotation 13755<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and 13756<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the 13757complete transform from world coordinates to pixel 13758coordinates:</p> 13759<pre><code>P = [ K 0 * [ R t 13760 0 1 ] 0 1 ] 13761</code></pre> 13762<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system 13763and <code>p_<wbr/>s</code> being a point in the camera active pixel array 13764coordinate system,<wbr/> and with the mapping including the 13765homogeneous division by z:</p> 13766<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w 13767p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h 13768</code></pre> 13769<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world 13770point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity 13771(depth) in pixel coordinates.<wbr/></p> 13772<p>Note that the coordinate system for this transform is the 13773<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/> 13774where <code>(0,<wbr/>0)</code> is the top-left of the 13775preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and 13776intrinsic calibration transforms have been applied to a 13777world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> 13778transform needs to be applied,<wbr/> and the result adjusted to 13779be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate 13780system (where <code>(0,<wbr/> 0)</code> is the top-left of the 13781activeArraySize rectangle),<wbr/> to determine the final pixel 13782coordinate of the world point for processed (non-RAW) 13783output buffers.<wbr/></p> 13784 </td> 13785 </tr> 13786 13787 13788 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13789 <!-- end of entry --> 13790 13791 13792 <tr class="entry" id="dynamic_android.lens.radialDistortion"> 13793 <td class="entry_name 13794 " rowspan="3"> 13795 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion 13796 </td> 13797 <td class="entry_type"> 13798 <span class="entry_type_name">float</span> 13799 <span class="entry_type_container">x</span> 13800 13801 <span class="entry_type_array"> 13802 6 13803 </span> 13804 <span class="entry_type_visibility"> [public]</span> 13805 13806 13807 13808 13809 13810 13811 </td> <!-- entry_type --> 13812 13813 <td class="entry_description"> 13814 <p>The correction coefficients to correct for this camera device's 13815radial and tangential lens distortion.<wbr/></p> 13816 </td> 13817 13818 <td class="entry_units"> 13819 13820 Unitless coefficients.<wbr/> 13821 13822 </td> 13823 13824 <td class="entry_range"> 13825 </td> 13826 13827 <td class="entry_tags"> 13828 <ul class="entry_tags"> 13829 <li><a href="#tag_DEPTH">DEPTH</a></li> 13830 </ul> 13831 </td> 13832 13833 </tr> 13834 <tr class="entries_header"> 13835 <th class="th_details" colspan="5">Details</th> 13836 </tr> 13837 <tr class="entry_cont"> 13838 <td class="entry_details" colspan="5"> 13839 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> 13840kappa_<wbr/>3]</code> and two tangential distortion coefficients 13841<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the 13842lens's geometric distortion with the mapping equations:</p> 13843<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 ) + 13844 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 ) 13845 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) + 13846 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 ) 13847</code></pre> 13848<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the 13849input image that correspond to the pixel values in the 13850corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p> 13851<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage) 13852</code></pre> 13853<p>The pixel coordinates are defined in a normalized 13854coordinate system related to the 13855<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/> 13856Both <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 13857lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes 13858of both x and y coordinates are normalized to be 1 at the 13859edge further from the optical center,<wbr/> so the range 13860for both dimensions is <code>-1 <= x <= 1</code>.<wbr/></p> 13861<p>Finally,<wbr/> <code>r</code> represents the radial distance from the 13862optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude 13863is therefore no larger than <code>|<wbr/>r|<wbr/> <= sqrt(2)</code>.<wbr/></p> 13864<p>The distortion model used is the Brown-Conrady model.<wbr/></p> 13865 </td> 13866 </tr> 13867 13868 13869 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 13870 <!-- end of entry --> 13871 13872 13873 13874 <!-- end of kind --> 13875 </tbody> 13876 13877 <!-- end of section --> 13878 <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr> 13879 13880 13881 <tr><td colspan="6" class="kind">controls</td></tr> 13882 13883 <thead class="entries_header"> 13884 <tr> 13885 <th class="th_name">Property Name</th> 13886 <th class="th_type">Type</th> 13887 <th class="th_description">Description</th> 13888 <th class="th_units">Units</th> 13889 <th class="th_range">Range</th> 13890 <th class="th_tags">Tags</th> 13891 </tr> 13892 </thead> 13893 13894 <tbody> 13895 13896 13897 13898 13899 13900 13901 13902 13903 13904 13905 <tr class="entry" id="controls_android.noiseReduction.mode"> 13906 <td class="entry_name 13907 " rowspan="5"> 13908 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 13909 </td> 13910 <td class="entry_type"> 13911 <span class="entry_type_name entry_type_name_enum">byte</span> 13912 13913 <span class="entry_type_visibility"> [public]</span> 13914 13915 13916 <span class="entry_type_hwlevel">[full] </span> 13917 13918 13919 13920 <ul class="entry_type_enum"> 13921 <li> 13922 <span class="entry_type_enum_name">OFF</span> 13923 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 13924 </li> 13925 <li> 13926 <span class="entry_type_enum_name">FAST</span> 13927 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 13928output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 13929relative to sensor.<wbr/></p></span> 13930 </li> 13931 <li> 13932 <span class="entry_type_enum_name">HIGH_QUALITY</span> 13933 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 13934rate relative to sensor output.<wbr/></p></span> 13935 </li> 13936 <li> 13937 <span class="entry_type_enum_name">MINIMAL</span> 13938 <span class="entry_type_enum_optional">[optional]</span> 13939 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 13940sensor output.<wbr/> </p></span> 13941 </li> 13942 <li> 13943 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 13944 <span class="entry_type_enum_optional">[optional]</span> 13945 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 13946based 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 13947reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no 13948noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction 13949for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality 13950is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/> 13951quality may improve from FAST).<wbr/></p> 13952<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 13953with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 13954high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 13955produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 13956high-resolution buffers must not have noise reduction applied to maximize efficiency of 13957preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 13958low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 13959applied for reasonable preview quality.<wbr/></p> 13960<p>This mode is guaranteed to be supported by devices that support either the 13961YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 13962(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 13963be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 13964 </li> 13965 </ul> 13966 13967 </td> <!-- entry_type --> 13968 13969 <td class="entry_description"> 13970 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 13971 </td> 13972 13973 <td class="entry_units"> 13974 </td> 13975 13976 <td class="entry_range"> 13977 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 13978 </td> 13979 13980 <td class="entry_tags"> 13981 <ul class="entry_tags"> 13982 <li><a href="#tag_V1">V1</a></li> 13983 <li><a href="#tag_REPROC">REPROC</a></li> 13984 </ul> 13985 </td> 13986 13987 </tr> 13988 <tr class="entries_header"> 13989 <th class="th_details" colspan="5">Details</th> 13990 </tr> 13991 <tr class="entry_cont"> 13992 <td class="entry_details" colspan="5"> 13993 <p>The noise reduction algorithm attempts to improve image quality by removing 13994excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 13995<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 13996YUV domain.<wbr/></p> 13997<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 13998demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 13999This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 14000<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> 14001<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 14002will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 14003will use the highest-quality noise filtering algorithms,<wbr/> 14004even if it slows down capture rate.<wbr/> FAST means the camera device will not 14005slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 14006MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 14007Every output stream will have a similar amount of enhancement applied.<wbr/></p> 14008<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 14009buffer of high-resolution images during preview and reprocess image(s) from that buffer 14010into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 14011noise reduction to low-resolution streams (below maximum recording resolution) to maximize 14012preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 14013those will be reprocessed later if necessary.<wbr/></p> 14014<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 14015will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 14016may adjust the noise reduction parameters for best image quality based on the 14017<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 14018 </td> 14019 </tr> 14020 14021 <tr class="entries_header"> 14022 <th class="th_details" colspan="5">HAL Implementation Details</th> 14023 </tr> 14024 <tr class="entry_cont"> 14025 <td class="entry_details" colspan="5"> 14026 <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 14027adjust the internal noise reduction parameters appropriately to get the best quality 14028images.<wbr/></p> 14029 </td> 14030 </tr> 14031 14032 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14033 <!-- end of entry --> 14034 14035 14036 <tr class="entry" id="controls_android.noiseReduction.strength"> 14037 <td class="entry_name 14038 " rowspan="1"> 14039 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength 14040 </td> 14041 <td class="entry_type"> 14042 <span class="entry_type_name">byte</span> 14043 14044 <span class="entry_type_visibility"> [system]</span> 14045 14046 14047 14048 14049 14050 14051 </td> <!-- entry_type --> 14052 14053 <td class="entry_description"> 14054 <p>Control the amount of noise reduction 14055applied to the images</p> 14056 </td> 14057 14058 <td class="entry_units"> 14059 1-10; 10 is max noise reduction 14060 </td> 14061 14062 <td class="entry_range"> 14063 <p>1 - 10</p> 14064 </td> 14065 14066 <td class="entry_tags"> 14067 <ul class="entry_tags"> 14068 <li><a href="#tag_FUTURE">FUTURE</a></li> 14069 </ul> 14070 </td> 14071 14072 </tr> 14073 14074 14075 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14076 <!-- end of entry --> 14077 14078 14079 14080 <!-- end of kind --> 14081 </tbody> 14082 <tr><td colspan="6" class="kind">static</td></tr> 14083 14084 <thead class="entries_header"> 14085 <tr> 14086 <th class="th_name">Property Name</th> 14087 <th class="th_type">Type</th> 14088 <th class="th_description">Description</th> 14089 <th class="th_units">Units</th> 14090 <th class="th_range">Range</th> 14091 <th class="th_tags">Tags</th> 14092 </tr> 14093 </thead> 14094 14095 <tbody> 14096 14097 14098 14099 14100 14101 14102 14103 14104 14105 14106 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes"> 14107 <td class="entry_name 14108 " rowspan="5"> 14109 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes 14110 </td> 14111 <td class="entry_type"> 14112 <span class="entry_type_name">byte</span> 14113 <span class="entry_type_container">x</span> 14114 14115 <span class="entry_type_array"> 14116 n 14117 </span> 14118 <span class="entry_type_visibility"> [public as enumList]</span> 14119 14120 14121 <span class="entry_type_hwlevel">[limited] </span> 14122 14123 14124 <div class="entry_type_notes">list of enums</div> 14125 14126 14127 </td> <!-- entry_type --> 14128 14129 <td class="entry_description"> 14130 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported 14131by this camera device.<wbr/></p> 14132 </td> 14133 14134 <td class="entry_units"> 14135 </td> 14136 14137 <td class="entry_range"> 14138 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p> 14139 </td> 14140 14141 <td class="entry_tags"> 14142 <ul class="entry_tags"> 14143 <li><a href="#tag_V1">V1</a></li> 14144 <li><a href="#tag_REPROC">REPROC</a></li> 14145 </ul> 14146 </td> 14147 14148 </tr> 14149 <tr class="entries_header"> 14150 <th class="th_details" colspan="5">Details</th> 14151 </tr> 14152 <tr class="entry_cont"> 14153 <td class="entry_details" colspan="5"> 14154 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p> 14155<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support 14156ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p> 14157<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p> 14158 </td> 14159 </tr> 14160 14161 <tr class="entries_header"> 14162 <th class="th_details" colspan="5">HAL Implementation Details</th> 14163 </tr> 14164 <tr class="entry_cont"> 14165 <td class="entry_details" colspan="5"> 14166 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available 14167on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 14168That is,<wbr/> if the highest quality implementation on the camera device does not slow down 14169capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 14170 </td> 14171 </tr> 14172 14173 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14174 <!-- end of entry --> 14175 14176 14177 14178 <!-- end of kind --> 14179 </tbody> 14180 <tr><td colspan="6" class="kind">dynamic</td></tr> 14181 14182 <thead class="entries_header"> 14183 <tr> 14184 <th class="th_name">Property Name</th> 14185 <th class="th_type">Type</th> 14186 <th class="th_description">Description</th> 14187 <th class="th_units">Units</th> 14188 <th class="th_range">Range</th> 14189 <th class="th_tags">Tags</th> 14190 </tr> 14191 </thead> 14192 14193 <tbody> 14194 14195 14196 14197 14198 14199 14200 14201 14202 14203 14204 <tr class="entry" id="dynamic_android.noiseReduction.mode"> 14205 <td class="entry_name 14206 " rowspan="5"> 14207 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode 14208 </td> 14209 <td class="entry_type"> 14210 <span class="entry_type_name entry_type_name_enum">byte</span> 14211 14212 <span class="entry_type_visibility"> [public]</span> 14213 14214 14215 <span class="entry_type_hwlevel">[full] </span> 14216 14217 14218 14219 <ul class="entry_type_enum"> 14220 <li> 14221 <span class="entry_type_enum_name">OFF</span> 14222 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span> 14223 </li> 14224 <li> 14225 <span class="entry_type_enum_name">FAST</span> 14226 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor 14227output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate 14228relative to sensor.<wbr/></p></span> 14229 </li> 14230 <li> 14231 <span class="entry_type_enum_name">HIGH_QUALITY</span> 14232 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame 14233rate relative to sensor output.<wbr/></p></span> 14234 </li> 14235 <li> 14236 <span class="entry_type_enum_name">MINIMAL</span> 14237 <span class="entry_type_enum_optional">[optional]</span> 14238 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to 14239sensor output.<wbr/> </p></span> 14240 </li> 14241 <li> 14242 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span> 14243 <span class="entry_type_enum_optional">[optional]</span> 14244 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/> 14245based 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 14246reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no 14247noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction 14248for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality 14249is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/> 14250quality may improve from FAST).<wbr/></p> 14251<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode 14252with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures 14253high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is 14254produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the 14255high-resolution buffers must not have noise reduction applied to maximize efficiency of 14256preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while 14257low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction 14258applied for reasonable preview quality.<wbr/></p> 14259<p>This mode is guaranteed to be supported by devices that support either the 14260YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities 14261(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will 14262be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> 14263 </li> 14264 </ul> 14265 14266 </td> <!-- entry_type --> 14267 14268 <td class="entry_description"> 14269 <p>Mode of operation for the noise reduction algorithm.<wbr/></p> 14270 </td> 14271 14272 <td class="entry_units"> 14273 </td> 14274 14275 <td class="entry_range"> 14276 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p> 14277 </td> 14278 14279 <td class="entry_tags"> 14280 <ul class="entry_tags"> 14281 <li><a href="#tag_V1">V1</a></li> 14282 <li><a href="#tag_REPROC">REPROC</a></li> 14283 </ul> 14284 </td> 14285 14286 </tr> 14287 <tr class="entries_header"> 14288 <th class="th_details" colspan="5">Details</th> 14289 </tr> 14290 <tr class="entry_cont"> 14291 <td class="entry_details" colspan="5"> 14292 <p>The noise reduction algorithm attempts to improve image quality by removing 14293excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p> 14294<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and 14295YUV domain.<wbr/></p> 14296<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove 14297demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/> 14298This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check 14299<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> 14300<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering 14301will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device 14302will use the highest-quality noise filtering algorithms,<wbr/> 14303even if it slows down capture rate.<wbr/> FAST means the camera device will not 14304slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if 14305MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/> 14306Every output stream will have a similar amount of enhancement applied.<wbr/></p> 14307<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular 14308buffer of high-resolution images during preview and reprocess image(s) from that buffer 14309into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies 14310noise reduction to low-resolution streams (below maximum recording resolution) to maximize 14311preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since 14312those will be reprocessed later if necessary.<wbr/></p> 14313<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device 14314will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device 14315may adjust the noise reduction parameters for best image quality based on the 14316<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p> 14317 </td> 14318 </tr> 14319 14320 <tr class="entries_header"> 14321 <th class="th_details" colspan="5">HAL Implementation Details</th> 14322 </tr> 14323 <tr class="entry_cont"> 14324 <td class="entry_details" colspan="5"> 14325 <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 14326adjust the internal noise reduction parameters appropriately to get the best quality 14327images.<wbr/></p> 14328 </td> 14329 </tr> 14330 14331 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14332 <!-- end of entry --> 14333 14334 14335 14336 <!-- end of kind --> 14337 </tbody> 14338 14339 <!-- end of section --> 14340 <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr> 14341 14342 14343 <tr><td colspan="6" class="kind">static</td></tr> 14344 14345 <thead class="entries_header"> 14346 <tr> 14347 <th class="th_name">Property Name</th> 14348 <th class="th_type">Type</th> 14349 <th class="th_description">Description</th> 14350 <th class="th_units">Units</th> 14351 <th class="th_range">Range</th> 14352 <th class="th_tags">Tags</th> 14353 </tr> 14354 </thead> 14355 14356 <tbody> 14357 14358 14359 14360 14361 14362 14363 14364 14365 14366 14367 <tr class="entry" id="static_android.quirks.meteringCropRegion"> 14368 <td class="entry_name 14369 entry_name_deprecated 14370 " rowspan="3"> 14371 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region 14372 </td> 14373 <td class="entry_type"> 14374 <span class="entry_type_name">byte</span> 14375 14376 <span class="entry_type_visibility"> [system]</span> 14377 14378 14379 14380 <span class="entry_type_deprecated">[deprecated] </span> 14381 14382 14383 14384 </td> <!-- entry_type --> 14385 14386 <td class="entry_description"> 14387 <p>If set to 1,<wbr/> the camera service does not 14388scale 'normalized' coordinates with respect to the crop 14389region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region 14390and output (face rectangles).<wbr/></p> 14391 </td> 14392 14393 <td class="entry_units"> 14394 </td> 14395 14396 <td class="entry_range"> 14397 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14398 </td> 14399 14400 <td class="entry_tags"> 14401 </td> 14402 14403 </tr> 14404 <tr class="entries_header"> 14405 <th class="th_details" colspan="5">Details</th> 14406 </tr> 14407 <tr class="entry_cont"> 14408 <td class="entry_details" colspan="5"> 14409 <p>Normalized coordinates refer to those in the 14410(-1000,<wbr/>1000) range mentioned in the 14411android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 14412<p>HAL implementations should instead always use and emit 14413sensor array-relative coordinates for all region data.<wbr/> Does 14414not need to be listed in static metadata.<wbr/> Support will be 14415removed in future versions of camera service.<wbr/></p> 14416 </td> 14417 </tr> 14418 14419 14420 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14421 <!-- end of entry --> 14422 14423 14424 <tr class="entry" id="static_android.quirks.triggerAfWithAuto"> 14425 <td class="entry_name 14426 entry_name_deprecated 14427 " rowspan="3"> 14428 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto 14429 </td> 14430 <td class="entry_type"> 14431 <span class="entry_type_name">byte</span> 14432 14433 <span class="entry_type_visibility"> [system]</span> 14434 14435 14436 14437 <span class="entry_type_deprecated">[deprecated] </span> 14438 14439 14440 14441 </td> <!-- entry_type --> 14442 14443 <td class="entry_description"> 14444 <p>If set to 1,<wbr/> then the camera service always 14445switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF 14446trigger.<wbr/></p> 14447 </td> 14448 14449 <td class="entry_units"> 14450 </td> 14451 14452 <td class="entry_range"> 14453 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14454 </td> 14455 14456 <td class="entry_tags"> 14457 </td> 14458 14459 </tr> 14460 <tr class="entries_header"> 14461 <th class="th_details" colspan="5">Details</th> 14462 </tr> 14463 <tr class="entry_cont"> 14464 <td class="entry_details" colspan="5"> 14465 <p>HAL implementations should implement AF trigger 14466modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and 14467CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does 14468not need to be listed in static metadata.<wbr/> Support will be 14469removed in future versions of camera service</p> 14470 </td> 14471 </tr> 14472 14473 14474 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14475 <!-- end of entry --> 14476 14477 14478 <tr class="entry" id="static_android.quirks.useZslFormat"> 14479 <td class="entry_name 14480 entry_name_deprecated 14481 " rowspan="3"> 14482 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format 14483 </td> 14484 <td class="entry_type"> 14485 <span class="entry_type_name">byte</span> 14486 14487 <span class="entry_type_visibility"> [system]</span> 14488 14489 14490 14491 <span class="entry_type_deprecated">[deprecated] </span> 14492 14493 14494 14495 </td> <!-- entry_type --> 14496 14497 <td class="entry_description"> 14498 <p>If set to 1,<wbr/> the camera service uses 14499CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of 14500HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero 14501shutter lag stream</p> 14502 </td> 14503 14504 <td class="entry_units"> 14505 </td> 14506 14507 <td class="entry_range"> 14508 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14509 </td> 14510 14511 <td class="entry_tags"> 14512 </td> 14513 14514 </tr> 14515 <tr class="entries_header"> 14516 <th class="th_details" colspan="5">Details</th> 14517 </tr> 14518 <tr class="entry_cont"> 14519 <td class="entry_details" colspan="5"> 14520 <p>HAL implementations should use gralloc usage flags 14521to determine that a stream will be used for 14522zero-shutter-lag,<wbr/> instead of relying on an explicit 14523format setting.<wbr/> Does not need to be listed in static 14524metadata.<wbr/> Support will be removed in future versions of 14525camera service.<wbr/></p> 14526 </td> 14527 </tr> 14528 14529 14530 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14531 <!-- end of entry --> 14532 14533 14534 <tr class="entry" id="static_android.quirks.usePartialResult"> 14535 <td class="entry_name 14536 entry_name_deprecated 14537 " rowspan="5"> 14538 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result 14539 </td> 14540 <td class="entry_type"> 14541 <span class="entry_type_name">byte</span> 14542 14543 <span class="entry_type_visibility"> [hidden]</span> 14544 14545 14546 14547 <span class="entry_type_deprecated">[deprecated] </span> 14548 14549 14550 14551 </td> <!-- entry_type --> 14552 14553 <td class="entry_description"> 14554 <p>If set to 1,<wbr/> the HAL will always split result 14555metadata for a single capture into multiple buffers,<wbr/> 14556returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p> 14557 </td> 14558 14559 <td class="entry_units"> 14560 </td> 14561 14562 <td class="entry_range"> 14563 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14564 </td> 14565 14566 <td class="entry_tags"> 14567 </td> 14568 14569 </tr> 14570 <tr class="entries_header"> 14571 <th class="th_details" colspan="5">Details</th> 14572 </tr> 14573 <tr class="entry_cont"> 14574 <td class="entry_details" colspan="5"> 14575 <p>Does not need to be listed in static 14576metadata.<wbr/> Support for partial results will be reworked in 14577future versions of camera service.<wbr/> This quirk will stop 14578working at that point; DO NOT USE without careful 14579consideration of future support.<wbr/></p> 14580 </td> 14581 </tr> 14582 14583 <tr class="entries_header"> 14584 <th class="th_details" colspan="5">HAL Implementation Details</th> 14585 </tr> 14586 <tr class="entry_cont"> 14587 <td class="entry_details" colspan="5"> 14588 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 14589for information on how to implement partial results.<wbr/></p> 14590 </td> 14591 </tr> 14592 14593 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14594 <!-- end of entry --> 14595 14596 14597 14598 <!-- end of kind --> 14599 </tbody> 14600 <tr><td colspan="6" class="kind">dynamic</td></tr> 14601 14602 <thead class="entries_header"> 14603 <tr> 14604 <th class="th_name">Property Name</th> 14605 <th class="th_type">Type</th> 14606 <th class="th_description">Description</th> 14607 <th class="th_units">Units</th> 14608 <th class="th_range">Range</th> 14609 <th class="th_tags">Tags</th> 14610 </tr> 14611 </thead> 14612 14613 <tbody> 14614 14615 14616 14617 14618 14619 14620 14621 14622 14623 14624 <tr class="entry" id="dynamic_android.quirks.partialResult"> 14625 <td class="entry_name 14626 entry_name_deprecated 14627 " rowspan="5"> 14628 android.<wbr/>quirks.<wbr/>partial<wbr/>Result 14629 </td> 14630 <td class="entry_type"> 14631 <span class="entry_type_name entry_type_name_enum">byte</span> 14632 14633 <span class="entry_type_visibility"> [hidden as boolean]</span> 14634 14635 14636 14637 <span class="entry_type_deprecated">[deprecated] </span> 14638 14639 14640 <ul class="entry_type_enum"> 14641 <li> 14642 <span class="entry_type_enum_name">FINAL</span> 14643 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer 14644for this capture.<wbr/></p></span> 14645 </li> 14646 <li> 14647 <span class="entry_type_enum_name">PARTIAL</span> 14648 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this 14649capture.<wbr/> More result buffers for this capture will be sent 14650by the camera device,<wbr/> the last of which will be marked 14651FINAL.<wbr/></p></span> 14652 </li> 14653 </ul> 14654 14655 </td> <!-- entry_type --> 14656 14657 <td class="entry_description"> 14658 <p>Whether a result given to the framework is the 14659final one for the capture,<wbr/> or only a partial that contains a 14660subset of the full set of dynamic metadata 14661values.<wbr/></p> 14662 </td> 14663 14664 <td class="entry_units"> 14665 </td> 14666 14667 <td class="entry_range"> 14668 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14669 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p> 14670 </td> 14671 14672 <td class="entry_tags"> 14673 </td> 14674 14675 </tr> 14676 <tr class="entries_header"> 14677 <th class="th_details" colspan="5">Details</th> 14678 </tr> 14679 <tr class="entry_cont"> 14680 <td class="entry_details" colspan="5"> 14681 <p>The entries in the result metadata buffers for a 14682single capture may not overlap,<wbr/> except for this entry.<wbr/> The 14683FINAL buffers must retain FIFO ordering relative to the 14684requests that generate them,<wbr/> so the FINAL buffer for frame 3 must 14685always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and 14686before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned 14687in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given 14688capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may 14689only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p> 14690 </td> 14691 </tr> 14692 14693 <tr class="entries_header"> 14694 <th class="th_details" colspan="5">HAL Implementation Details</th> 14695 </tr> 14696 <tr class="entry_cont"> 14697 <td class="entry_details" colspan="5"> 14698 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> 14699for information on how to implement partial results.<wbr/></p> 14700 </td> 14701 </tr> 14702 14703 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14704 <!-- end of entry --> 14705 14706 14707 14708 <!-- end of kind --> 14709 </tbody> 14710 14711 <!-- end of section --> 14712 <tr><td colspan="6" id="section_request" class="section">request</td></tr> 14713 14714 14715 <tr><td colspan="6" class="kind">controls</td></tr> 14716 14717 <thead class="entries_header"> 14718 <tr> 14719 <th class="th_name">Property Name</th> 14720 <th class="th_type">Type</th> 14721 <th class="th_description">Description</th> 14722 <th class="th_units">Units</th> 14723 <th class="th_range">Range</th> 14724 <th class="th_tags">Tags</th> 14725 </tr> 14726 </thead> 14727 14728 <tbody> 14729 14730 14731 14732 14733 14734 14735 14736 14737 14738 14739 <tr class="entry" id="controls_android.request.frameCount"> 14740 <td class="entry_name 14741 entry_name_deprecated 14742 " rowspan="1"> 14743 android.<wbr/>request.<wbr/>frame<wbr/>Count 14744 </td> 14745 <td class="entry_type"> 14746 <span class="entry_type_name">int32</span> 14747 14748 <span class="entry_type_visibility"> [system]</span> 14749 14750 14751 14752 <span class="entry_type_deprecated">[deprecated] </span> 14753 14754 14755 14756 </td> <!-- entry_type --> 14757 14758 <td class="entry_description"> 14759 <p>A frame counter set by the framework.<wbr/> Must 14760be maintained unchanged in output frame.<wbr/> This value monotonically 14761increases with every new result (that is,<wbr/> each new result has a unique 14762frameCount value).<wbr/></p> 14763 </td> 14764 14765 <td class="entry_units"> 14766 incrementing integer 14767 </td> 14768 14769 <td class="entry_range"> 14770 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14771 <p>Any int.<wbr/></p> 14772 </td> 14773 14774 <td class="entry_tags"> 14775 </td> 14776 14777 </tr> 14778 14779 14780 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14781 <!-- end of entry --> 14782 14783 14784 <tr class="entry" id="controls_android.request.id"> 14785 <td class="entry_name 14786 " rowspan="1"> 14787 android.<wbr/>request.<wbr/>id 14788 </td> 14789 <td class="entry_type"> 14790 <span class="entry_type_name">int32</span> 14791 14792 <span class="entry_type_visibility"> [hidden]</span> 14793 14794 14795 14796 14797 14798 14799 </td> <!-- entry_type --> 14800 14801 <td class="entry_description"> 14802 <p>An application-specified ID for the current 14803request.<wbr/> Must be maintained unchanged in output 14804frame</p> 14805 </td> 14806 14807 <td class="entry_units"> 14808 arbitrary integer assigned by application 14809 </td> 14810 14811 <td class="entry_range"> 14812 <p>Any int</p> 14813 </td> 14814 14815 <td class="entry_tags"> 14816 <ul class="entry_tags"> 14817 <li><a href="#tag_V1">V1</a></li> 14818 </ul> 14819 </td> 14820 14821 </tr> 14822 14823 14824 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14825 <!-- end of entry --> 14826 14827 14828 <tr class="entry" id="controls_android.request.inputStreams"> 14829 <td class="entry_name 14830 entry_name_deprecated 14831 " rowspan="3"> 14832 android.<wbr/>request.<wbr/>input<wbr/>Streams 14833 </td> 14834 <td class="entry_type"> 14835 <span class="entry_type_name">int32</span> 14836 <span class="entry_type_container">x</span> 14837 14838 <span class="entry_type_array"> 14839 n 14840 </span> 14841 <span class="entry_type_visibility"> [system]</span> 14842 14843 14844 14845 <span class="entry_type_deprecated">[deprecated] </span> 14846 14847 14848 14849 </td> <!-- entry_type --> 14850 14851 <td class="entry_description"> 14852 <p>List which camera reprocess stream is used 14853for the source of reprocessing data.<wbr/></p> 14854 </td> 14855 14856 <td class="entry_units"> 14857 List of camera reprocess stream IDs 14858 </td> 14859 14860 <td class="entry_range"> 14861 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14862 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p> 14863 </td> 14864 14865 <td class="entry_tags"> 14866 <ul class="entry_tags"> 14867 <li><a href="#tag_HAL2">HAL2</a></li> 14868 </ul> 14869 </td> 14870 14871 </tr> 14872 <tr class="entries_header"> 14873 <th class="th_details" colspan="5">Details</th> 14874 </tr> 14875 <tr class="entry_cont"> 14876 <td class="entry_details" colspan="5"> 14877 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> == 14878REPROCESS.<wbr/> Ignored otherwise</p> 14879 </td> 14880 </tr> 14881 14882 14883 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14884 <!-- end of entry --> 14885 14886 14887 <tr class="entry" id="controls_android.request.metadataMode"> 14888 <td class="entry_name 14889 " rowspan="1"> 14890 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 14891 </td> 14892 <td class="entry_type"> 14893 <span class="entry_type_name entry_type_name_enum">byte</span> 14894 14895 <span class="entry_type_visibility"> [system]</span> 14896 14897 14898 14899 14900 14901 <ul class="entry_type_enum"> 14902 <li> 14903 <span class="entry_type_enum_name">NONE</span> 14904 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 14905for application-bound buffer data.<wbr/> If no 14906application-bound streams exist,<wbr/> no frame should be 14907placed in the output frame queue.<wbr/> If such streams 14908exist,<wbr/> a frame should be placed on the output queue 14909with null metadata but with the necessary output buffer 14910information.<wbr/> Timestamp information should still be 14911included with any output stream buffers</p></span> 14912 </li> 14913 <li> 14914 <span class="entry_type_enum_name">FULL</span> 14915 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 14916only be produced if they are separately 14917enabled</p></span> 14918 </li> 14919 </ul> 14920 14921 </td> <!-- entry_type --> 14922 14923 <td class="entry_description"> 14924 <p>How much metadata to produce on 14925output</p> 14926 </td> 14927 14928 <td class="entry_units"> 14929 </td> 14930 14931 <td class="entry_range"> 14932 </td> 14933 14934 <td class="entry_tags"> 14935 <ul class="entry_tags"> 14936 <li><a href="#tag_FUTURE">FUTURE</a></li> 14937 </ul> 14938 </td> 14939 14940 </tr> 14941 14942 14943 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 14944 <!-- end of entry --> 14945 14946 14947 <tr class="entry" id="controls_android.request.outputStreams"> 14948 <td class="entry_name 14949 entry_name_deprecated 14950 " rowspan="3"> 14951 android.<wbr/>request.<wbr/>output<wbr/>Streams 14952 </td> 14953 <td class="entry_type"> 14954 <span class="entry_type_name">int32</span> 14955 <span class="entry_type_container">x</span> 14956 14957 <span class="entry_type_array"> 14958 n 14959 </span> 14960 <span class="entry_type_visibility"> [system]</span> 14961 14962 14963 14964 <span class="entry_type_deprecated">[deprecated] </span> 14965 14966 14967 14968 </td> <!-- entry_type --> 14969 14970 <td class="entry_description"> 14971 <p>Lists which camera output streams image data 14972from this capture must be sent to</p> 14973 </td> 14974 14975 <td class="entry_units"> 14976 List of camera stream IDs 14977 </td> 14978 14979 <td class="entry_range"> 14980 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 14981 <p>List must only include streams that have been 14982created</p> 14983 </td> 14984 14985 <td class="entry_tags"> 14986 <ul class="entry_tags"> 14987 <li><a href="#tag_HAL2">HAL2</a></li> 14988 </ul> 14989 </td> 14990 14991 </tr> 14992 <tr class="entries_header"> 14993 <th class="th_details" colspan="5">Details</th> 14994 </tr> 14995 <tr class="entry_cont"> 14996 <td class="entry_details" colspan="5"> 14997 <p>If no output streams are listed,<wbr/> then the image 14998data should simply be discarded.<wbr/> The image data must 14999still be captured for metadata and statistics production,<wbr/> 15000and the lens and flash must operate as requested.<wbr/></p> 15001 </td> 15002 </tr> 15003 15004 15005 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15006 <!-- end of entry --> 15007 15008 15009 <tr class="entry" id="controls_android.request.type"> 15010 <td class="entry_name 15011 entry_name_deprecated 15012 " rowspan="1"> 15013 android.<wbr/>request.<wbr/>type 15014 </td> 15015 <td class="entry_type"> 15016 <span class="entry_type_name entry_type_name_enum">byte</span> 15017 15018 <span class="entry_type_visibility"> [system]</span> 15019 15020 15021 15022 <span class="entry_type_deprecated">[deprecated] </span> 15023 15024 15025 <ul class="entry_type_enum"> 15026 <li> 15027 <span class="entry_type_enum_name">CAPTURE</span> 15028 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/> 15029and process it according to the 15030settings</p></span> 15031 </li> 15032 <li> 15033 <span class="entry_type_enum_name">REPROCESS</span> 15034 <span class="entry_type_enum_notes"><p>Process previously captured data; the 15035<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the 15036source reprocessing stream.<wbr/> TODO: Mark dynamic metadata 15037needed for reprocessing with [RP]</p></span> 15038 </li> 15039 </ul> 15040 15041 </td> <!-- entry_type --> 15042 15043 <td class="entry_description"> 15044 <p>The type of the request; either CAPTURE or 15045REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p> 15046 </td> 15047 15048 <td class="entry_units"> 15049 </td> 15050 15051 <td class="entry_range"> 15052 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15053 </td> 15054 15055 <td class="entry_tags"> 15056 <ul class="entry_tags"> 15057 <li><a href="#tag_HAL2">HAL2</a></li> 15058 </ul> 15059 </td> 15060 15061 </tr> 15062 15063 15064 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15065 <!-- end of entry --> 15066 15067 15068 15069 <!-- end of kind --> 15070 </tbody> 15071 <tr><td colspan="6" class="kind">static</td></tr> 15072 15073 <thead class="entries_header"> 15074 <tr> 15075 <th class="th_name">Property Name</th> 15076 <th class="th_type">Type</th> 15077 <th class="th_description">Description</th> 15078 <th class="th_units">Units</th> 15079 <th class="th_range">Range</th> 15080 <th class="th_tags">Tags</th> 15081 </tr> 15082 </thead> 15083 15084 <tbody> 15085 15086 15087 15088 15089 15090 15091 15092 15093 15094 15095 <tr class="entry" id="static_android.request.maxNumOutputStreams"> 15096 <td class="entry_name 15097 " rowspan="3"> 15098 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams 15099 </td> 15100 <td class="entry_type"> 15101 <span class="entry_type_name">int32</span> 15102 <span class="entry_type_container">x</span> 15103 15104 <span class="entry_type_array"> 15105 3 15106 </span> 15107 <span class="entry_type_visibility"> [ndk_public]</span> 15108 15109 15110 <span class="entry_type_hwlevel">[legacy] </span> 15111 15112 15113 15114 15115 </td> <!-- entry_type --> 15116 15117 <td class="entry_description"> 15118 <p>The maximum numbers of different types of output streams 15119that can be configured and used simultaneously by a camera device.<wbr/></p> 15120 </td> 15121 15122 <td class="entry_units"> 15123 </td> 15124 15125 <td class="entry_range"> 15126 <p>For processed (and stalling) format streams,<wbr/> >= 1.<wbr/></p> 15127<p>For Raw format (either stalling or non-stalling) streams,<wbr/> >= 0.<wbr/></p> 15128<p>For processed (but not stalling) format streams,<wbr/> >= 3 15129for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 15130>= 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> 15131 </td> 15132 15133 <td class="entry_tags"> 15134 <ul class="entry_tags"> 15135 <li><a href="#tag_BC">BC</a></li> 15136 </ul> 15137 </td> 15138 15139 </tr> 15140 <tr class="entries_header"> 15141 <th class="th_details" colspan="5">Details</th> 15142 </tr> 15143 <tr class="entry_cont"> 15144 <td class="entry_details" colspan="5"> 15145 <p>This is a 3 element tuple that contains the max number of output simultaneous 15146streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling) 15147formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and 15148stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams 15149number 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> 15150<p>This lists the upper bound of the number of output streams supported by 15151the camera device.<wbr/> Using more streams simultaneously may require more hardware and 15152CPU resources that will consume more power.<wbr/> The image format for an output stream can 15153be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/> 15154The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized 15155into the 3 stream types as below:</p> 15156<ul> 15157<li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/> 15158 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li> 15159<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> 15160<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> 15161 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/> 15162 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or 15163 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li> 15164</ul> 15165 </td> 15166 </tr> 15167 15168 15169 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15170 <!-- end of entry --> 15171 15172 15173 <tr class="entry" id="static_android.request.maxNumOutputRaw"> 15174 <td class="entry_name 15175 " rowspan="3"> 15176 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw 15177 </td> 15178 <td class="entry_type"> 15179 <span class="entry_type_name">int32</span> 15180 15181 <span class="entry_type_visibility"> [java_public]</span> 15182 15183 <span class="entry_type_synthetic">[synthetic] </span> 15184 15185 <span class="entry_type_hwlevel">[legacy] </span> 15186 15187 15188 15189 15190 </td> <!-- entry_type --> 15191 15192 <td class="entry_description"> 15193 <p>The maximum numbers of different types of output streams 15194that can be configured and used simultaneously by a camera device 15195for any <code>RAW</code> formats.<wbr/></p> 15196 </td> 15197 15198 <td class="entry_units"> 15199 </td> 15200 15201 <td class="entry_range"> 15202 <p>>= 0</p> 15203 </td> 15204 15205 <td class="entry_tags"> 15206 </td> 15207 15208 </tr> 15209 <tr class="entries_header"> 15210 <th class="th_details" colspan="5">Details</th> 15211 </tr> 15212 <tr class="entry_cont"> 15213 <td class="entry_details" colspan="5"> 15214 <p>This value contains the max number of output simultaneous 15215streams from the raw sensor.<wbr/></p> 15216<p>This lists the upper bound of the number of output streams supported by 15217the camera device.<wbr/> Using more streams simultaneously may require more hardware and 15218CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 15219be 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> 15220<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p> 15221<ul> 15222<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li> 15223<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li> 15224<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li> 15225</ul> 15226<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY) 15227never support raw streams.<wbr/></p> 15228 </td> 15229 </tr> 15230 15231 15232 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15233 <!-- end of entry --> 15234 15235 15236 <tr class="entry" id="static_android.request.maxNumOutputProc"> 15237 <td class="entry_name 15238 " rowspan="3"> 15239 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc 15240 </td> 15241 <td class="entry_type"> 15242 <span class="entry_type_name">int32</span> 15243 15244 <span class="entry_type_visibility"> [java_public]</span> 15245 15246 <span class="entry_type_synthetic">[synthetic] </span> 15247 15248 <span class="entry_type_hwlevel">[legacy] </span> 15249 15250 15251 15252 15253 </td> <!-- entry_type --> 15254 15255 <td class="entry_description"> 15256 <p>The maximum numbers of different types of output streams 15257that can be configured and used simultaneously by a camera device 15258for any processed (but not-stalling) formats.<wbr/></p> 15259 </td> 15260 15261 <td class="entry_units"> 15262 </td> 15263 15264 <td class="entry_range"> 15265 <p>>= 3 15266for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>); 15267>= 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> 15268 </td> 15269 15270 <td class="entry_tags"> 15271 </td> 15272 15273 </tr> 15274 <tr class="entries_header"> 15275 <th class="th_details" colspan="5">Details</th> 15276 </tr> 15277 <tr class="entry_cont"> 15278 <td class="entry_details" colspan="5"> 15279 <p>This value contains the max number of output simultaneous 15280streams for any processed (but not-stalling) formats.<wbr/></p> 15281<p>This lists the upper bound of the number of output streams supported by 15282the camera device.<wbr/> Using more streams simultaneously may require more hardware and 15283CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 15284be 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> 15285<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/> 15286Typically:</p> 15287<ul> 15288<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li> 15289<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li> 15290<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li> 15291<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> 15292</ul> 15293<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 15294processed format -- it will return 0 for a non-stalling stream.<wbr/></p> 15295<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p> 15296 </td> 15297 </tr> 15298 15299 15300 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15301 <!-- end of entry --> 15302 15303 15304 <tr class="entry" id="static_android.request.maxNumOutputProcStalling"> 15305 <td class="entry_name 15306 " rowspan="3"> 15307 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling 15308 </td> 15309 <td class="entry_type"> 15310 <span class="entry_type_name">int32</span> 15311 15312 <span class="entry_type_visibility"> [java_public]</span> 15313 15314 <span class="entry_type_synthetic">[synthetic] </span> 15315 15316 <span class="entry_type_hwlevel">[legacy] </span> 15317 15318 15319 15320 15321 </td> <!-- entry_type --> 15322 15323 <td class="entry_description"> 15324 <p>The maximum numbers of different types of output streams 15325that can be configured and used simultaneously by a camera device 15326for any processed (and stalling) formats.<wbr/></p> 15327 </td> 15328 15329 <td class="entry_units"> 15330 </td> 15331 15332 <td class="entry_range"> 15333 <p>>= 1</p> 15334 </td> 15335 15336 <td class="entry_tags"> 15337 </td> 15338 15339 </tr> 15340 <tr class="entries_header"> 15341 <th class="th_details" colspan="5">Details</th> 15342 </tr> 15343 <tr class="entry_cont"> 15344 <td class="entry_details" colspan="5"> 15345 <p>This value contains the max number of output simultaneous 15346streams for any processed (but not-stalling) formats.<wbr/></p> 15347<p>This lists the upper bound of the number of output streams supported by 15348the camera device.<wbr/> Using more streams simultaneously may require more hardware and 15349CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can 15350be 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> 15351<p>A processed and stalling format is defined as any non-RAW format with a stallDurations 15352> 0.<wbr/> Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a 15353stalling format.<wbr/></p> 15354<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 15355processed format -- it will return a non-0 value for a stalling stream.<wbr/></p> 15356<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p> 15357 </td> 15358 </tr> 15359 15360 15361 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15362 <!-- end of entry --> 15363 15364 15365 <tr class="entry" id="static_android.request.maxNumReprocessStreams"> 15366 <td class="entry_name 15367 entry_name_deprecated 15368 " rowspan="3"> 15369 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams 15370 </td> 15371 <td class="entry_type"> 15372 <span class="entry_type_name">int32</span> 15373 <span class="entry_type_container">x</span> 15374 15375 <span class="entry_type_array"> 15376 1 15377 </span> 15378 <span class="entry_type_visibility"> [system]</span> 15379 15380 15381 15382 <span class="entry_type_deprecated">[deprecated] </span> 15383 15384 15385 15386 </td> <!-- entry_type --> 15387 15388 <td class="entry_description"> 15389 <p>How many reprocessing streams of any type 15390can be allocated at the same time.<wbr/></p> 15391 </td> 15392 15393 <td class="entry_units"> 15394 </td> 15395 15396 <td class="entry_range"> 15397 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 15398 <p>>= 0</p> 15399 </td> 15400 15401 <td class="entry_tags"> 15402 <ul class="entry_tags"> 15403 <li><a href="#tag_HAL2">HAL2</a></li> 15404 </ul> 15405 </td> 15406 15407 </tr> 15408 <tr class="entries_header"> 15409 <th class="th_details" colspan="5">Details</th> 15410 </tr> 15411 <tr class="entry_cont"> 15412 <td class="entry_details" colspan="5"> 15413 <p>Only used by HAL2.<wbr/>x.<wbr/></p> 15414<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p> 15415 </td> 15416 </tr> 15417 15418 15419 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15420 <!-- end of entry --> 15421 15422 15423 <tr class="entry" id="static_android.request.maxNumInputStreams"> 15424 <td class="entry_name 15425 " rowspan="5"> 15426 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams 15427 </td> 15428 <td class="entry_type"> 15429 <span class="entry_type_name">int32</span> 15430 15431 <span class="entry_type_visibility"> [public]</span> 15432 15433 15434 <span class="entry_type_hwlevel">[full] </span> 15435 15436 15437 15438 15439 </td> <!-- entry_type --> 15440 15441 <td class="entry_description"> 15442 <p>The maximum numbers of any type of input streams 15443that can be configured and used simultaneously by a camera device.<wbr/></p> 15444 </td> 15445 15446 <td class="entry_units"> 15447 </td> 15448 15449 <td class="entry_range"> 15450 <p>0 or 1.<wbr/></p> 15451 </td> 15452 15453 <td class="entry_tags"> 15454 <ul class="entry_tags"> 15455 <li><a href="#tag_REPROC">REPROC</a></li> 15456 </ul> 15457 </td> 15458 15459 </tr> 15460 <tr class="entries_header"> 15461 <th class="th_details" colspan="5">Details</th> 15462 </tr> 15463 <tr class="entry_cont"> 15464 <td class="entry_details" colspan="5"> 15465 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p> 15466<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 15467input stream,<wbr/> there must be at least one output stream configured to to receive the 15468reprocessed images.<wbr/></p> 15469<p>When an input stream and some output streams are used in a reprocessing request,<wbr/> 15470only the input buffer will be used to produce these output stream buffers,<wbr/> and a 15471new sensor image will not be captured.<wbr/></p> 15472<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input 15473stream image format will be PRIVATE,<wbr/> the associated output stream image format 15474should be JPEG.<wbr/></p> 15475 </td> 15476 </tr> 15477 15478 <tr class="entries_header"> 15479 <th class="th_details" colspan="5">HAL Implementation Details</th> 15480 </tr> 15481 <tr class="entry_cont"> 15482 <td class="entry_details" colspan="5"> 15483 <p>For the reprocessing flow and controls,<wbr/> see 15484hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p> 15485 </td> 15486 </tr> 15487 15488 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15489 <!-- end of entry --> 15490 15491 15492 <tr class="entry" id="static_android.request.pipelineMaxDepth"> 15493 <td class="entry_name 15494 " rowspan="5"> 15495 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth 15496 </td> 15497 <td class="entry_type"> 15498 <span class="entry_type_name">byte</span> 15499 15500 <span class="entry_type_visibility"> [public]</span> 15501 15502 15503 <span class="entry_type_hwlevel">[legacy] </span> 15504 15505 15506 15507 15508 </td> <!-- entry_type --> 15509 15510 <td class="entry_description"> 15511 <p>Specifies the number of maximum pipeline stages a frame 15512has to go through from when it's exposed to when it's available 15513to the framework.<wbr/></p> 15514 </td> 15515 15516 <td class="entry_units"> 15517 </td> 15518 15519 <td class="entry_range"> 15520 </td> 15521 15522 <td class="entry_tags"> 15523 </td> 15524 15525 </tr> 15526 <tr class="entries_header"> 15527 <th class="th_details" colspan="5">Details</th> 15528 </tr> 15529 <tr class="entry_cont"> 15530 <td class="entry_details" colspan="5"> 15531 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/> 15532one stage to readout) from the sensor.<wbr/> The ISP then usually adds 15533its own stages to do custom HW processing.<wbr/> Further stages may be 15534added by SW processing.<wbr/></p> 15535<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what 15536processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline 15537depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than 15538the max pipeline depth.<wbr/></p> 15539<p>A pipeline depth of X stages is equivalent to a pipeline latency of 15540X frame intervals.<wbr/></p> 15541<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/> 15542the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p> 15543 </td> 15544 </tr> 15545 15546 <tr class="entries_header"> 15547 <th class="th_details" colspan="5">HAL Implementation Details</th> 15548 </tr> 15549 <tr class="entry_cont"> 15550 <td class="entry_details" colspan="5"> 15551 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the 15552max batch sizes may be larger than 1.<wbr/></p> 15553 </td> 15554 </tr> 15555 15556 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15557 <!-- end of entry --> 15558 15559 15560 <tr class="entry" id="static_android.request.partialResultCount"> 15561 <td class="entry_name 15562 " rowspan="3"> 15563 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count 15564 </td> 15565 <td class="entry_type"> 15566 <span class="entry_type_name">int32</span> 15567 15568 <span class="entry_type_visibility"> [public]</span> 15569 15570 15571 15572 15573 15574 15575 </td> <!-- entry_type --> 15576 15577 <td class="entry_description"> 15578 <p>Defines how many sub-components 15579a result will be composed of.<wbr/></p> 15580 </td> 15581 15582 <td class="entry_units"> 15583 </td> 15584 15585 <td class="entry_range"> 15586 <p>>= 1</p> 15587 </td> 15588 15589 <td class="entry_tags"> 15590 </td> 15591 15592 </tr> 15593 <tr class="entries_header"> 15594 <th class="th_details" colspan="5">Details</th> 15595 </tr> 15596 <tr class="entry_cont"> 15597 <td class="entry_details" colspan="5"> 15598 <p>In order to combat the pipeline latency,<wbr/> partial results 15599may be delivered to the application layer from the camera device as 15600soon as they are available.<wbr/></p> 15601<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial 15602results are not supported,<wbr/> and only the final TotalCaptureResult will 15603be produced by the camera device.<wbr/></p> 15604<p>A typical use case for this might be: after requesting an 15605auto-focus (AF) lock the new AF state might be available 50% 15606of the way through the pipeline.<wbr/> The camera device could 15607then immediately dispatch this state via a partial result to 15608the application,<wbr/> and the rest of the metadata via later 15609partial results.<wbr/></p> 15610 </td> 15611 </tr> 15612 15613 15614 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 15615 <!-- end of entry --> 15616 15617 15618 <tr class="entry" id="static_android.request.availableCapabilities"> 15619 <td class="entry_name 15620 " rowspan="5"> 15621 android.<wbr/>request.<wbr/>available<wbr/>Capabilities 15622 </td> 15623 <td class="entry_type"> 15624 <span class="entry_type_name entry_type_name_enum">byte</span> 15625 <span class="entry_type_container">x</span> 15626 15627 <span class="entry_type_array"> 15628 n 15629 </span> 15630 <span class="entry_type_visibility"> [public]</span> 15631 15632 15633 <span class="entry_type_hwlevel">[legacy] </span> 15634 15635 15636 15637 <ul class="entry_type_enum"> 15638 <li> 15639 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span> 15640 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera 15641device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>) 15642supports.<wbr/></p> 15643<p>This capability is listed by all normal devices,<wbr/> and 15644indicates that the camera device has a feature set 15645that's comparable to the baseline requirements for the 15646older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> 15647<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this 15648capability,<wbr/> indicating that they support only depth measurement,<wbr/> 15649not standard color output.<wbr/></p></span> 15650 </li> 15651 <li> 15652 <span class="entry_type_enum_name">MANUAL_SENSOR</span> 15653 <span class="entry_type_enum_optional">[optional]</span> 15654 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such 15655as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/> 15656The camera device supports basic manual control of the sensor image 15657acquisition related stages.<wbr/> This means the following controls are 15658guaranteed to be supported:</p> 15659<ul> 15660<li>Manual frame duration control<ul> 15661<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li> 15662<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li> 15663</ul> 15664</li> 15665<li>Manual exposure control<ul> 15666<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 15667<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li> 15668</ul> 15669</li> 15670<li>Manual sensitivity control<ul> 15671<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 15672<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li> 15673</ul> 15674</li> 15675<li>Manual lens control (if the lens is adjustable)<ul> 15676<li>android.<wbr/>lens.<wbr/>*</li> 15677</ul> 15678</li> 15679<li>Manual flash control (if a flash unit is present)<ul> 15680<li>android.<wbr/>flash.<wbr/>*</li> 15681</ul> 15682</li> 15683<li>Manual black level locking<ul> 15684<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li> 15685</ul> 15686</li> 15687<li>Auto exposure lock<ul> 15688<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 15689</ul> 15690</li> 15691</ul> 15692<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera 15693device will accurately report the values applied by 3A in the 15694result.<wbr/></p> 15695<p>A given camera device may also support additional manual sensor controls,<wbr/> 15696but this capability only covers the above list of controls.<wbr/></p> 15697<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will 15698additionally return a min frame duration that is greater than 15699zero for each supported size-format combination.<wbr/></p></span> 15700 </li> 15701 <li> 15702 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span> 15703 <span class="entry_type_enum_optional">[optional]</span> 15704 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/> 15705The camera device supports basic manual control of the image post-processing 15706stages.<wbr/> This means the following controls are guaranteed to be supported:</p> 15707<ul> 15708<li> 15709<p>Manual tonemap control</p> 15710<ul> 15711<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li> 15712<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li> 15713<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li> 15714<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li> 15715<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li> 15716</ul> 15717</li> 15718<li> 15719<p>Manual white balance control</p> 15720<ul> 15721<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li> 15722<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li> 15723</ul> 15724</li> 15725<li>Manual lens shading map control<ul> 15726<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li> 15727<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li> 15728<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li> 15729<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li> 15730</ul> 15731</li> 15732<li>Manual aberration correction control (if aberration correction is supported)<ul> 15733<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li> 15734<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li> 15735</ul> 15736</li> 15737<li>Auto white balance lock<ul> 15738<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 15739</ul> 15740</li> 15741</ul> 15742<p>If auto white balance is enabled,<wbr/> then the camera device 15743will accurately report the values applied by AWB in the result.<wbr/></p> 15744<p>A given camera device may also support additional post-processing 15745controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span> 15746 </li> 15747 <li> 15748 <span class="entry_type_enum_name">RAW</span> 15749 <span class="entry_type_enum_optional">[optional]</span> 15750 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and 15751metadata for interpreting them.<wbr/></p> 15752<p>Devices supporting the RAW capability allow both for 15753saving DNG files,<wbr/> and for direct application processing of 15754raw sensor images.<wbr/></p> 15755<ul> 15756<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li> 15757<li>The maximum available resolution for RAW_<wbr/>SENSOR streams 15758 will match either the value in 15759 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or 15760 <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> 15761<li>All DNG-related optional metadata entries are provided 15762 by the camera device.<wbr/></li> 15763</ul></span> 15764 </li> 15765 <li> 15766 <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span> 15767 <span class="entry_type_enum_optional">[optional]</span> 15768 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p> 15769<ul> 15770<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> 15771<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/> 15772 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of 15773 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> 15774<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 15775 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> 15776<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> 15777<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop 15778 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 15779<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both 15780 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and 15781 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li> 15782<li>The maximum available resolution for PRIVATE streams 15783 (both input/<wbr/>output) will match the maximum available 15784 resolution of JPEG streams.<wbr/></li> 15785<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 15786<li>Only below controls are effective for reprocessing requests and 15787 will be present in capture results,<wbr/> other controls in reprocess 15788 requests will be ignored by the camera device.<wbr/><ul> 15789<li>android.<wbr/>jpeg.<wbr/>*</li> 15790<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 15791<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 15792</ul> 15793</li> 15794<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 15795 <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> 15796</ul></span> 15797 </li> 15798 <li> 15799 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span> 15800 <span class="entry_type_enum_optional">[optional]</span> 15801 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of 15802the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows 15803reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p> 15804<p>The values reported for the following controls are guaranteed to be available 15805in the CaptureResult,<wbr/> including when 3A is enabled:</p> 15806<ul> 15807<li>Exposure control<ul> 15808<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li> 15809</ul> 15810</li> 15811<li>Sensitivity control<ul> 15812<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li> 15813</ul> 15814</li> 15815<li>Lens controls (if the lens is adjustable)<ul> 15816<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li> 15817<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li> 15818</ul> 15819</li> 15820</ul> 15821<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will 15822always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span> 15823 </li> 15824 <li> 15825 <span class="entry_type_enum_name">BURST_CAPTURE</span> 15826 <span class="entry_type_enum_optional">[optional]</span> 15827 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per 15828second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set 15829to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at >= 10 frames 15830per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum 15831resolution of the device,<wbr/> whichever is smaller.<wbr/></p> 15832<p>More specifically,<wbr/> this means that a size matching the camera device's active array 15833size 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/> 15834with a minimum frame duration for that format and size of either <= 1/<wbr/>20 s,<wbr/> or 15835<= 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 15836lists at least one FPS range where the minimum FPS is >= 1 /<wbr/> minimumFrameDuration 15837for 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/> 15838then 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 15839least one resolution >= 8 megapixels,<wbr/> with a minimum frame duration of <= 1/<wbr/>20 15840s.<wbr/></p> 15841<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 15842as the maximum-size YUV_<wbr/>420_<wbr/>888 resolution is.<wbr/></p> 15843<p>If the device supports the PRIVATE_<wbr/>REPROCESSING capability,<wbr/> then the same guarantees 15844as 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> 15845<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 15846and 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> 15847are also guaranteed to be <code>true</code> so burst capture with these two locks ON yields 15848consistent image output.<wbr/></p></span> 15849 </li> 15850 <li> 15851 <span class="entry_type_enum_name">YUV_REPROCESSING</span> 15852 <span class="entry_type_enum_optional">[optional]</span> 15853 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as 15854PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the 15855following:</p> 15856<ul> 15857<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> 15858<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/> 15859 YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by 15860 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and 15861 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li> 15862<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a> 15863 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> 15864<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> 15865<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 15866 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li> 15867<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 15868 <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> 15869<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 15870 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li> 15871<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li> 15872<li>Only the below controls are effective for reprocessing requests and will be present 15873 in capture results.<wbr/> The reprocess requests are from the original capture results that 15874 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> 15875 output buffers.<wbr/> All other controls in the reprocess requests will be ignored by the 15876 camera device.<wbr/><ul> 15877<li>android.<wbr/>jpeg.<wbr/>*</li> 15878<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li> 15879<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li> 15880<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li> 15881</ul> 15882</li> 15883<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and 15884 <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> 15885</ul></span> 15886 </li> 15887 <li> 15888 <span class="entry_type_enum_name">DEPTH_OUTPUT</span> 15889 <span class="entry_type_enum_optional">[optional]</span> 15890 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p> 15891<p>This capability requires the camera device to support the following:</p> 15892<ul> 15893<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li> 15894<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 15895 output format.<wbr/></li> 15896<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/> 15897 will list the following calibration entries in both 15898 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and 15899 <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul> 15900<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li> 15901<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li> 15902<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li> 15903<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li> 15904</ul> 15905</li> 15906<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> 15907<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support 15908 normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16 15909 format.<wbr/></li> 15910</ul> 15911<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/> 15912so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that 15913should be accounted for (see 15914<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/> 15915On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/> 15916using a repeating burst is recommended,<wbr/> where a depth-output target is only included 15917once every N frames,<wbr/> where N is the ratio between preview output rate and depth output 15918rate,<wbr/> including depth stall time.<wbr/></p></span> 15919 </li> 15920 <li> 15921 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span> 15922 <span class="entry_type_enum_optional">[optional]</span> 15923 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) 15924use case.<wbr/> The camera device will support high speed capture session created by 15925<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which 15926only accepts high speed request lists created by 15927<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p> 15928<p>A camera device can still support high speed video streaming by advertising the high speed 15929FPS 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 15930capture request per frame control and synchronization requirements will apply to 15931the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability describes 15932the capability of a specialized operating mode with many limitations (see below),<wbr/> which 15933is only targeted at high speed video recording.<wbr/></p> 15934<p>The supported high speed video sizes and fps ranges are specified in 15935<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/> 15936To get desired output frame rates,<wbr/> the application is only allowed to select video size 15937and FPS range combinations provided by 15938<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/> 15939The 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> 15940<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to 15941ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode 15942controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture 15943and post-processing parameters is possible.<wbr/> All other controls operate the 15944same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other 15945android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> 15946<ul> 15947<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> 15948<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> 15949<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> 15950<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> 15951<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> 15952<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> 15953<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> 15954<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> 15955<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> 15956<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> 15957</ul> 15958<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> 15959<ul> 15960<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not 15961work since aeMode is ON)</li> 15962<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> 15963<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> 15964<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li> 15965</ul> 15966<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may 15967be lower than what camera can output,<wbr/> depending on the destination Surfaces for 15968the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> 15969the application need check if the video encoder is capable of supporting the 15970high frame rate for a given video size,<wbr/> or it will end up with lower recording 15971frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame 15972rate will be bounded by the screen refresh rate.<wbr/></p> 15973<p>The camera device will only support up to 2 high speed simultaneous output surfaces 15974(preview and recording surfaces) 15975in this mode.<wbr/> Above controls will be effective only if all of below conditions are true:</p> 15976<ul> 15977<li>The application creates a camera capture session with no more than 2 surfaces via 15978<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The 15979targeted surfaces must be preview surface (either from 15980<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 15981recording surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or 15982<a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li> 15983<li>The stream sizes are selected from the sizes reported by 15984<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li> 15985<li>The FPS ranges are selected from 15986<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li> 15987</ul> 15988<p>When above conditions are NOT satistied,<wbr/> 15989<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a> 15990will fail.<wbr/></p> 15991<p>Switching to a FPS range that has different maximum FPS may trigger some camera device 15992reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that 15993the application avoids unnecessary maximum target FPS changes as much as possible 15994during high speed streaming.<wbr/></p></span> 15995 </li> 15996 </ul> 15997 15998 </td> <!-- entry_type --> 15999 16000 <td class="entry_description"> 16001 <p>List of capabilities that this camera device 16002advertises as fully supporting.<wbr/></p> 16003 </td> 16004 16005 <td class="entry_units"> 16006 </td> 16007 16008 <td class="entry_range"> 16009 </td> 16010 16011 <td class="entry_tags"> 16012 </td> 16013 16014 </tr> 16015 <tr class="entries_header"> 16016 <th class="th_details" colspan="5">Details</th> 16017 </tr> 16018 <tr class="entry_cont"> 16019 <td class="entry_details" colspan="5"> 16020 <p>A capability is a contract that the camera device makes in order 16021to be able to satisfy one or more use cases.<wbr/></p> 16022<p>Listing a capability guarantees that the whole set of features 16023required to support a common use will all be available.<wbr/></p> 16024<p>Using a subset of the functionality provided by an unsupported 16025capability may be possible on a specific camera device implementation; 16026to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/> 16027<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/> 16028<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p> 16029<p>The following capabilities are guaranteed to be available on 16030<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p> 16031<ul> 16032<li>MANUAL_<wbr/>SENSOR</li> 16033<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li> 16034</ul> 16035<p>Other capabilities may be available on either FULL or LIMITED 16036devices,<wbr/> but the application should query this key to be sure.<wbr/></p> 16037 </td> 16038 </tr> 16039 16040 <tr class="entries_header"> 16041 <th class="th_details" colspan="5">HAL Implementation Details</th> 16042 </tr> 16043 <tr class="entry_cont"> 16044 <td class="entry_details" colspan="5"> 16045 <p>Additional constraint details per-capability will be available 16046in the Compatibility Test Suite.<wbr/></p> 16047<p>Minimum baseline requirements required for the 16048BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/> 16049Instead refer to "BC" tags and the camera CTS tests in the 16050android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p> 16051<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/> 16052<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the 16053request and the result in order to be considered to be 16054capability-compliant.<wbr/></p> 16055<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/> 16056then exposure time must be configurable via the request <em>and</em> 16057the actual exposure applied must be available via 16058the result.<wbr/></p> 16059<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the 16060<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p> 16061<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see 16062hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p> 16063<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the 16064CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p> 16065<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the 16066YUV_<wbr/>REPROCESSING capability must support the 16067CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p> 16068<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys 16069<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/> 16070<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> 16071<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in 16072addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT 16073enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available 16074if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace 16075DEPTH).<wbr/></p> 16076 </td> 16077 </tr> 16078 16079 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16080 <!-- end of entry --> 16081 16082 16083 <tr class="entry" id="static_android.request.availableRequestKeys"> 16084 <td class="entry_name 16085 " rowspan="5"> 16086 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys 16087 </td> 16088 <td class="entry_type"> 16089 <span class="entry_type_name">int32</span> 16090 <span class="entry_type_container">x</span> 16091 16092 <span class="entry_type_array"> 16093 n 16094 </span> 16095 <span class="entry_type_visibility"> [ndk_public]</span> 16096 16097 16098 <span class="entry_type_hwlevel">[legacy] </span> 16099 16100 16101 16102 16103 </td> <!-- entry_type --> 16104 16105 <td class="entry_description"> 16106 <p>A list of all keys that the camera device has available 16107to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p> 16108 </td> 16109 16110 <td class="entry_units"> 16111 </td> 16112 16113 <td class="entry_range"> 16114 </td> 16115 16116 <td class="entry_tags"> 16117 </td> 16118 16119 </tr> 16120 <tr class="entries_header"> 16121 <th class="th_details" colspan="5">Details</th> 16122 </tr> 16123 <tr class="entry_cont"> 16124 <td class="entry_details" colspan="5"> 16125 <p>Attempting to set a key into a CaptureRequest that is not 16126listed here will result in an invalid request and will be rejected 16127by the camera device.<wbr/></p> 16128<p>This field can be used to query the feature set of a camera device 16129at a more granular level than capabilities.<wbr/> This is especially 16130important for optional keys that are not listed under any capability 16131in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 16132 </td> 16133 </tr> 16134 16135 <tr class="entries_header"> 16136 <th class="th_details" colspan="5">HAL Implementation Details</th> 16137 </tr> 16138 <tr class="entry_cont"> 16139 <td class="entry_details" colspan="5"> 16140 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 16141extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 16142<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 16143vendor extensions API and not against this field.<wbr/></p> 16144<p>The HAL must not consume any request tags that are not listed either 16145here or in the vendor tag list.<wbr/></p> 16146<p>The public camera2 API will always make the vendor tags visible 16147via 16148<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> 16149 </td> 16150 </tr> 16151 16152 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16153 <!-- end of entry --> 16154 16155 16156 <tr class="entry" id="static_android.request.availableResultKeys"> 16157 <td class="entry_name 16158 " rowspan="5"> 16159 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys 16160 </td> 16161 <td class="entry_type"> 16162 <span class="entry_type_name">int32</span> 16163 <span class="entry_type_container">x</span> 16164 16165 <span class="entry_type_array"> 16166 n 16167 </span> 16168 <span class="entry_type_visibility"> [ndk_public]</span> 16169 16170 16171 <span class="entry_type_hwlevel">[legacy] </span> 16172 16173 16174 16175 16176 </td> <!-- entry_type --> 16177 16178 <td class="entry_description"> 16179 <p>A list of all keys that the camera device has available 16180to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p> 16181 </td> 16182 16183 <td class="entry_units"> 16184 </td> 16185 16186 <td class="entry_range"> 16187 </td> 16188 16189 <td class="entry_tags"> 16190 </td> 16191 16192 </tr> 16193 <tr class="entries_header"> 16194 <th class="th_details" colspan="5">Details</th> 16195 </tr> 16196 <tr class="entry_cont"> 16197 <td class="entry_details" colspan="5"> 16198 <p>Attempting to get a key from a CaptureResult that is not 16199listed here will always return a <code>null</code> value.<wbr/> Getting a key from 16200a CaptureResult that is listed here will generally never return a <code>null</code> 16201value.<wbr/></p> 16202<p>The following keys may return <code>null</code> unless they are enabled:</p> 16203<ul> 16204<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> 16205</ul> 16206<p>(Those sometimes-null keys will nevertheless be listed here 16207if they are available.<wbr/>)</p> 16208<p>This field can be used to query the feature set of a camera device 16209at a more granular level than capabilities.<wbr/> This is especially 16210important for optional keys that are not listed under any capability 16211in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 16212 </td> 16213 </tr> 16214 16215 <tr class="entries_header"> 16216 <th class="th_details" colspan="5">HAL Implementation Details</th> 16217 </tr> 16218 <tr class="entry_cont"> 16219 <td class="entry_details" colspan="5"> 16220 <p>Tags listed here must always have an entry in the result metadata,<wbr/> 16221even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 16222matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 16223<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 16224extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 16225<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 16226vendor extensions API and not against this field.<wbr/></p> 16227<p>The HAL must not produce any result tags that are not listed either 16228here or in the vendor tag list.<wbr/></p> 16229<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> 16230 </td> 16231 </tr> 16232 16233 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16234 <!-- end of entry --> 16235 16236 16237 <tr class="entry" id="static_android.request.availableCharacteristicsKeys"> 16238 <td class="entry_name 16239 " rowspan="5"> 16240 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys 16241 </td> 16242 <td class="entry_type"> 16243 <span class="entry_type_name">int32</span> 16244 <span class="entry_type_container">x</span> 16245 16246 <span class="entry_type_array"> 16247 n 16248 </span> 16249 <span class="entry_type_visibility"> [ndk_public]</span> 16250 16251 16252 <span class="entry_type_hwlevel">[legacy] </span> 16253 16254 16255 16256 16257 </td> <!-- entry_type --> 16258 16259 <td class="entry_description"> 16260 <p>A list of all keys that the camera device has available 16261to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p> 16262 </td> 16263 16264 <td class="entry_units"> 16265 </td> 16266 16267 <td class="entry_range"> 16268 </td> 16269 16270 <td class="entry_tags"> 16271 </td> 16272 16273 </tr> 16274 <tr class="entries_header"> 16275 <th class="th_details" colspan="5">Details</th> 16276 </tr> 16277 <tr class="entry_cont"> 16278 <td class="entry_details" colspan="5"> 16279 <p>This entry follows the same rules as 16280<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for 16281CameraCharacteristics instead of CaptureResult).<wbr/> See above for more 16282details.<wbr/></p> 16283 </td> 16284 </tr> 16285 16286 <tr class="entries_header"> 16287 <th class="th_details" colspan="5">HAL Implementation Details</th> 16288 </tr> 16289 <tr class="entry_cont"> 16290 <td class="entry_details" colspan="5"> 16291 <p>Keys listed here must always have an entry in the static info metadata,<wbr/> 16292even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/> 16293matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p> 16294<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata 16295extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p> 16296<p>Setting/<wbr/>getting vendor tags will be checked against the metadata 16297vendor extensions API and not against this field.<wbr/></p> 16298<p>The HAL must not have any tags in its static info that are not listed 16299either here or in the vendor tag list.<wbr/></p> 16300<p>The public camera2 API will always make the vendor tags visible 16301via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p> 16302 </td> 16303 </tr> 16304 16305 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16306 <!-- end of entry --> 16307 16308 16309 16310 <!-- end of kind --> 16311 </tbody> 16312 <tr><td colspan="6" class="kind">dynamic</td></tr> 16313 16314 <thead class="entries_header"> 16315 <tr> 16316 <th class="th_name">Property Name</th> 16317 <th class="th_type">Type</th> 16318 <th class="th_description">Description</th> 16319 <th class="th_units">Units</th> 16320 <th class="th_range">Range</th> 16321 <th class="th_tags">Tags</th> 16322 </tr> 16323 </thead> 16324 16325 <tbody> 16326 16327 16328 16329 16330 16331 16332 16333 16334 16335 16336 <tr class="entry" id="dynamic_android.request.frameCount"> 16337 <td class="entry_name 16338 entry_name_deprecated 16339 " rowspan="3"> 16340 android.<wbr/>request.<wbr/>frame<wbr/>Count 16341 </td> 16342 <td class="entry_type"> 16343 <span class="entry_type_name">int32</span> 16344 16345 <span class="entry_type_visibility"> [hidden]</span> 16346 16347 16348 16349 <span class="entry_type_deprecated">[deprecated] </span> 16350 16351 16352 16353 </td> <!-- entry_type --> 16354 16355 <td class="entry_description"> 16356 <p>A frame counter set by the framework.<wbr/> This value monotonically 16357increases with every new result (that is,<wbr/> each new result has a unique 16358frameCount value).<wbr/></p> 16359 </td> 16360 16361 <td class="entry_units"> 16362 count of frames 16363 </td> 16364 16365 <td class="entry_range"> 16366 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16367 <p>> 0</p> 16368 </td> 16369 16370 <td class="entry_tags"> 16371 </td> 16372 16373 </tr> 16374 <tr class="entries_header"> 16375 <th class="th_details" colspan="5">Details</th> 16376 </tr> 16377 <tr class="entry_cont"> 16378 <td class="entry_details" colspan="5"> 16379 <p>Reset on release()</p> 16380 </td> 16381 </tr> 16382 16383 16384 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16385 <!-- end of entry --> 16386 16387 16388 <tr class="entry" id="dynamic_android.request.id"> 16389 <td class="entry_name 16390 " rowspan="1"> 16391 android.<wbr/>request.<wbr/>id 16392 </td> 16393 <td class="entry_type"> 16394 <span class="entry_type_name">int32</span> 16395 16396 <span class="entry_type_visibility"> [hidden]</span> 16397 16398 16399 16400 16401 16402 16403 </td> <!-- entry_type --> 16404 16405 <td class="entry_description"> 16406 <p>An application-specified ID for the current 16407request.<wbr/> Must be maintained unchanged in output 16408frame</p> 16409 </td> 16410 16411 <td class="entry_units"> 16412 arbitrary integer assigned by application 16413 </td> 16414 16415 <td class="entry_range"> 16416 <p>Any int</p> 16417 </td> 16418 16419 <td class="entry_tags"> 16420 <ul class="entry_tags"> 16421 <li><a href="#tag_V1">V1</a></li> 16422 </ul> 16423 </td> 16424 16425 </tr> 16426 16427 16428 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16429 <!-- end of entry --> 16430 16431 16432 <tr class="entry" id="dynamic_android.request.metadataMode"> 16433 <td class="entry_name 16434 " rowspan="1"> 16435 android.<wbr/>request.<wbr/>metadata<wbr/>Mode 16436 </td> 16437 <td class="entry_type"> 16438 <span class="entry_type_name entry_type_name_enum">byte</span> 16439 16440 <span class="entry_type_visibility"> [system]</span> 16441 16442 16443 16444 16445 16446 <ul class="entry_type_enum"> 16447 <li> 16448 <span class="entry_type_enum_name">NONE</span> 16449 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except 16450for application-bound buffer data.<wbr/> If no 16451application-bound streams exist,<wbr/> no frame should be 16452placed in the output frame queue.<wbr/> If such streams 16453exist,<wbr/> a frame should be placed on the output queue 16454with null metadata but with the necessary output buffer 16455information.<wbr/> Timestamp information should still be 16456included with any output stream buffers</p></span> 16457 </li> 16458 <li> 16459 <span class="entry_type_enum_name">FULL</span> 16460 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will 16461only be produced if they are separately 16462enabled</p></span> 16463 </li> 16464 </ul> 16465 16466 </td> <!-- entry_type --> 16467 16468 <td class="entry_description"> 16469 <p>How much metadata to produce on 16470output</p> 16471 </td> 16472 16473 <td class="entry_units"> 16474 </td> 16475 16476 <td class="entry_range"> 16477 </td> 16478 16479 <td class="entry_tags"> 16480 <ul class="entry_tags"> 16481 <li><a href="#tag_FUTURE">FUTURE</a></li> 16482 </ul> 16483 </td> 16484 16485 </tr> 16486 16487 16488 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16489 <!-- end of entry --> 16490 16491 16492 <tr class="entry" id="dynamic_android.request.outputStreams"> 16493 <td class="entry_name 16494 entry_name_deprecated 16495 " rowspan="3"> 16496 android.<wbr/>request.<wbr/>output<wbr/>Streams 16497 </td> 16498 <td class="entry_type"> 16499 <span class="entry_type_name">int32</span> 16500 <span class="entry_type_container">x</span> 16501 16502 <span class="entry_type_array"> 16503 n 16504 </span> 16505 <span class="entry_type_visibility"> [system]</span> 16506 16507 16508 16509 <span class="entry_type_deprecated">[deprecated] </span> 16510 16511 16512 16513 </td> <!-- entry_type --> 16514 16515 <td class="entry_description"> 16516 <p>Lists which camera output streams image data 16517from this capture must be sent to</p> 16518 </td> 16519 16520 <td class="entry_units"> 16521 List of camera stream IDs 16522 </td> 16523 16524 <td class="entry_range"> 16525 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16526 <p>List must only include streams that have been 16527created</p> 16528 </td> 16529 16530 <td class="entry_tags"> 16531 <ul class="entry_tags"> 16532 <li><a href="#tag_HAL2">HAL2</a></li> 16533 </ul> 16534 </td> 16535 16536 </tr> 16537 <tr class="entries_header"> 16538 <th class="th_details" colspan="5">Details</th> 16539 </tr> 16540 <tr class="entry_cont"> 16541 <td class="entry_details" colspan="5"> 16542 <p>If no output streams are listed,<wbr/> then the image 16543data should simply be discarded.<wbr/> The image data must 16544still be captured for metadata and statistics production,<wbr/> 16545and the lens and flash must operate as requested.<wbr/></p> 16546 </td> 16547 </tr> 16548 16549 16550 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16551 <!-- end of entry --> 16552 16553 16554 <tr class="entry" id="dynamic_android.request.pipelineDepth"> 16555 <td class="entry_name 16556 " rowspan="5"> 16557 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth 16558 </td> 16559 <td class="entry_type"> 16560 <span class="entry_type_name">byte</span> 16561 16562 <span class="entry_type_visibility"> [public]</span> 16563 16564 16565 <span class="entry_type_hwlevel">[legacy] </span> 16566 16567 16568 16569 16570 </td> <!-- entry_type --> 16571 16572 <td class="entry_description"> 16573 <p>Specifies the number of pipeline stages the frame went 16574through from when it was exposed to when the final completed result 16575was available to the framework.<wbr/></p> 16576 </td> 16577 16578 <td class="entry_units"> 16579 </td> 16580 16581 <td class="entry_range"> 16582 <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p> 16583 </td> 16584 16585 <td class="entry_tags"> 16586 </td> 16587 16588 </tr> 16589 <tr class="entries_header"> 16590 <th class="th_details" colspan="5">Details</th> 16591 </tr> 16592 <tr class="entry_cont"> 16593 <td class="entry_details" colspan="5"> 16594 <p>Depending on what settings are used in the request,<wbr/> and 16595what streams are configured,<wbr/> the data may undergo less processing,<wbr/> 16596and some pipeline stages skipped.<wbr/></p> 16597<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p> 16598 </td> 16599 </tr> 16600 16601 <tr class="entries_header"> 16602 <th class="th_details" colspan="5">HAL Implementation Details</th> 16603 </tr> 16604 <tr class="entry_cont"> 16605 <td class="entry_details" colspan="5"> 16606 <p>This value must always represent the accurate count of how many 16607pipeline stages were actually used.<wbr/></p> 16608 </td> 16609 </tr> 16610 16611 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16612 <!-- end of entry --> 16613 16614 16615 16616 <!-- end of kind --> 16617 </tbody> 16618 16619 <!-- end of section --> 16620 <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr> 16621 16622 16623 <tr><td colspan="6" class="kind">controls</td></tr> 16624 16625 <thead class="entries_header"> 16626 <tr> 16627 <th class="th_name">Property Name</th> 16628 <th class="th_type">Type</th> 16629 <th class="th_description">Description</th> 16630 <th class="th_units">Units</th> 16631 <th class="th_range">Range</th> 16632 <th class="th_tags">Tags</th> 16633 </tr> 16634 </thead> 16635 16636 <tbody> 16637 16638 16639 16640 16641 16642 16643 16644 16645 16646 16647 <tr class="entry" id="controls_android.scaler.cropRegion"> 16648 <td class="entry_name 16649 " rowspan="5"> 16650 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 16651 </td> 16652 <td class="entry_type"> 16653 <span class="entry_type_name">int32</span> 16654 <span class="entry_type_container">x</span> 16655 16656 <span class="entry_type_array"> 16657 4 16658 </span> 16659 <span class="entry_type_visibility"> [public as rectangle]</span> 16660 16661 16662 <span class="entry_type_hwlevel">[legacy] </span> 16663 16664 16665 16666 16667 </td> <!-- entry_type --> 16668 16669 <td class="entry_description"> 16670 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 16671 </td> 16672 16673 <td class="entry_units"> 16674 Pixel coordinates relative to 16675 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 16676 </td> 16677 16678 <td class="entry_range"> 16679 </td> 16680 16681 <td class="entry_tags"> 16682 <ul class="entry_tags"> 16683 <li><a href="#tag_BC">BC</a></li> 16684 </ul> 16685 </td> 16686 16687 </tr> 16688 <tr class="entries_header"> 16689 <th class="th_details" colspan="5">Details</th> 16690 </tr> 16691 <tr class="entry_cont"> 16692 <td class="entry_details" colspan="5"> 16693 <p>This control can be used to implement digital zoom.<wbr/></p> 16694<p>The crop region coordinate system is based off 16695<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 16696top-left corner of the sensor active array.<wbr/></p> 16697<p>Output streams use this rectangle to produce their output,<wbr/> 16698cropping to a smaller region if necessary to maintain the 16699stream's aspect ratio,<wbr/> then scaling the sensor input to 16700match the output's configured resolution.<wbr/></p> 16701<p>The crop region is applied after the RAW to other color 16702space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 16703(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 16704croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 16705<p>For non-raw streams,<wbr/> any additional per-stream cropping will 16706be done to maximize the final pixel area of the stream.<wbr/></p> 16707<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 16708ratio,<wbr/> then 4:3 streams will use the exact crop 16709region.<wbr/> 16:9 streams will further crop vertically 16710(letterbox).<wbr/></p> 16711<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 16712outputs will crop horizontally (pillarbox),<wbr/> and 16:9 16713streams will match exactly.<wbr/> These additional crops will 16714be centered within the crop region.<wbr/></p> 16715<p>The width and height of the crop region cannot 16716be set to be smaller than 16717<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 16718<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> 16719<p>The camera device may adjust the crop region to account 16720for rounding and other hardware requirements; the final 16721crop region used will be included in the output capture 16722result.<wbr/></p> 16723 </td> 16724 </tr> 16725 16726 <tr class="entries_header"> 16727 <th class="th_details" colspan="5">HAL Implementation Details</th> 16728 </tr> 16729 <tr class="entry_cont"> 16730 <td class="entry_details" colspan="5"> 16731 <p>The output streams must maintain square pixels at all 16732times,<wbr/> no matter what the relative aspect ratios of the 16733crop region and the stream are.<wbr/> Negative values for 16734corner are allowed for raw output if full pixel array is 16735larger than active pixel array.<wbr/> Width and height may be 16736rounded to nearest larger supportable width,<wbr/> especially 16737for raw output,<wbr/> where only a few fixed scales may be 16738possible.<wbr/></p> 16739<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller 16740size than active array size,<wbr/> the HAL need follow below cropping rules:</p> 16741<ul> 16742<li> 16743<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active 16744array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from 16745<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> 16746<ol> 16747<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor 16748cropped pixel area by (tx,<wbr/> ty),<wbr/> 16749where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code> 16750and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The 16751(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the 16752<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 16753<li>Scale the width and height of requested cropRegion with scaling factor of 16754sensor<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 16755respectively.<wbr/> 16756Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image 16757with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need 16758follow the general cropping rule for this new cropRegion and effective active 16759array size.<wbr/></li> 16760</ol> 16761</li> 16762<li> 16763<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/> 16764The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/> 16765The reported cropRegion may be slightly different with the requested cropRegion since 16766the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other 16767hardware limitations.<wbr/></p> 16768</li> 16769</ul> 16770<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 16771 </td> 16772 </tr> 16773 16774 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16775 <!-- end of entry --> 16776 16777 16778 16779 <!-- end of kind --> 16780 </tbody> 16781 <tr><td colspan="6" class="kind">static</td></tr> 16782 16783 <thead class="entries_header"> 16784 <tr> 16785 <th class="th_name">Property Name</th> 16786 <th class="th_type">Type</th> 16787 <th class="th_description">Description</th> 16788 <th class="th_units">Units</th> 16789 <th class="th_range">Range</th> 16790 <th class="th_tags">Tags</th> 16791 </tr> 16792 </thead> 16793 16794 <tbody> 16795 16796 16797 16798 16799 16800 16801 16802 16803 16804 16805 <tr class="entry" id="static_android.scaler.availableFormats"> 16806 <td class="entry_name 16807 entry_name_deprecated 16808 " rowspan="5"> 16809 android.<wbr/>scaler.<wbr/>available<wbr/>Formats 16810 </td> 16811 <td class="entry_type"> 16812 <span class="entry_type_name entry_type_name_enum">int32</span> 16813 <span class="entry_type_container">x</span> 16814 16815 <span class="entry_type_array"> 16816 n 16817 </span> 16818 <span class="entry_type_visibility"> [hidden as imageFormat]</span> 16819 16820 16821 16822 <span class="entry_type_deprecated">[deprecated] </span> 16823 16824 16825 <ul class="entry_type_enum"> 16826 <li> 16827 <span class="entry_type_enum_name">RAW16</span> 16828 <span class="entry_type_enum_optional">[optional]</span> 16829 <span class="entry_type_enum_value">0x20</span> 16830 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image 16831buffers with 16-bit pixels.<wbr/></p> 16832<p>Buffers of this format are typically expected to have a 16833Bayer Color Filter Array (CFA) layout,<wbr/> which is given in 16834<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with 16835CFAs that are not representable by a format in 16836<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not 16837use this format.<wbr/></p> 16838<p>Buffers of this format will also follow the constraints given for 16839RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p> 16840<p>This format is intended to give users access to the full contents 16841of the buffers coming directly from the image sensor prior to any 16842cropping or scaling operations,<wbr/> and all coordinate systems for 16843metadata used for this format are relative to the size of the 16844active region of the image sensor before any geometric distortion 16845correction has been applied (i.<wbr/>e.<wbr/> 16846<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 16847dimensions for this format are limited to the full dimensions of 16848the 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 16849<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 16850only supported output size).<wbr/></p> 16851<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for 16852the full set of performance guarantees.<wbr/></p></span> 16853 </li> 16854 <li> 16855 <span class="entry_type_enum_name">RAW_OPAQUE</span> 16856 <span class="entry_type_enum_optional">[optional]</span> 16857 <span class="entry_type_enum_value">0x24</span> 16858 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or 16859<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a> 16860as referred in public API) is a format for raw image buffers 16861coming from an image sensor.<wbr/></p> 16862<p>The actual structure of buffers of this format is 16863platform-specific,<wbr/> but must follow several constraints:</p> 16864<ol> 16865<li>No image post-processing operations may have been applied to 16866buffers of this type.<wbr/> These buffers contain raw image data coming 16867directly from the image sensor.<wbr/></li> 16868<li>If a buffer of this format is passed to the camera device for 16869reprocessing,<wbr/> the resulting images will be identical to the images 16870produced if the buffer had come directly from the sensor and was 16871processed with the same settings.<wbr/></li> 16872</ol> 16873<p>The intended use for this format is to allow access to the native 16874raw format buffers coming directly from the camera sensor without 16875any additional conversions or decrease in framerate.<wbr/></p> 16876<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 16877performance guarantees.<wbr/></p></span> 16878 </li> 16879 <li> 16880 <span class="entry_type_enum_name">YV12</span> 16881 <span class="entry_type_enum_optional">[optional]</span> 16882 <span class="entry_type_enum_value">0x32315659</span> 16883 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span> 16884 </li> 16885 <li> 16886 <span class="entry_type_enum_name">YCrCb_420_SP</span> 16887 <span class="entry_type_enum_optional">[optional]</span> 16888 <span class="entry_type_enum_value">0x11</span> 16889 <span class="entry_type_enum_notes"><p>NV21</p></span> 16890 </li> 16891 <li> 16892 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span> 16893 <span class="entry_type_enum_value">0x22</span> 16894 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span> 16895 </li> 16896 <li> 16897 <span class="entry_type_enum_name">YCbCr_420_888</span> 16898 <span class="entry_type_enum_value">0x23</span> 16899 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span> 16900 </li> 16901 <li> 16902 <span class="entry_type_enum_name">BLOB</span> 16903 <span class="entry_type_enum_value">0x21</span> 16904 <span class="entry_type_enum_notes"><p>JPEG format</p></span> 16905 </li> 16906 </ul> 16907 16908 </td> <!-- entry_type --> 16909 16910 <td class="entry_description"> 16911 <p>The list of image formats that are supported by this 16912camera device for output streams.<wbr/></p> 16913 </td> 16914 16915 <td class="entry_units"> 16916 </td> 16917 16918 <td class="entry_range"> 16919 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16920 </td> 16921 16922 <td class="entry_tags"> 16923 <ul class="entry_tags"> 16924 <li><a href="#tag_BC">BC</a></li> 16925 </ul> 16926 </td> 16927 16928 </tr> 16929 <tr class="entries_header"> 16930 <th class="th_details" colspan="5">Details</th> 16931 </tr> 16932 <tr class="entry_cont"> 16933 <td class="entry_details" colspan="5"> 16934 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p> 16935<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p> 16936 </td> 16937 </tr> 16938 16939 <tr class="entries_header"> 16940 <th class="th_details" colspan="5">HAL Implementation Details</th> 16941 </tr> 16942 <tr class="entry_cont"> 16943 <td class="entry_details" colspan="5"> 16944 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in 16945system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> 16946<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform 16947gralloc module will select a format based on the usage flags provided 16948by the camera HAL device and the other endpoint of the stream.<wbr/> It is 16949usually used by preview and recording streams,<wbr/> where the application doesn't 16950need access the image data.<wbr/></p> 16951<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream 16952needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p> 16953<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p> 16954<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly 16955recommended that any information used by the camera device when 16956processing images is fully expressed by the result metadata 16957for that image buffer.<wbr/></p> 16958 </td> 16959 </tr> 16960 16961 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 16962 <!-- end of entry --> 16963 16964 16965 <tr class="entry" id="static_android.scaler.availableJpegMinDurations"> 16966 <td class="entry_name 16967 entry_name_deprecated 16968 " rowspan="3"> 16969 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations 16970 </td> 16971 <td class="entry_type"> 16972 <span class="entry_type_name">int64</span> 16973 <span class="entry_type_container">x</span> 16974 16975 <span class="entry_type_array"> 16976 n 16977 </span> 16978 <span class="entry_type_visibility"> [hidden]</span> 16979 16980 16981 16982 <span class="entry_type_deprecated">[deprecated] </span> 16983 16984 16985 16986 </td> <!-- entry_type --> 16987 16988 <td class="entry_description"> 16989 <p>The minimum frame duration that is supported 16990for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p> 16991 </td> 16992 16993 <td class="entry_units"> 16994 Nanoseconds 16995 </td> 16996 16997 <td class="entry_range"> 16998 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 16999 <p>TODO: Remove property.<wbr/></p> 17000 </td> 17001 17002 <td class="entry_tags"> 17003 <ul class="entry_tags"> 17004 <li><a href="#tag_BC">BC</a></li> 17005 </ul> 17006 </td> 17007 17008 </tr> 17009 <tr class="entries_header"> 17010 <th class="th_details" colspan="5">Details</th> 17011 </tr> 17012 <tr class="entry_cont"> 17013 <td class="entry_details" colspan="5"> 17014 <p>This corresponds to the minimum steady-state frame duration when only 17015that JPEG stream is active and captured in a burst,<wbr/> with all 17016processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> 17017<p>When multiple streams are configured,<wbr/> the minimum 17018frame duration will be >= max(individual stream min 17019durations)</p> 17020 </td> 17021 </tr> 17022 17023 17024 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17025 <!-- end of entry --> 17026 17027 17028 <tr class="entry" id="static_android.scaler.availableJpegSizes"> 17029 <td class="entry_name 17030 entry_name_deprecated 17031 " rowspan="5"> 17032 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes 17033 </td> 17034 <td class="entry_type"> 17035 <span class="entry_type_name">int32</span> 17036 <span class="entry_type_container">x</span> 17037 17038 <span class="entry_type_array"> 17039 n x 2 17040 </span> 17041 <span class="entry_type_visibility"> [hidden as size]</span> 17042 17043 17044 17045 <span class="entry_type_deprecated">[deprecated] </span> 17046 17047 17048 17049 </td> <!-- entry_type --> 17050 17051 <td class="entry_description"> 17052 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p> 17053 </td> 17054 17055 <td class="entry_units"> 17056 </td> 17057 17058 <td class="entry_range"> 17059 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17060 <p>TODO: Remove property.<wbr/></p> 17061 </td> 17062 17063 <td class="entry_tags"> 17064 <ul class="entry_tags"> 17065 <li><a href="#tag_BC">BC</a></li> 17066 </ul> 17067 </td> 17068 17069 </tr> 17070 <tr class="entries_header"> 17071 <th class="th_details" colspan="5">Details</th> 17072 </tr> 17073 <tr class="entry_cont"> 17074 <td class="entry_details" colspan="5"> 17075 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support 17076sensor 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> 17077 </td> 17078 </tr> 17079 17080 <tr class="entries_header"> 17081 <th class="th_details" colspan="5">HAL Implementation Details</th> 17082 </tr> 17083 <tr class="entry_cont"> 17084 <td class="entry_details" colspan="5"> 17085 <p>The HAL must include sensor maximum resolution 17086(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/> 17087and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p> 17088 </td> 17089 </tr> 17090 17091 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17092 <!-- end of entry --> 17093 17094 17095 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom"> 17096 <td class="entry_name 17097 " rowspan="3"> 17098 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom 17099 </td> 17100 <td class="entry_type"> 17101 <span class="entry_type_name">float</span> 17102 17103 <span class="entry_type_visibility"> [public]</span> 17104 17105 17106 <span class="entry_type_hwlevel">[legacy] </span> 17107 17108 17109 17110 17111 </td> <!-- entry_type --> 17112 17113 <td class="entry_description"> 17114 <p>The maximum ratio between both active area width 17115and crop region width,<wbr/> and active area height and 17116crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 17117 </td> 17118 17119 <td class="entry_units"> 17120 Zoom scale factor 17121 </td> 17122 17123 <td class="entry_range"> 17124 <p>>=1</p> 17125 </td> 17126 17127 <td class="entry_tags"> 17128 <ul class="entry_tags"> 17129 <li><a href="#tag_BC">BC</a></li> 17130 </ul> 17131 </td> 17132 17133 </tr> 17134 <tr class="entries_header"> 17135 <th class="th_details" colspan="5">Details</th> 17136 </tr> 17137 <tr class="entry_cont"> 17138 <td class="entry_details" colspan="5"> 17139 <p>This represents the maximum amount of zooming possible by 17140the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping 17141window size.<wbr/></p> 17142<p>Crop regions that have a width or height that is smaller 17143than this ratio allows will be rounded up to the minimum 17144allowed size by the camera device.<wbr/></p> 17145 </td> 17146 </tr> 17147 17148 17149 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17150 <!-- end of entry --> 17151 17152 17153 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations"> 17154 <td class="entry_name 17155 entry_name_deprecated 17156 " rowspan="3"> 17157 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations 17158 </td> 17159 <td class="entry_type"> 17160 <span class="entry_type_name">int64</span> 17161 <span class="entry_type_container">x</span> 17162 17163 <span class="entry_type_array"> 17164 n 17165 </span> 17166 <span class="entry_type_visibility"> [hidden]</span> 17167 17168 17169 17170 <span class="entry_type_deprecated">[deprecated] </span> 17171 17172 17173 17174 </td> <!-- entry_type --> 17175 17176 <td class="entry_description"> 17177 <p>For each available processed output size (defined in 17178<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the 17179minimum supportable frame duration for that size.<wbr/></p> 17180 </td> 17181 17182 <td class="entry_units"> 17183 Nanoseconds 17184 </td> 17185 17186 <td class="entry_range"> 17187 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17188 </td> 17189 17190 <td class="entry_tags"> 17191 <ul class="entry_tags"> 17192 <li><a href="#tag_BC">BC</a></li> 17193 </ul> 17194 </td> 17195 17196 </tr> 17197 <tr class="entries_header"> 17198 <th class="th_details" colspan="5">Details</th> 17199 </tr> 17200 <tr class="entry_cont"> 17201 <td class="entry_details" colspan="5"> 17202 <p>This should correspond to the frame duration when only that processed 17203stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 17204set to FAST.<wbr/></p> 17205<p>When multiple streams are configured,<wbr/> the minimum frame duration will 17206be >= max(individual stream min durations).<wbr/></p> 17207 </td> 17208 </tr> 17209 17210 17211 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17212 <!-- end of entry --> 17213 17214 17215 <tr class="entry" id="static_android.scaler.availableProcessedSizes"> 17216 <td class="entry_name 17217 entry_name_deprecated 17218 " rowspan="5"> 17219 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes 17220 </td> 17221 <td class="entry_type"> 17222 <span class="entry_type_name">int32</span> 17223 <span class="entry_type_container">x</span> 17224 17225 <span class="entry_type_array"> 17226 n x 2 17227 </span> 17228 <span class="entry_type_visibility"> [hidden as size]</span> 17229 17230 17231 17232 <span class="entry_type_deprecated">[deprecated] </span> 17233 17234 17235 17236 </td> <!-- entry_type --> 17237 17238 <td class="entry_description"> 17239 <p>The resolutions available for use with 17240processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and 17241platform opaque YUV/<wbr/>RGB streams to the GPU or video 17242encoders.<wbr/></p> 17243 </td> 17244 17245 <td class="entry_units"> 17246 </td> 17247 17248 <td class="entry_range"> 17249 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17250 </td> 17251 17252 <td class="entry_tags"> 17253 <ul class="entry_tags"> 17254 <li><a href="#tag_BC">BC</a></li> 17255 </ul> 17256 </td> 17257 17258 </tr> 17259 <tr class="entries_header"> 17260 <th class="th_details" colspan="5">Details</th> 17261 </tr> 17262 <tr class="entry_cont"> 17263 <td class="entry_details" colspan="5"> 17264 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p> 17265<p>For a given use case,<wbr/> the actual maximum supported resolution 17266may be lower than what is listed here,<wbr/> depending on the destination 17267Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 17268the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 17269smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 17270can provide.<wbr/></p> 17271<p>Please reference the documentation for the image data destination to 17272check if it limits the maximum size for image data.<wbr/></p> 17273 </td> 17274 </tr> 17275 17276 <tr class="entries_header"> 17277 <th class="th_details" colspan="5">HAL Implementation Details</th> 17278 </tr> 17279 <tr class="entry_cont"> 17280 <td class="entry_details" colspan="5"> 17281 <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/> 17282the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a> 17283and each below resolution if it is smaller than or equal to the sensor 17284maximum resolution (if they are not listed in JPEG sizes already):</p> 17285<ul> 17286<li>240p (320 x 240)</li> 17287<li>480p (640 x 480)</li> 17288<li>720p (1280 x 720)</li> 17289<li>1080p (1920 x 1080)</li> 17290</ul> 17291<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/> 17292the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p> 17293 </td> 17294 </tr> 17295 17296 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17297 <!-- end of entry --> 17298 17299 17300 <tr class="entry" id="static_android.scaler.availableRawMinDurations"> 17301 <td class="entry_name 17302 entry_name_deprecated 17303 " rowspan="3"> 17304 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations 17305 </td> 17306 <td class="entry_type"> 17307 <span class="entry_type_name">int64</span> 17308 <span class="entry_type_container">x</span> 17309 17310 <span class="entry_type_array"> 17311 n 17312 </span> 17313 <span class="entry_type_visibility"> [system]</span> 17314 17315 17316 17317 <span class="entry_type_deprecated">[deprecated] </span> 17318 17319 17320 17321 </td> <!-- entry_type --> 17322 17323 <td class="entry_description"> 17324 <p>For each available raw output size (defined in 17325<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum 17326supportable frame duration for that size.<wbr/></p> 17327 </td> 17328 17329 <td class="entry_units"> 17330 Nanoseconds 17331 </td> 17332 17333 <td class="entry_range"> 17334 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17335 </td> 17336 17337 <td class="entry_tags"> 17338 <ul class="entry_tags"> 17339 <li><a href="#tag_BC">BC</a></li> 17340 </ul> 17341 </td> 17342 17343 </tr> 17344 <tr class="entries_header"> 17345 <th class="th_details" colspan="5">Details</th> 17346 </tr> 17347 <tr class="entry_cont"> 17348 <td class="entry_details" colspan="5"> 17349 <p>Should correspond to the frame duration when only the raw stream is 17350active.<wbr/></p> 17351<p>When multiple streams are configured,<wbr/> the minimum 17352frame duration will be >= max(individual stream min 17353durations)</p> 17354 </td> 17355 </tr> 17356 17357 17358 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17359 <!-- end of entry --> 17360 17361 17362 <tr class="entry" id="static_android.scaler.availableRawSizes"> 17363 <td class="entry_name 17364 entry_name_deprecated 17365 " rowspan="1"> 17366 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes 17367 </td> 17368 <td class="entry_type"> 17369 <span class="entry_type_name">int32</span> 17370 <span class="entry_type_container">x</span> 17371 17372 <span class="entry_type_array"> 17373 n x 2 17374 </span> 17375 <span class="entry_type_visibility"> [system as size]</span> 17376 17377 17378 17379 <span class="entry_type_deprecated">[deprecated] </span> 17380 17381 17382 17383 </td> <!-- entry_type --> 17384 17385 <td class="entry_description"> 17386 <p>The resolutions available for use with raw 17387sensor output streams,<wbr/> listed as width,<wbr/> 17388height</p> 17389 </td> 17390 17391 <td class="entry_units"> 17392 </td> 17393 17394 <td class="entry_range"> 17395 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 17396 </td> 17397 17398 <td class="entry_tags"> 17399 </td> 17400 17401 </tr> 17402 17403 17404 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17405 <!-- end of entry --> 17406 17407 17408 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap"> 17409 <td class="entry_name 17410 " rowspan="5"> 17411 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map 17412 </td> 17413 <td class="entry_type"> 17414 <span class="entry_type_name">int32</span> 17415 17416 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span> 17417 17418 17419 17420 17421 17422 17423 </td> <!-- entry_type --> 17424 17425 <td class="entry_description"> 17426 <p>The mapping of image formats that are supported by this 17427camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p> 17428 </td> 17429 17430 <td class="entry_units"> 17431 </td> 17432 17433 <td class="entry_range"> 17434 </td> 17435 17436 <td class="entry_tags"> 17437 <ul class="entry_tags"> 17438 <li><a href="#tag_REPROC">REPROC</a></li> 17439 </ul> 17440 </td> 17441 17442 </tr> 17443 <tr class="entries_header"> 17444 <th class="th_details" colspan="5">Details</th> 17445 </tr> 17446 <tr class="entry_cont"> 17447 <td class="entry_details" colspan="5"> 17448 <p>All camera devices with at least 1 17449<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one 17450available input format.<wbr/></p> 17451<p>The camera device will support the following map of formats,<wbr/> 17452if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p> 17453<table> 17454<thead> 17455<tr> 17456<th align="left">Input Format</th> 17457<th align="left">Output Format</th> 17458<th align="left">Capability</th> 17459</tr> 17460</thead> 17461<tbody> 17462<tr> 17463<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 17464<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17465<td align="left">PRIVATE_<wbr/>REPROCESSING</td> 17466</tr> 17467<tr> 17468<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 17469<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> 17470<td align="left">PRIVATE_<wbr/>REPROCESSING</td> 17471</tr> 17472<tr> 17473<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> 17474<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17475<td align="left">YUV_<wbr/>REPROCESSING</td> 17476</tr> 17477<tr> 17478<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> 17479<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> 17480<td align="left">YUV_<wbr/>REPROCESSING</td> 17481</tr> 17482</tbody> 17483</table> 17484<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A 17485PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a> 17486with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p> 17487<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input 17488or 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> 17489<p>Attempting to configure an input stream with output streams not 17490listed as available in this map is not valid.<wbr/></p> 17491 </td> 17492 </tr> 17493 17494 <tr class="entries_header"> 17495 <th class="th_details" colspan="5">HAL Implementation Details</th> 17496 </tr> 17497 <tr class="entry_cont"> 17498 <td class="entry_details" colspan="5"> 17499 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition 17500of the image format enumerations.<wbr/> The PRIVATE format refers to the 17501HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine 17502the actual format by using the gralloc usage flags.<wbr/> 17503For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially 17504processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/> 17505See camera3.<wbr/>h for more details.<wbr/></p> 17506<p>This value is encoded as a variable-size array-of-arrays.<wbr/> 17507The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where 17508<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another 17509inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p> 17510<p>A code sample to read/<wbr/>write this encoding (with a device that 17511supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/> 17512and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p> 17513<pre><code>//<wbr/> reading 17514int32_<wbr/>t* contents = &entry.<wbr/>i32[0]; 17515for (size_<wbr/>t i = 0; i < entry.<wbr/>count; ) { 17516 int32_<wbr/>t format = contents[i++]; 17517 int32_<wbr/>t length = contents[i++]; 17518 int32_<wbr/>t output_<wbr/>formats[length]; 17519 memcpy(&output_<wbr/>formats[0],<wbr/> &contents[i],<wbr/> 17520 length * sizeof(int32_<wbr/>t)); 17521 i += length; 17522} 17523 17524//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING) 17525int32_<wbr/>t[] contents = { 17526 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 17527 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/> 17528}; 17529update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &contents[0],<wbr/> 17530 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &updated_<wbr/>entry); 17531</code></pre> 17532<p>If the HAL claims to support any of the capabilities listed in the 17533above details,<wbr/> then it must also support all the input-output 17534combinations listed for that capability.<wbr/> It can optionally support 17535additional formats if it so chooses.<wbr/></p> 17536 </td> 17537 </tr> 17538 17539 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17540 <!-- end of entry --> 17541 17542 17543 <tr class="entry" id="static_android.scaler.availableStreamConfigurations"> 17544 <td class="entry_name 17545 " rowspan="5"> 17546 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations 17547 </td> 17548 <td class="entry_type"> 17549 <span class="entry_type_name entry_type_name_enum">int32</span> 17550 <span class="entry_type_container">x</span> 17551 17552 <span class="entry_type_array"> 17553 n x 4 17554 </span> 17555 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 17556 17557 17558 <span class="entry_type_hwlevel">[legacy] </span> 17559 17560 17561 17562 <ul class="entry_type_enum"> 17563 <li> 17564 <span class="entry_type_enum_name">OUTPUT</span> 17565 </li> 17566 <li> 17567 <span class="entry_type_enum_name">INPUT</span> 17568 </li> 17569 </ul> 17570 17571 </td> <!-- entry_type --> 17572 17573 <td class="entry_description"> 17574 <p>The available stream configurations that this 17575camera device supports 17576(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 17577 </td> 17578 17579 <td class="entry_units"> 17580 </td> 17581 17582 <td class="entry_range"> 17583 </td> 17584 17585 <td class="entry_tags"> 17586 </td> 17587 17588 </tr> 17589 <tr class="entries_header"> 17590 <th class="th_details" colspan="5">Details</th> 17591 </tr> 17592 <tr class="entry_cont"> 17593 <td class="entry_details" colspan="5"> 17594 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> 17595tuples.<wbr/></p> 17596<p>For a given use case,<wbr/> the actual maximum supported resolution 17597may be lower than what is listed here,<wbr/> depending on the destination 17598Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 17599the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 17600smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 17601can provide.<wbr/></p> 17602<p>Please reference the documentation for the image data destination to 17603check if it limits the maximum size for image data.<wbr/></p> 17604<p>Not all output formats may be supported in a configuration with 17605an input stream of a particular format.<wbr/> For more details,<wbr/> see 17606<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 17607<p>The following table describes the minimum required output stream 17608configurations based on the hardware level 17609(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 17610<table> 17611<thead> 17612<tr> 17613<th align="center">Format</th> 17614<th align="center">Size</th> 17615<th align="center">Hardware Level</th> 17616<th align="center">Notes</th> 17617</tr> 17618</thead> 17619<tbody> 17620<tr> 17621<td align="center">JPEG</td> 17622<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td> 17623<td align="center">Any</td> 17624<td align="center"></td> 17625</tr> 17626<tr> 17627<td align="center">JPEG</td> 17628<td align="center">1920x1080 (1080p)</td> 17629<td align="center">Any</td> 17630<td align="center">if 1080p <= activeArraySize</td> 17631</tr> 17632<tr> 17633<td align="center">JPEG</td> 17634<td align="center">1280x720 (720)</td> 17635<td align="center">Any</td> 17636<td align="center">if 720p <= activeArraySize</td> 17637</tr> 17638<tr> 17639<td align="center">JPEG</td> 17640<td align="center">640x480 (480p)</td> 17641<td align="center">Any</td> 17642<td align="center">if 480p <= activeArraySize</td> 17643</tr> 17644<tr> 17645<td align="center">JPEG</td> 17646<td align="center">320x240 (240p)</td> 17647<td align="center">Any</td> 17648<td align="center">if 240p <= activeArraySize</td> 17649</tr> 17650<tr> 17651<td align="center">YUV_<wbr/>420_<wbr/>888</td> 17652<td align="center">all output sizes available for JPEG</td> 17653<td align="center">FULL</td> 17654<td align="center"></td> 17655</tr> 17656<tr> 17657<td align="center">YUV_<wbr/>420_<wbr/>888</td> 17658<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 17659<td align="center">LIMITED</td> 17660<td align="center"></td> 17661</tr> 17662<tr> 17663<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td> 17664<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 17665<td align="center">Any</td> 17666<td align="center"></td> 17667</tr> 17668</tbody> 17669</table> 17670<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional 17671mandatory stream configurations on a per-capability basis.<wbr/></p> 17672 </td> 17673 </tr> 17674 17675 <tr class="entries_header"> 17676 <th class="th_details" colspan="5">HAL Implementation Details</th> 17677 </tr> 17678 <tr class="entry_cont"> 17679 <td class="entry_details" colspan="5"> 17680 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 17681of sensor maximum resolution for JPEG formats (regardless of hardware 17682level).<wbr/></p> 17683<p>(The following is a rewording of the above required table):</p> 17684<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 17685<ul> 17686<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 17687(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 17688(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/> 17689it does not have to be included in the supported JPEG sizes.<wbr/></li> 17690<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 17691the dimensions being a multiple of 16.<wbr/></li> 17692</ul> 17693<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 17694However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum 17695resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 17696additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 17697if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 17698ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 176993264x2448.<wbr/></p> 17700<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/> 17701the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 17702here as output streams.<wbr/></p> 17703<p>It must also include each below resolution if it is smaller than or 17704equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 17705formats),<wbr/> as output streams:</p> 17706<ul> 17707<li>240p (320 x 240)</li> 17708<li>480p (640 x 480)</li> 17709<li>720p (1280 x 720)</li> 17710<li>1080p (1920 x 1080)</li> 17711</ul> 17712<p>For LIMITED capability devices 17713(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 17714the HAL only has to list up to the maximum video size 17715supported by the device.<wbr/></p> 17716<p>Regardless of hardware level,<wbr/> every output resolution available for 17717YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 17718<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 17719<ul> 17720<li>availableFormats</li> 17721<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 17722</ul> 17723 </td> 17724 </tr> 17725 17726 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17727 <!-- end of entry --> 17728 17729 17730 <tr class="entry" id="static_android.scaler.availableMinFrameDurations"> 17731 <td class="entry_name 17732 " rowspan="3"> 17733 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations 17734 </td> 17735 <td class="entry_type"> 17736 <span class="entry_type_name">int64</span> 17737 <span class="entry_type_container">x</span> 17738 17739 <span class="entry_type_array"> 17740 4 x n 17741 </span> 17742 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 17743 17744 17745 <span class="entry_type_hwlevel">[legacy] </span> 17746 17747 17748 17749 17750 </td> <!-- entry_type --> 17751 17752 <td class="entry_description"> 17753 <p>This lists the minimum frame duration for each 17754format/<wbr/>size combination.<wbr/></p> 17755 </td> 17756 17757 <td class="entry_units"> 17758 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 17759 </td> 17760 17761 <td class="entry_range"> 17762 </td> 17763 17764 <td class="entry_tags"> 17765 <ul class="entry_tags"> 17766 <li><a href="#tag_V1">V1</a></li> 17767 </ul> 17768 </td> 17769 17770 </tr> 17771 <tr class="entries_header"> 17772 <th class="th_details" colspan="5">Details</th> 17773 </tr> 17774 <tr class="entry_cont"> 17775 <td class="entry_details" colspan="5"> 17776 <p>This should correspond to the frame duration when only that 17777stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 17778set to either OFF or FAST.<wbr/></p> 17779<p>When multiple streams are used in a request,<wbr/> the minimum frame 17780duration will be max(individual stream min durations).<wbr/></p> 17781<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 17782is the same regardless of whether the stream is input or output.<wbr/></p> 17783<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 17784<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 17785calculating the max frame rate.<wbr/></p> 17786<p>(Keep in sync with 17787<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p> 17788 </td> 17789 </tr> 17790 17791 17792 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17793 <!-- end of entry --> 17794 17795 17796 <tr class="entry" id="static_android.scaler.availableStallDurations"> 17797 <td class="entry_name 17798 " rowspan="5"> 17799 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations 17800 </td> 17801 <td class="entry_type"> 17802 <span class="entry_type_name">int64</span> 17803 <span class="entry_type_container">x</span> 17804 17805 <span class="entry_type_array"> 17806 4 x n 17807 </span> 17808 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 17809 17810 17811 <span class="entry_type_hwlevel">[legacy] </span> 17812 17813 17814 17815 17816 </td> <!-- entry_type --> 17817 17818 <td class="entry_description"> 17819 <p>This lists the maximum stall duration for each 17820output format/<wbr/>size combination.<wbr/></p> 17821 </td> 17822 17823 <td class="entry_units"> 17824 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 17825 </td> 17826 17827 <td class="entry_range"> 17828 </td> 17829 17830 <td class="entry_tags"> 17831 <ul class="entry_tags"> 17832 <li><a href="#tag_V1">V1</a></li> 17833 </ul> 17834 </td> 17835 17836 </tr> 17837 <tr class="entries_header"> 17838 <th class="th_details" colspan="5">Details</th> 17839 </tr> 17840 <tr class="entry_cont"> 17841 <td class="entry_details" colspan="5"> 17842 <p>A stall duration is how much extra time would get added 17843to the normal minimum frame duration for a repeating request 17844that has streams with non-zero stall.<wbr/></p> 17845<p>For example,<wbr/> consider JPEG captures which have the following 17846characteristics:</p> 17847<ul> 17848<li>JPEG streams act like processed YUV streams in requests for which 17849they are not included; in requests in which they are directly 17850referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a 17851JPEG stream requires the underlying YUV data to always be ready for 17852use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact 17853frame duration) on requests that actually reference a JPEG stream.<wbr/></li> 17854<li>The JPEG processor can run concurrently to the rest of the camera 17855pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> 17856</ul> 17857<p>In other words,<wbr/> using a repeating YUV request would result 17858in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single 17859JPEG request is submitted periodically,<wbr/> the frame rate will stay 17860at 30 FPS (as long as we wait for the previous JPEG to return each 17861time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then 17862the frame rate will drop from 30 FPS.<wbr/></p> 17863<p>In general,<wbr/> submitting a new request with a non-0 stall time 17864stream will <em>not</em> cause a frame rate drop unless there are still 17865outstanding buffers for that stream from previous requests.<wbr/></p> 17866<p>Submitting a repeating request with streams (call this <code>S</code>) 17867is the same as setting the minimum frame duration from 17868the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with 17869the maximum stall duration for <code>S</code>.<wbr/></p> 17870<p>If interleaving requests with and without a stall duration,<wbr/> 17871a request will stall by the maximum of the remaining times 17872for each can-stall stream with outstanding buffers.<wbr/></p> 17873<p>This means that a stalling request will not have an exposure start 17874until the stall has completed.<wbr/></p> 17875<p>This should correspond to the stall duration when only that stream is 17876active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST 17877or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY 17878effectively results in an indeterminate stall duration for all 17879streams in a request (the regular stall calculation rules are 17880ignored).<wbr/></p> 17881<p>The following formats may always have a stall duration:</p> 17882<ul> 17883<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li> 17884<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li> 17885</ul> 17886<p>The following formats will never have a stall duration:</p> 17887<ul> 17888<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> 17889<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li> 17890</ul> 17891<p>All other formats may or may not have an allowed stall duration on 17892a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> 17893for more details.<wbr/></p> 17894<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about 17895calculating the max frame rate (absent stalls).<wbr/></p> 17896<p>(Keep up to date with 17897<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p> 17898 </td> 17899 </tr> 17900 17901 <tr class="entries_header"> 17902 <th class="th_details" colspan="5">HAL Implementation Details</th> 17903 </tr> 17904 <tr class="entry_cont"> 17905 <td class="entry_details" colspan="5"> 17906 <p>If possible,<wbr/> it is recommended that all non-JPEG formats 17907(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE 17908and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p> 17909 </td> 17910 </tr> 17911 17912 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 17913 <!-- end of entry --> 17914 17915 17916 <tr class="entry" id="static_android.scaler.streamConfigurationMap"> 17917 <td class="entry_name 17918 " rowspan="5"> 17919 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map 17920 </td> 17921 <td class="entry_type"> 17922 <span class="entry_type_name">int32</span> 17923 17924 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span> 17925 17926 <span class="entry_type_synthetic">[synthetic] </span> 17927 17928 <span class="entry_type_hwlevel">[legacy] </span> 17929 17930 17931 17932 17933 </td> <!-- entry_type --> 17934 17935 <td class="entry_description"> 17936 <p>The available stream configurations that this 17937camera device supports; also includes the minimum frame durations 17938and the stall durations for each format/<wbr/>size combination.<wbr/></p> 17939 </td> 17940 17941 <td class="entry_units"> 17942 </td> 17943 17944 <td class="entry_range"> 17945 </td> 17946 17947 <td class="entry_tags"> 17948 </td> 17949 17950 </tr> 17951 <tr class="entries_header"> 17952 <th class="th_details" colspan="5">Details</th> 17953 </tr> 17954 <tr class="entry_cont"> 17955 <td class="entry_details" colspan="5"> 17956 <p>All camera devices will support sensor maximum resolution (defined by 17957<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> 17958<p>For a given use case,<wbr/> the actual maximum supported resolution 17959may be lower than what is listed here,<wbr/> depending on the destination 17960Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> 17961the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) 17962smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) 17963can provide.<wbr/></p> 17964<p>Please reference the documentation for the image data destination to 17965check if it limits the maximum size for image data.<wbr/></p> 17966<p>The following table describes the minimum required output stream 17967configurations based on the hardware level 17968(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p> 17969<table> 17970<thead> 17971<tr> 17972<th align="center">Format</th> 17973<th align="center">Size</th> 17974<th align="center">Hardware Level</th> 17975<th align="center">Notes</th> 17976</tr> 17977</thead> 17978<tbody> 17979<tr> 17980<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17981<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td> 17982<td align="center">Any</td> 17983<td align="center"></td> 17984</tr> 17985<tr> 17986<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17987<td align="center">1920x1080 (1080p)</td> 17988<td align="center">Any</td> 17989<td align="center">if 1080p <= activeArraySize</td> 17990</tr> 17991<tr> 17992<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17993<td align="center">1280x720 (720p)</td> 17994<td align="center">Any</td> 17995<td align="center">if 720p <= activeArraySize</td> 17996</tr> 17997<tr> 17998<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 17999<td align="center">640x480 (480p)</td> 18000<td align="center">Any</td> 18001<td align="center">if 480p <= activeArraySize</td> 18002</tr> 18003<tr> 18004<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td> 18005<td align="center">320x240 (240p)</td> 18006<td align="center">Any</td> 18007<td align="center">if 240p <= activeArraySize</td> 18008</tr> 18009<tr> 18010<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> 18011<td align="center">all output sizes available for JPEG</td> 18012<td align="center">FULL</td> 18013<td align="center"></td> 18014</tr> 18015<tr> 18016<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> 18017<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td> 18018<td align="center">LIMITED</td> 18019<td align="center"></td> 18020</tr> 18021<tr> 18022<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td> 18023<td align="center">same as YUV_<wbr/>420_<wbr/>888</td> 18024<td align="center">Any</td> 18025<td align="center"></td> 18026</tr> 18027</tbody> 18028</table> 18029<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 18030stream configurations on a per-capability basis.<wbr/></p> 18031<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p> 18032<ul> 18033<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones 18034(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution 18035(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/> 18036it does not have to be included in the supported JPEG sizes.<wbr/></li> 18037<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as 18038the dimensions being a multiple of 16.<wbr/> 18039Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/> 18040However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum 18041resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/> 18042additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/> 18043if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect 18044ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be 180453264x2448.<wbr/></li> 18046</ul> 18047 </td> 18048 </tr> 18049 18050 <tr class="entries_header"> 18051 <th class="th_details" colspan="5">HAL Implementation Details</th> 18052 </tr> 18053 <tr class="entry_cont"> 18054 <td class="entry_details" colspan="5"> 18055 <p>Do not set this property directly 18056(it is synthetic and will not be available at the HAL layer); 18057set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p> 18058<p>Not all output formats may be supported in a configuration with 18059an input stream of a particular format.<wbr/> For more details,<wbr/> see 18060<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p> 18061<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter 18062of sensor maximum resolution for JPEG formats (regardless of hardware 18063level).<wbr/></p> 18064<p>(The following is a rewording of the above required table):</p> 18065<p>The HAL must include sensor maximum resolution (defined by 18066<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> 18067<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/> 18068the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed 18069here as output streams.<wbr/></p> 18070<p>It must also include each below resolution if it is smaller than or 18071equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG 18072formats),<wbr/> as output streams:</p> 18073<ul> 18074<li>240p (320 x 240)</li> 18075<li>480p (640 x 480)</li> 18076<li>720p (1280 x 720)</li> 18077<li>1080p (1920 x 1080)</li> 18078</ul> 18079<p>For LIMITED capability devices 18080(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> 18081the HAL only has to list up to the maximum video size 18082supported by the device.<wbr/></p> 18083<p>Regardless of hardware level,<wbr/> every output resolution available for 18084YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p> 18085<p>This supercedes the following fields,<wbr/> which are now deprecated:</p> 18086<ul> 18087<li>availableFormats</li> 18088<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li> 18089</ul> 18090 </td> 18091 </tr> 18092 18093 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18094 <!-- end of entry --> 18095 18096 18097 <tr class="entry" id="static_android.scaler.croppingType"> 18098 <td class="entry_name 18099 " rowspan="3"> 18100 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type 18101 </td> 18102 <td class="entry_type"> 18103 <span class="entry_type_name entry_type_name_enum">byte</span> 18104 18105 <span class="entry_type_visibility"> [public]</span> 18106 18107 18108 <span class="entry_type_hwlevel">[legacy] </span> 18109 18110 18111 18112 <ul class="entry_type_enum"> 18113 <li> 18114 <span class="entry_type_enum_name">CENTER_ONLY</span> 18115 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span> 18116 </li> 18117 <li> 18118 <span class="entry_type_enum_name">FREEFORM</span> 18119 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span> 18120 </li> 18121 </ul> 18122 18123 </td> <!-- entry_type --> 18124 18125 <td class="entry_description"> 18126 <p>The crop type that this camera device supports.<wbr/></p> 18127 </td> 18128 18129 <td class="entry_units"> 18130 </td> 18131 18132 <td class="entry_range"> 18133 </td> 18134 18135 <td class="entry_tags"> 18136 </td> 18137 18138 </tr> 18139 <tr class="entries_header"> 18140 <th class="th_details" colspan="5">Details</th> 18141 </tr> 18142 <tr class="entry_cont"> 18143 <td class="entry_details" colspan="5"> 18144 <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 18145device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the 18146crop 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>) 18147and keep the crop region width and height unchanged.<wbr/> The camera device will return the 18148final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p> 18149<p>Camera devices that support FREEFORM cropping will support any crop region that 18150is inside of the active array.<wbr/> The camera device will apply the same crop region and 18151return 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> 18152<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p> 18153 </td> 18154 </tr> 18155 18156 18157 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18158 <!-- end of entry --> 18159 18160 18161 18162 <!-- end of kind --> 18163 </tbody> 18164 <tr><td colspan="6" class="kind">dynamic</td></tr> 18165 18166 <thead class="entries_header"> 18167 <tr> 18168 <th class="th_name">Property Name</th> 18169 <th class="th_type">Type</th> 18170 <th class="th_description">Description</th> 18171 <th class="th_units">Units</th> 18172 <th class="th_range">Range</th> 18173 <th class="th_tags">Tags</th> 18174 </tr> 18175 </thead> 18176 18177 <tbody> 18178 18179 18180 18181 18182 18183 18184 18185 18186 18187 18188 <tr class="entry" id="dynamic_android.scaler.cropRegion"> 18189 <td class="entry_name 18190 " rowspan="5"> 18191 android.<wbr/>scaler.<wbr/>crop<wbr/>Region 18192 </td> 18193 <td class="entry_type"> 18194 <span class="entry_type_name">int32</span> 18195 <span class="entry_type_container">x</span> 18196 18197 <span class="entry_type_array"> 18198 4 18199 </span> 18200 <span class="entry_type_visibility"> [public as rectangle]</span> 18201 18202 18203 <span class="entry_type_hwlevel">[legacy] </span> 18204 18205 18206 18207 18208 </td> <!-- entry_type --> 18209 18210 <td class="entry_description"> 18211 <p>The desired region of the sensor to read out for this capture.<wbr/></p> 18212 </td> 18213 18214 <td class="entry_units"> 18215 Pixel coordinates relative to 18216 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 18217 </td> 18218 18219 <td class="entry_range"> 18220 </td> 18221 18222 <td class="entry_tags"> 18223 <ul class="entry_tags"> 18224 <li><a href="#tag_BC">BC</a></li> 18225 </ul> 18226 </td> 18227 18228 </tr> 18229 <tr class="entries_header"> 18230 <th class="th_details" colspan="5">Details</th> 18231 </tr> 18232 <tr class="entry_cont"> 18233 <td class="entry_details" colspan="5"> 18234 <p>This control can be used to implement digital zoom.<wbr/></p> 18235<p>The crop region coordinate system is based off 18236<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 18237top-left corner of the sensor active array.<wbr/></p> 18238<p>Output streams use this rectangle to produce their output,<wbr/> 18239cropping to a smaller region if necessary to maintain the 18240stream's aspect ratio,<wbr/> then scaling the sensor input to 18241match the output's configured resolution.<wbr/></p> 18242<p>The crop region is applied after the RAW to other color 18243space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams 18244(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not 18245croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p> 18246<p>For non-raw streams,<wbr/> any additional per-stream cropping will 18247be done to maximize the final pixel area of the stream.<wbr/></p> 18248<p>For example,<wbr/> if the crop region is set to a 4:3 aspect 18249ratio,<wbr/> then 4:3 streams will use the exact crop 18250region.<wbr/> 16:9 streams will further crop vertically 18251(letterbox).<wbr/></p> 18252<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 18253outputs will crop horizontally (pillarbox),<wbr/> and 16:9 18254streams will match exactly.<wbr/> These additional crops will 18255be centered within the crop region.<wbr/></p> 18256<p>The width and height of the crop region cannot 18257be set to be smaller than 18258<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 18259<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> 18260<p>The camera device may adjust the crop region to account 18261for rounding and other hardware requirements; the final 18262crop region used will be included in the output capture 18263result.<wbr/></p> 18264 </td> 18265 </tr> 18266 18267 <tr class="entries_header"> 18268 <th class="th_details" colspan="5">HAL Implementation Details</th> 18269 </tr> 18270 <tr class="entry_cont"> 18271 <td class="entry_details" colspan="5"> 18272 <p>The output streams must maintain square pixels at all 18273times,<wbr/> no matter what the relative aspect ratios of the 18274crop region and the stream are.<wbr/> Negative values for 18275corner are allowed for raw output if full pixel array is 18276larger than active pixel array.<wbr/> Width and height may be 18277rounded to nearest larger supportable width,<wbr/> especially 18278for raw output,<wbr/> where only a few fixed scales may be 18279possible.<wbr/></p> 18280<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller 18281size than active array size,<wbr/> the HAL need follow below cropping rules:</p> 18282<ul> 18283<li> 18284<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active 18285array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from 18286<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> 18287<ol> 18288<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor 18289cropped pixel area by (tx,<wbr/> ty),<wbr/> 18290where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code> 18291and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The 18292(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the 18293<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li> 18294<li>Scale the width and height of requested cropRegion with scaling factor of 18295sensor<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 18296respectively.<wbr/> 18297Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image 18298with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need 18299follow the general cropping rule for this new cropRegion and effective active 18300array size.<wbr/></li> 18301</ol> 18302</li> 18303<li> 18304<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/> 18305The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/> 18306The reported cropRegion may be slightly different with the requested cropRegion since 18307the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other 18308hardware limitations.<wbr/></p> 18309</li> 18310</ul> 18311<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> 18312 </td> 18313 </tr> 18314 18315 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18316 <!-- end of entry --> 18317 18318 18319 18320 <!-- end of kind --> 18321 </tbody> 18322 18323 <!-- end of section --> 18324 <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr> 18325 18326 18327 <tr><td colspan="6" class="kind">controls</td></tr> 18328 18329 <thead class="entries_header"> 18330 <tr> 18331 <th class="th_name">Property Name</th> 18332 <th class="th_type">Type</th> 18333 <th class="th_description">Description</th> 18334 <th class="th_units">Units</th> 18335 <th class="th_range">Range</th> 18336 <th class="th_tags">Tags</th> 18337 </tr> 18338 </thead> 18339 18340 <tbody> 18341 18342 18343 18344 18345 18346 18347 18348 18349 18350 18351 <tr class="entry" id="controls_android.sensor.exposureTime"> 18352 <td class="entry_name 18353 " rowspan="3"> 18354 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 18355 </td> 18356 <td class="entry_type"> 18357 <span class="entry_type_name">int64</span> 18358 18359 <span class="entry_type_visibility"> [public]</span> 18360 18361 18362 <span class="entry_type_hwlevel">[full] </span> 18363 18364 18365 18366 18367 </td> <!-- entry_type --> 18368 18369 <td class="entry_description"> 18370 <p>Duration each pixel is exposed to 18371light.<wbr/></p> 18372 </td> 18373 18374 <td class="entry_units"> 18375 Nanoseconds 18376 </td> 18377 18378 <td class="entry_range"> 18379 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 18380 </td> 18381 18382 <td class="entry_tags"> 18383 <ul class="entry_tags"> 18384 <li><a href="#tag_V1">V1</a></li> 18385 </ul> 18386 </td> 18387 18388 </tr> 18389 <tr class="entries_header"> 18390 <th class="th_details" colspan="5">Details</th> 18391 </tr> 18392 <tr class="entry_cont"> 18393 <td class="entry_details" colspan="5"> 18394 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 18395duration exposed to the nearest possible value (rather than expose longer).<wbr/> 18396The final exposure time used will be available in the output capture result.<wbr/></p> 18397<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 18398OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 18399 </td> 18400 </tr> 18401 18402 18403 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18404 <!-- end of entry --> 18405 18406 18407 <tr class="entry" id="controls_android.sensor.frameDuration"> 18408 <td class="entry_name 18409 " rowspan="5"> 18410 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 18411 </td> 18412 <td class="entry_type"> 18413 <span class="entry_type_name">int64</span> 18414 18415 <span class="entry_type_visibility"> [public]</span> 18416 18417 18418 <span class="entry_type_hwlevel">[full] </span> 18419 18420 18421 18422 18423 </td> <!-- entry_type --> 18424 18425 <td class="entry_description"> 18426 <p>Duration from start of frame exposure to 18427start of next frame exposure.<wbr/></p> 18428 </td> 18429 18430 <td class="entry_units"> 18431 Nanoseconds 18432 </td> 18433 18434 <td class="entry_range"> 18435 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 18436<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration 18437is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 18438 </td> 18439 18440 <td class="entry_tags"> 18441 <ul class="entry_tags"> 18442 <li><a href="#tag_V1">V1</a></li> 18443 </ul> 18444 </td> 18445 18446 </tr> 18447 <tr class="entries_header"> 18448 <th class="th_details" colspan="5">Details</th> 18449 </tr> 18450 <tr class="entry_cont"> 18451 <td class="entry_details" colspan="5"> 18452 <p>The maximum frame rate that can be supported by a camera subsystem is 18453a function of many factors:</p> 18454<ul> 18455<li>Requested resolutions of output image streams</li> 18456<li>Availability of binning /<wbr/> skipping modes on the imager</li> 18457<li>The bandwidth of the imager interface</li> 18458<li>The bandwidth of the various ISP processing blocks</li> 18459</ul> 18460<p>Since these factors can vary greatly between different ISPs and 18461sensors,<wbr/> the camera abstraction tries to represent the bandwidth 18462restrictions with as simple a model as possible.<wbr/></p> 18463<p>The model presented has the following characteristics:</p> 18464<ul> 18465<li>The image sensor is always configured to output the smallest 18466resolution possible given the application's requested output stream 18467sizes.<wbr/> The smallest resolution is defined as being at least as large 18468as the largest requested output stream size; the camera pipeline must 18469never digitally upsample sensor data when the crop region covers the 18470whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 18471resolutions are configured,<wbr/> the sensor can provide a higher frame 18472rate.<wbr/></li> 18473<li>Since any request may use any or all the currently configured 18474output streams,<wbr/> the sensor and ISP must be configured to support 18475scaling a single capture to all the streams at the same time.<wbr/> This 18476means the camera pipeline must be ready to produce the largest 18477requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 18478frame rate of a given configured stream set is governed only by the 18479largest requested stream resolution.<wbr/></li> 18480<li>Using more than one output stream in a request does not affect the 18481frame duration.<wbr/></li> 18482<li>Certain format-streams may need to do additional background processing 18483before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 18484can run concurrently to the rest of the camera pipeline,<wbr/> but 18485cannot process more than 1 capture at a time.<wbr/></li> 18486</ul> 18487<p>The necessary information for the application,<wbr/> given the model above,<wbr/> 18488is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using 18489<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 18490These are used to determine the maximum frame rate /<wbr/> minimum frame 18491duration that is possible for a given stream configuration.<wbr/></p> 18492<p>Specifically,<wbr/> the application can use the following rules to 18493determine the minimum frame duration it can request from the camera 18494device:</p> 18495<ol> 18496<li>Let the set of currently configured input/<wbr/>output streams 18497be called <code>S</code>.<wbr/></li> 18498<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking 18499it 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> 18500(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be 18501called <code>F</code>.<wbr/></li> 18502<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 18503for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 18504used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 18505</ol> 18506<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> 18507using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> 18508determines the steady state frame rate that the application will get 18509if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of 18510request be called <code>Rsimple</code>.<wbr/></p> 18511<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 18512by a single capture of a new request <code>Rstall</code> (which has at least 18513one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 18514same minimum frame duration this will not cause a frame rate loss 18515if all buffers from the previous <code>Rstall</code> have already been 18516delivered.<wbr/></p> 18517<p>For more details about stalling,<wbr/> see 18518<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p> 18519<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 18520OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 18521 </td> 18522 </tr> 18523 18524 <tr class="entries_header"> 18525 <th class="th_details" colspan="5">HAL Implementation Details</th> 18526 </tr> 18527 <tr class="entry_cont"> 18528 <td class="entry_details" colspan="5"> 18529 <p>For more details about stalling,<wbr/> see 18530<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 18531 </td> 18532 </tr> 18533 18534 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18535 <!-- end of entry --> 18536 18537 18538 <tr class="entry" id="controls_android.sensor.sensitivity"> 18539 <td class="entry_name 18540 " rowspan="5"> 18541 android.<wbr/>sensor.<wbr/>sensitivity 18542 </td> 18543 <td class="entry_type"> 18544 <span class="entry_type_name">int32</span> 18545 18546 <span class="entry_type_visibility"> [public]</span> 18547 18548 18549 <span class="entry_type_hwlevel">[full] </span> 18550 18551 18552 18553 18554 </td> <!-- entry_type --> 18555 18556 <td class="entry_description"> 18557 <p>The amount of gain applied to sensor data 18558before processing.<wbr/></p> 18559 </td> 18560 18561 <td class="entry_units"> 18562 ISO arithmetic units 18563 </td> 18564 18565 <td class="entry_range"> 18566 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 18567 </td> 18568 18569 <td class="entry_tags"> 18570 <ul class="entry_tags"> 18571 <li><a href="#tag_V1">V1</a></li> 18572 </ul> 18573 </td> 18574 18575 </tr> 18576 <tr class="entries_header"> 18577 <th class="th_details" colspan="5">Details</th> 18578 </tr> 18579 <tr class="entry_cont"> 18580 <td class="entry_details" colspan="5"> 18581 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 18582as defined in ISO 12232:2006.<wbr/></p> 18583<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 18584if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 18585is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 18586<p>If the camera device cannot apply the exact sensitivity 18587requested,<wbr/> it will reduce the gain to the nearest supported 18588value.<wbr/> The final sensitivity used will be available in the 18589output capture result.<wbr/></p> 18590<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 18591OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 18592 </td> 18593 </tr> 18594 18595 <tr class="entries_header"> 18596 <th class="th_details" colspan="5">HAL Implementation Details</th> 18597 </tr> 18598 <tr class="entry_cont"> 18599 <td class="entry_details" colspan="5"> 18600 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 18601 </td> 18602 </tr> 18603 18604 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18605 <!-- end of entry --> 18606 18607 18608 <tr class="entry" id="controls_android.sensor.testPatternData"> 18609 <td class="entry_name 18610 " rowspan="5"> 18611 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 18612 </td> 18613 <td class="entry_type"> 18614 <span class="entry_type_name">int32</span> 18615 <span class="entry_type_container">x</span> 18616 18617 <span class="entry_type_array"> 18618 4 18619 </span> 18620 <span class="entry_type_visibility"> [public]</span> 18621 18622 18623 18624 18625 18626 18627 </td> <!-- entry_type --> 18628 18629 <td class="entry_description"> 18630 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 18631when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 18632 </td> 18633 18634 <td class="entry_units"> 18635 </td> 18636 18637 <td class="entry_range"> 18638 </td> 18639 18640 <td class="entry_tags"> 18641 </td> 18642 18643 </tr> 18644 <tr class="entries_header"> 18645 <th class="th_details" colspan="5">Details</th> 18646 </tr> 18647 <tr class="entry_cont"> 18648 <td class="entry_details" colspan="5"> 18649 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 18650The camera device then uses the most significant X bits 18651that correspond to how many bits are in its Bayer raw sensor 18652output.<wbr/></p> 18653<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 1865410 most significant bits from each color channel.<wbr/></p> 18655 </td> 18656 </tr> 18657 18658 <tr class="entries_header"> 18659 <th class="th_details" colspan="5">HAL Implementation Details</th> 18660 </tr> 18661 <tr class="entry_cont"> 18662 <td class="entry_details" colspan="5"> 18663 18664 </td> 18665 </tr> 18666 18667 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18668 <!-- end of entry --> 18669 18670 18671 <tr class="entry" id="controls_android.sensor.testPatternMode"> 18672 <td class="entry_name 18673 " rowspan="5"> 18674 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 18675 </td> 18676 <td class="entry_type"> 18677 <span class="entry_type_name entry_type_name_enum">int32</span> 18678 18679 <span class="entry_type_visibility"> [public]</span> 18680 18681 18682 18683 18684 18685 <ul class="entry_type_enum"> 18686 <li> 18687 <span class="entry_type_enum_name">OFF</span> 18688 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 18689device returns captures from the image sensor.<wbr/></p> 18690<p>This is the default if the key is not set.<wbr/></p></span> 18691 </li> 18692 <li> 18693 <span class="entry_type_enum_name">SOLID_COLOR</span> 18694 <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 18695respective color channel provided in 18696<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 18697<p>For example:</p> 18698<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 18699</code></pre> 18700<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 18701<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 18702</code></pre> 18703<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 18704are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 18705 </li> 18706 <li> 18707 <span class="entry_type_enum_name">COLOR_BARS</span> 18708 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 18709<p>The vertical bars (left-to-right) are as follows:</p> 18710<ul> 18711<li>100% white</li> 18712<li>yellow</li> 18713<li>cyan</li> 18714<li>green</li> 18715<li>magenta</li> 18716<li>red</li> 18717<li>blue</li> 18718<li>black</li> 18719</ul> 18720<p>In general the image would look like the following:</p> 18721<pre><code>W Y C G M R B K 18722W Y C G M R B K 18723W Y C G M R B K 18724W Y C G M R B K 18725W Y C G M R B K 18726.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 18727.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 18728.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 18729 18730(B = Blue,<wbr/> K = Black) 18731</code></pre> 18732<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 18733When this is not possible,<wbr/> the bar size should be rounded 18734down to the nearest integer and the pattern can repeat 18735on the right side.<wbr/></p> 18736<p>Each bar's height must always take up the full sensor 18737pixel array height.<wbr/></p> 18738<p>Each pixel in this test pattern must be set to either 187390% intensity or 100% intensity.<wbr/></p></span> 18740 </li> 18741 <li> 18742 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 18743 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 18744each bar should start at its specified color at the top,<wbr/> 18745and fade to gray at the bottom.<wbr/></p> 18746<p>Furthermore each bar is further subdivided into a left and 18747right half.<wbr/> The left half should have a smooth gradient,<wbr/> 18748and the right half should have a quantized gradient.<wbr/></p> 18749<p>In particular,<wbr/> the right half's should consist of blocks of the 18750same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 18751<p>The least significant bits in the quantized gradient should 18752be copied from the most significant bits of the smooth gradient.<wbr/></p> 18753<p>The height of each bar should always be a multiple of 128.<wbr/> 18754When this is not the case,<wbr/> the pattern should repeat at the bottom 18755of the image.<wbr/></p></span> 18756 </li> 18757 <li> 18758 <span class="entry_type_enum_name">PN9</span> 18759 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 18760generated from a PN9 512-bit sequence (typically implemented 18761in hardware with a linear feedback shift register).<wbr/></p> 18762<p>The generator should be reset at the beginning of each frame,<wbr/> 18763and thus each subsequent raw frame with this test pattern should 18764be exactly the same as the last.<wbr/></p></span> 18765 </li> 18766 <li> 18767 <span class="entry_type_enum_name">CUSTOM1</span> 18768 <span class="entry_type_enum_value">256</span> 18769 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 18770available only on this camera device are at least this numeric 18771value.<wbr/></p> 18772<p>All of the custom test patterns will be static 18773(that is the raw image must not vary from frame to frame).<wbr/></p></span> 18774 </li> 18775 </ul> 18776 18777 </td> <!-- entry_type --> 18778 18779 <td class="entry_description"> 18780 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 18781doing a real exposure from the camera.<wbr/></p> 18782 </td> 18783 18784 <td class="entry_units"> 18785 </td> 18786 18787 <td class="entry_range"> 18788 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 18789 </td> 18790 18791 <td class="entry_tags"> 18792 </td> 18793 18794 </tr> 18795 <tr class="entries_header"> 18796 <th class="th_details" colspan="5">Details</th> 18797 </tr> 18798 <tr class="entry_cont"> 18799 <td class="entry_details" colspan="5"> 18800 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 18801by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 18802work as normal.<wbr/></p> 18803<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 18804occur (and that the test pattern remain unmodified,<wbr/> since the flash 18805would not actually affect it).<wbr/></p> 18806<p>Defaults to OFF.<wbr/></p> 18807 </td> 18808 </tr> 18809 18810 <tr class="entries_header"> 18811 <th class="th_details" colspan="5">HAL Implementation Details</th> 18812 </tr> 18813 <tr class="entry_cont"> 18814 <td class="entry_details" colspan="5"> 18815 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 18816<p>The HAL may choose to substitute test patterns from the sensor 18817with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 18818indistinguishable to the ISP whether the data came from the 18819sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 18820 </td> 18821 </tr> 18822 18823 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18824 <!-- end of entry --> 18825 18826 18827 18828 <!-- end of kind --> 18829 </tbody> 18830 <tr><td colspan="6" class="kind">static</td></tr> 18831 18832 <thead class="entries_header"> 18833 <tr> 18834 <th class="th_name">Property Name</th> 18835 <th class="th_type">Type</th> 18836 <th class="th_description">Description</th> 18837 <th class="th_units">Units</th> 18838 <th class="th_range">Range</th> 18839 <th class="th_tags">Tags</th> 18840 </tr> 18841 </thead> 18842 18843 <tbody> 18844 18845 18846 18847 18848 18849 18850 18851 18852 18853 18854 18855 18856 <tr class="entry" id="static_android.sensor.info.activeArraySize"> 18857 <td class="entry_name 18858 " rowspan="5"> 18859 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size 18860 </td> 18861 <td class="entry_type"> 18862 <span class="entry_type_name">int32</span> 18863 <span class="entry_type_container">x</span> 18864 18865 <span class="entry_type_array"> 18866 4 18867 </span> 18868 <span class="entry_type_visibility"> [public as rectangle]</span> 18869 18870 18871 <span class="entry_type_hwlevel">[legacy] </span> 18872 18873 18874 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 18875 18876 18877 </td> <!-- entry_type --> 18878 18879 <td class="entry_description"> 18880 <p>The area of the image sensor which corresponds to active pixels after any geometric 18881distortion correction has been applied.<wbr/></p> 18882 </td> 18883 18884 <td class="entry_units"> 18885 Pixel coordinates on the image sensor 18886 </td> 18887 18888 <td class="entry_range"> 18889 </td> 18890 18891 <td class="entry_tags"> 18892 <ul class="entry_tags"> 18893 <li><a href="#tag_RAW">RAW</a></li> 18894 </ul> 18895 </td> 18896 18897 </tr> 18898 <tr class="entries_header"> 18899 <th class="th_details" colspan="5">Details</th> 18900 </tr> 18901 <tr class="entry_cont"> 18902 <td class="entry_details" colspan="5"> 18903 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 18904the region that actually receives light from the scene) after any geometric correction 18905has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the 18906image output formats aside from the raw formats.<wbr/></p> 18907<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 18908the full pixel array,<wbr/> and the size of the full pixel array is given by 18909<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 18910<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including 18911<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 18912this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p> 18913<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may 18914include black calibration pixels or other inactive regions,<wbr/> and geometric correction 18915resulting in scaling or cropping may have been applied.<wbr/></p> 18916 </td> 18917 </tr> 18918 18919 <tr class="entries_header"> 18920 <th class="th_details" colspan="5">HAL Implementation Details</th> 18921 </tr> 18922 <tr class="entry_cont"> 18923 <td class="entry_details" colspan="5"> 18924 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 18925>= <code>(0,<wbr/>0)</code>.<wbr/> 18926The <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> 18927 </td> 18928 </tr> 18929 18930 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18931 <!-- end of entry --> 18932 18933 18934 <tr class="entry" id="static_android.sensor.info.sensitivityRange"> 18935 <td class="entry_name 18936 " rowspan="3"> 18937 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range 18938 </td> 18939 <td class="entry_type"> 18940 <span class="entry_type_name">int32</span> 18941 <span class="entry_type_container">x</span> 18942 18943 <span class="entry_type_array"> 18944 2 18945 </span> 18946 <span class="entry_type_visibility"> [public as rangeInt]</span> 18947 18948 18949 <span class="entry_type_hwlevel">[full] </span> 18950 18951 18952 <div class="entry_type_notes">Range of supported sensitivities</div> 18953 18954 18955 </td> <!-- entry_type --> 18956 18957 <td class="entry_description"> 18958 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this 18959camera device.<wbr/></p> 18960 </td> 18961 18962 <td class="entry_units"> 18963 </td> 18964 18965 <td class="entry_range"> 18966 <p>Min <= 100,<wbr/> Max >= 800</p> 18967 </td> 18968 18969 <td class="entry_tags"> 18970 <ul class="entry_tags"> 18971 <li><a href="#tag_BC">BC</a></li> 18972 <li><a href="#tag_V1">V1</a></li> 18973 </ul> 18974 </td> 18975 18976 </tr> 18977 <tr class="entries_header"> 18978 <th class="th_details" colspan="5">Details</th> 18979 </tr> 18980 <tr class="entry_cont"> 18981 <td class="entry_details" colspan="5"> 18982 <p>The values are the standard ISO sensitivity values,<wbr/> 18983as defined in ISO 12232:2006.<wbr/></p> 18984 </td> 18985 </tr> 18986 18987 18988 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 18989 <!-- end of entry --> 18990 18991 18992 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement"> 18993 <td class="entry_name 18994 " rowspan="1"> 18995 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement 18996 </td> 18997 <td class="entry_type"> 18998 <span class="entry_type_name entry_type_name_enum">byte</span> 18999 19000 <span class="entry_type_visibility"> [public]</span> 19001 19002 19003 <span class="entry_type_hwlevel">[full] </span> 19004 19005 19006 19007 <ul class="entry_type_enum"> 19008 <li> 19009 <span class="entry_type_enum_name">RGGB</span> 19010 </li> 19011 <li> 19012 <span class="entry_type_enum_name">GRBG</span> 19013 </li> 19014 <li> 19015 <span class="entry_type_enum_name">GBRG</span> 19016 </li> 19017 <li> 19018 <span class="entry_type_enum_name">BGGR</span> 19019 </li> 19020 <li> 19021 <span class="entry_type_enum_name">RGB</span> 19022 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit 19023values for each pixel,<wbr/> instead of just 1 16-bit value 19024per pixel.<wbr/></p></span> 19025 </li> 19026 </ul> 19027 19028 </td> <!-- entry_type --> 19029 19030 <td class="entry_description"> 19031 <p>The arrangement of color filters on sensor; 19032represents the colors in the top-left 2x2 section of 19033the sensor,<wbr/> in reading order.<wbr/></p> 19034 </td> 19035 19036 <td class="entry_units"> 19037 </td> 19038 19039 <td class="entry_range"> 19040 </td> 19041 19042 <td class="entry_tags"> 19043 <ul class="entry_tags"> 19044 <li><a href="#tag_RAW">RAW</a></li> 19045 </ul> 19046 </td> 19047 19048 </tr> 19049 19050 19051 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19052 <!-- end of entry --> 19053 19054 19055 <tr class="entry" id="static_android.sensor.info.exposureTimeRange"> 19056 <td class="entry_name 19057 " rowspan="3"> 19058 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range 19059 </td> 19060 <td class="entry_type"> 19061 <span class="entry_type_name">int64</span> 19062 <span class="entry_type_container">x</span> 19063 19064 <span class="entry_type_array"> 19065 2 19066 </span> 19067 <span class="entry_type_visibility"> [public as rangeLong]</span> 19068 19069 19070 <span class="entry_type_hwlevel">[full] </span> 19071 19072 19073 <div class="entry_type_notes">nanoseconds</div> 19074 19075 19076 </td> <!-- entry_type --> 19077 19078 <td class="entry_description"> 19079 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported 19080by this camera device.<wbr/></p> 19081 </td> 19082 19083 <td class="entry_units"> 19084 Nanoseconds 19085 </td> 19086 19087 <td class="entry_range"> 19088 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL 19089capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 19090the maximum exposure time will be greater than 100ms.<wbr/></p> 19091 </td> 19092 19093 <td class="entry_tags"> 19094 <ul class="entry_tags"> 19095 <li><a href="#tag_V1">V1</a></li> 19096 </ul> 19097 </td> 19098 19099 </tr> 19100 19101 <tr class="entries_header"> 19102 <th class="th_details" colspan="5">HAL Implementation Details</th> 19103 </tr> 19104 <tr class="entry_cont"> 19105 <td class="entry_details" colspan="5"> 19106 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 19107The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least 19108100ms.<wbr/></p> 19109 </td> 19110 </tr> 19111 19112 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19113 <!-- end of entry --> 19114 19115 19116 <tr class="entry" id="static_android.sensor.info.maxFrameDuration"> 19117 <td class="entry_name 19118 " rowspan="5"> 19119 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration 19120 </td> 19121 <td class="entry_type"> 19122 <span class="entry_type_name">int64</span> 19123 19124 <span class="entry_type_visibility"> [public]</span> 19125 19126 19127 <span class="entry_type_hwlevel">[full] </span> 19128 19129 19130 19131 19132 </td> <!-- entry_type --> 19133 19134 <td class="entry_description"> 19135 <p>The maximum possible frame duration (minimum frame rate) for 19136<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p> 19137 </td> 19138 19139 <td class="entry_units"> 19140 Nanoseconds 19141 </td> 19142 19143 <td class="entry_range"> 19144 <p>For FULL capability devices 19145(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p> 19146 </td> 19147 19148 <td class="entry_tags"> 19149 <ul class="entry_tags"> 19150 <li><a href="#tag_V1">V1</a></li> 19151 </ul> 19152 </td> 19153 19154 </tr> 19155 <tr class="entries_header"> 19156 <th class="th_details" colspan="5">Details</th> 19157 </tr> 19158 <tr class="entry_cont"> 19159 <td class="entry_details" colspan="5"> 19160 <p>Attempting to use frame durations beyond the maximum will result in the frame 19161duration being clipped to the maximum.<wbr/> See that control for a full definition of frame 19162durations.<wbr/></p> 19163<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a> 19164for the minimum frame duration values.<wbr/></p> 19165 </td> 19166 </tr> 19167 19168 <tr class="entries_header"> 19169 <th class="th_details" colspan="5">HAL Implementation Details</th> 19170 </tr> 19171 <tr class="entry_cont"> 19172 <td class="entry_details" colspan="5"> 19173 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> 19174The maximum of the range SHOULD be at least 191751 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p> 19176<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or 19177equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max 19178value (since exposure time overrides frame duration).<wbr/></p> 19179<p>Available minimum frame durations for JPEG must be no greater 19180than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED 19181minimum frame durations (for that respective size).<wbr/></p> 19182<p>Since JPEG processing is considered offline and can take longer than 19183a single uncompressed capture,<wbr/> refer to 19184<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> 19185for details about encoding this scenario.<wbr/></p> 19186 </td> 19187 </tr> 19188 19189 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19190 <!-- end of entry --> 19191 19192 19193 <tr class="entry" id="static_android.sensor.info.physicalSize"> 19194 <td class="entry_name 19195 " rowspan="5"> 19196 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size 19197 </td> 19198 <td class="entry_type"> 19199 <span class="entry_type_name">float</span> 19200 <span class="entry_type_container">x</span> 19201 19202 <span class="entry_type_array"> 19203 2 19204 </span> 19205 <span class="entry_type_visibility"> [public as sizeF]</span> 19206 19207 19208 <span class="entry_type_hwlevel">[legacy] </span> 19209 19210 19211 <div class="entry_type_notes">width x height</div> 19212 19213 19214 </td> <!-- entry_type --> 19215 19216 <td class="entry_description"> 19217 <p>The physical dimensions of the full pixel 19218array.<wbr/></p> 19219 </td> 19220 19221 <td class="entry_units"> 19222 Millimeters 19223 </td> 19224 19225 <td class="entry_range"> 19226 </td> 19227 19228 <td class="entry_tags"> 19229 <ul class="entry_tags"> 19230 <li><a href="#tag_V1">V1</a></li> 19231 <li><a href="#tag_BC">BC</a></li> 19232 </ul> 19233 </td> 19234 19235 </tr> 19236 <tr class="entries_header"> 19237 <th class="th_details" colspan="5">Details</th> 19238 </tr> 19239 <tr class="entry_cont"> 19240 <td class="entry_details" colspan="5"> 19241 <p>This is the physical size of the sensor pixel 19242array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19243 </td> 19244 </tr> 19245 19246 <tr class="entries_header"> 19247 <th class="th_details" colspan="5">HAL Implementation Details</th> 19248 </tr> 19249 <tr class="entry_cont"> 19250 <td class="entry_details" colspan="5"> 19251 <p>Needed for FOV calculation for old API</p> 19252 </td> 19253 </tr> 19254 19255 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19256 <!-- end of entry --> 19257 19258 19259 <tr class="entry" id="static_android.sensor.info.pixelArraySize"> 19260 <td class="entry_name 19261 " rowspan="3"> 19262 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size 19263 </td> 19264 <td class="entry_type"> 19265 <span class="entry_type_name">int32</span> 19266 <span class="entry_type_container">x</span> 19267 19268 <span class="entry_type_array"> 19269 2 19270 </span> 19271 <span class="entry_type_visibility"> [public as size]</span> 19272 19273 19274 <span class="entry_type_hwlevel">[legacy] </span> 19275 19276 19277 19278 19279 </td> <!-- entry_type --> 19280 19281 <td class="entry_description"> 19282 <p>Dimensions of the full pixel array,<wbr/> possibly 19283including black calibration pixels.<wbr/></p> 19284 </td> 19285 19286 <td class="entry_units"> 19287 Pixels 19288 </td> 19289 19290 <td class="entry_range"> 19291 </td> 19292 19293 <td class="entry_tags"> 19294 <ul class="entry_tags"> 19295 <li><a href="#tag_RAW">RAW</a></li> 19296 <li><a href="#tag_BC">BC</a></li> 19297 </ul> 19298 </td> 19299 19300 </tr> 19301 <tr class="entries_header"> 19302 <th class="th_details" colspan="5">Details</th> 19303 </tr> 19304 <tr class="entry_cont"> 19305 <td class="entry_details" colspan="5"> 19306 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers 19307<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 19308the raw buffers produced by this sensor.<wbr/></p> 19309<p>If a camera device supports raw sensor formats,<wbr/> either this or 19310<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 19311output formats listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> (this depends on 19312whether or not the image sensor returns buffers containing pixels that are not 19313part of the active array region for blacklevel calibration or other purposes).<wbr/></p> 19314<p>Some parts of the full pixel array may not receive light from the scene,<wbr/> 19315or 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 19316defines the rectangle of active pixels that will be included in processed image 19317formats.<wbr/></p> 19318 </td> 19319 </tr> 19320 19321 19322 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19323 <!-- end of entry --> 19324 19325 19326 <tr class="entry" id="static_android.sensor.info.whiteLevel"> 19327 <td class="entry_name 19328 " rowspan="5"> 19329 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level 19330 </td> 19331 <td class="entry_type"> 19332 <span class="entry_type_name">int32</span> 19333 19334 <span class="entry_type_visibility"> [public]</span> 19335 19336 19337 19338 19339 19340 19341 </td> <!-- entry_type --> 19342 19343 <td class="entry_description"> 19344 <p>Maximum raw value output by sensor.<wbr/></p> 19345 </td> 19346 19347 <td class="entry_units"> 19348 </td> 19349 19350 <td class="entry_range"> 19351 <p>> 255 (8-bit output)</p> 19352 </td> 19353 19354 <td class="entry_tags"> 19355 <ul class="entry_tags"> 19356 <li><a href="#tag_RAW">RAW</a></li> 19357 </ul> 19358 </td> 19359 19360 </tr> 19361 <tr class="entries_header"> 19362 <th class="th_details" colspan="5">Details</th> 19363 </tr> 19364 <tr class="entry_cont"> 19365 <td class="entry_details" colspan="5"> 19366 <p>This specifies the fully-saturated encoding level for the raw 19367sample values from the sensor.<wbr/> This is typically caused by the 19368sensor becoming highly non-linear or clipping.<wbr/> The minimum for 19369each channel is specified by the offset in the 19370<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p> 19371<p>The white level is typically determined either by sensor bit depth 19372(8-14 bits is expected),<wbr/> or by the point where the sensor response 19373becomes too non-linear to be useful.<wbr/> The default value for this is 19374maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p> 19375<p>The white level values of captured images may vary for different 19376capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key 19377represents a coarse approximation for such case.<wbr/> It is recommended 19378to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported 19379by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p> 19380 </td> 19381 </tr> 19382 19383 <tr class="entries_header"> 19384 <th class="th_details" colspan="5">HAL Implementation Details</th> 19385 </tr> 19386 <tr class="entry_cont"> 19387 <td class="entry_details" colspan="5"> 19388 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 19389so the value for linear sensors should not be significantly lower 19390than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 19391 </td> 19392 </tr> 19393 19394 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19395 <!-- end of entry --> 19396 19397 19398 <tr class="entry" id="static_android.sensor.info.timestampSource"> 19399 <td class="entry_name 19400 " rowspan="5"> 19401 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source 19402 </td> 19403 <td class="entry_type"> 19404 <span class="entry_type_name entry_type_name_enum">byte</span> 19405 19406 <span class="entry_type_visibility"> [public]</span> 19407 19408 19409 <span class="entry_type_hwlevel">[legacy] </span> 19410 19411 19412 19413 <ul class="entry_type_enum"> 19414 <li> 19415 <span class="entry_type_enum_name">UNKNOWN</span> 19416 <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/> 19417but can not be compared to timestamps from other subsystems 19418(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different 19419camera devices in the same system.<wbr/> Timestamps between streams and results for 19420a single camera instance are comparable,<wbr/> and the timestamps for all buffers 19421and the result metadata generated by a single capture are identical.<wbr/></p></span> 19422 </li> 19423 <li> 19424 <span class="entry_type_enum_name">REALTIME</span> 19425 <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 19426<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/> 19427and they can be compared to other timestamps using that base.<wbr/></p></span> 19428 </li> 19429 </ul> 19430 19431 </td> <!-- entry_type --> 19432 19433 <td class="entry_description"> 19434 <p>The time base source for sensor capture start timestamps.<wbr/></p> 19435 </td> 19436 19437 <td class="entry_units"> 19438 </td> 19439 19440 <td class="entry_range"> 19441 </td> 19442 19443 <td class="entry_tags"> 19444 <ul class="entry_tags"> 19445 <li><a href="#tag_V1">V1</a></li> 19446 </ul> 19447 </td> 19448 19449 </tr> 19450 <tr class="entries_header"> 19451 <th class="th_details" colspan="5">Details</th> 19452 </tr> 19453 <tr class="entry_cont"> 19454 <td class="entry_details" colspan="5"> 19455 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but 19456may not based on a time source that can be compared to other system time sources.<wbr/></p> 19457<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they 19458can be compared against other system time sources/<wbr/>timestamps.<wbr/></p> 19459 </td> 19460 </tr> 19461 19462 <tr class="entries_header"> 19463 <th class="th_details" colspan="5">HAL Implementation Details</th> 19464 </tr> 19465 <tr class="entry_cont"> 19466 <td class="entry_details" colspan="5"> 19467 <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp 19468source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera 19469framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See 19470system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and 19471SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video 19472recording might suffer unexpected behavior.<wbr/></p> 19473<p>Also,<wbr/> camera devices implements REALTIME must pass the ITS sensor fusion test which 19474tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p> 19475 </td> 19476 </tr> 19477 19478 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19479 <!-- end of entry --> 19480 19481 19482 <tr class="entry" id="static_android.sensor.info.lensShadingApplied"> 19483 <td class="entry_name 19484 " rowspan="3"> 19485 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied 19486 </td> 19487 <td class="entry_type"> 19488 <span class="entry_type_name entry_type_name_enum">byte</span> 19489 19490 <span class="entry_type_visibility"> [public as boolean]</span> 19491 19492 19493 19494 19495 19496 <ul class="entry_type_enum"> 19497 <li> 19498 <span class="entry_type_enum_name">FALSE</span> 19499 </li> 19500 <li> 19501 <span class="entry_type_enum_name">TRUE</span> 19502 </li> 19503 </ul> 19504 19505 </td> <!-- entry_type --> 19506 19507 <td class="entry_description"> 19508 <p>Whether the RAW images output from this camera device are subject to 19509lens shading correction.<wbr/></p> 19510 </td> 19511 19512 <td class="entry_units"> 19513 </td> 19514 19515 <td class="entry_range"> 19516 </td> 19517 19518 <td class="entry_tags"> 19519 </td> 19520 19521 </tr> 19522 <tr class="entries_header"> 19523 <th class="th_details" colspan="5">Details</th> 19524 </tr> 19525 <tr class="entry_cont"> 19526 <td class="entry_details" colspan="5"> 19527 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will 19528have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will 19529not be adjusted for lens shading correction.<wbr/> 19530See <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> 19531<p>This key will be <code>null</code> for all devices do not report this information.<wbr/> 19532Devices with RAW capability will always report this information in this key.<wbr/></p> 19533 </td> 19534 </tr> 19535 19536 19537 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19538 <!-- end of entry --> 19539 19540 19541 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize"> 19542 <td class="entry_name 19543 " rowspan="5"> 19544 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size 19545 </td> 19546 <td class="entry_type"> 19547 <span class="entry_type_name">int32</span> 19548 <span class="entry_type_container">x</span> 19549 19550 <span class="entry_type_array"> 19551 4 19552 </span> 19553 <span class="entry_type_visibility"> [public as rectangle]</span> 19554 19555 19556 <span class="entry_type_hwlevel">[legacy] </span> 19557 19558 19559 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> 19560 19561 19562 </td> <!-- entry_type --> 19563 19564 <td class="entry_description"> 19565 <p>The area of the image sensor which corresponds to active pixels prior to the 19566application of any geometric distortion correction.<wbr/></p> 19567 </td> 19568 19569 <td class="entry_units"> 19570 Pixel coordinates on the image sensor 19571 </td> 19572 19573 <td class="entry_range"> 19574 </td> 19575 19576 <td class="entry_tags"> 19577 <ul class="entry_tags"> 19578 <li><a href="#tag_RAW">RAW</a></li> 19579 </ul> 19580 </td> 19581 19582 </tr> 19583 <tr class="entries_header"> 19584 <th class="th_details" colspan="5">Details</th> 19585 </tr> 19586 <tr class="entry_cont"> 19587 <td class="entry_details" colspan="5"> 19588 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/> 19589the region that actually receives light from the scene) before any geometric correction 19590has been applied,<wbr/> and should be treated as the active region rectangle for any of the 19591raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading 19592correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as 19593the origin,<wbr/> (0,<wbr/>0).<wbr/></p> 19594<p>The size of this region determines the maximum field of view and the maximum number of 19595pixels that an image from this sensor can contain,<wbr/> prior to the application of 19596geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a 19597post-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> 19598field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image 19599can be calculated by applying the geometric distortion correction fields to this 19600rectangle,<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> 19601<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the 19602dimensions 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/> 19603(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in 19604<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p> 19605<ol> 19606<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in 19607<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 19608to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li> 19609<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/> 19610(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw 19611buffers is defined relative to the top,<wbr/> left of the 19612<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> 19613<li>If the resulting corrected pixel coordinate is within the region given in 19614<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 19615processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/> 19616when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li> 19617</ol> 19618<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> 19619is (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/> 19620<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 19621correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in 19622pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer 19623with 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) 19624relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in 19625<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19626<p>The currently supported fields that correct for geometric distortion are:</p> 19627<ol> 19628<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li> 19629</ol> 19630<p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same 19631as the post-distortion-corrected rectangle given in 19632<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19633<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of 19634the full pixel array,<wbr/> and the size of the full pixel array is given by 19635<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19636<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the 19637full array may include black calibration pixels or other inactive regions.<wbr/></p> 19638 </td> 19639 </tr> 19640 19641 <tr class="entries_header"> 19642 <th class="th_details" colspan="5">HAL Implementation Details</th> 19643 </tr> 19644 <tr class="entry_cont"> 19645 <td class="entry_details" colspan="5"> 19646 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be 19647>= <code>(0,<wbr/>0)</code>.<wbr/> 19648The <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> 19649<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is 19650the same as the post-correction active array region given in 19651<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 19652 </td> 19653 </tr> 19654 19655 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19656 <!-- end of entry --> 19657 19658 19659 19660 19661 19662 <tr class="entry" id="static_android.sensor.referenceIlluminant1"> 19663 <td class="entry_name 19664 " rowspan="5"> 19665 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1 19666 </td> 19667 <td class="entry_type"> 19668 <span class="entry_type_name entry_type_name_enum">byte</span> 19669 19670 <span class="entry_type_visibility"> [public]</span> 19671 19672 19673 19674 19675 19676 <ul class="entry_type_enum"> 19677 <li> 19678 <span class="entry_type_enum_name">DAYLIGHT</span> 19679 <span class="entry_type_enum_value">1</span> 19680 </li> 19681 <li> 19682 <span class="entry_type_enum_name">FLUORESCENT</span> 19683 <span class="entry_type_enum_value">2</span> 19684 </li> 19685 <li> 19686 <span class="entry_type_enum_name">TUNGSTEN</span> 19687 <span class="entry_type_enum_value">3</span> 19688 <span class="entry_type_enum_notes"><p>Incandescent light</p></span> 19689 </li> 19690 <li> 19691 <span class="entry_type_enum_name">FLASH</span> 19692 <span class="entry_type_enum_value">4</span> 19693 </li> 19694 <li> 19695 <span class="entry_type_enum_name">FINE_WEATHER</span> 19696 <span class="entry_type_enum_value">9</span> 19697 </li> 19698 <li> 19699 <span class="entry_type_enum_name">CLOUDY_WEATHER</span> 19700 <span class="entry_type_enum_value">10</span> 19701 </li> 19702 <li> 19703 <span class="entry_type_enum_name">SHADE</span> 19704 <span class="entry_type_enum_value">11</span> 19705 </li> 19706 <li> 19707 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span> 19708 <span class="entry_type_enum_value">12</span> 19709 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span> 19710 </li> 19711 <li> 19712 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span> 19713 <span class="entry_type_enum_value">13</span> 19714 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span> 19715 </li> 19716 <li> 19717 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span> 19718 <span class="entry_type_enum_value">14</span> 19719 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span> 19720 </li> 19721 <li> 19722 <span class="entry_type_enum_name">WHITE_FLUORESCENT</span> 19723 <span class="entry_type_enum_value">15</span> 19724 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span> 19725 </li> 19726 <li> 19727 <span class="entry_type_enum_name">STANDARD_A</span> 19728 <span class="entry_type_enum_value">17</span> 19729 </li> 19730 <li> 19731 <span class="entry_type_enum_name">STANDARD_B</span> 19732 <span class="entry_type_enum_value">18</span> 19733 </li> 19734 <li> 19735 <span class="entry_type_enum_name">STANDARD_C</span> 19736 <span class="entry_type_enum_value">19</span> 19737 </li> 19738 <li> 19739 <span class="entry_type_enum_name">D55</span> 19740 <span class="entry_type_enum_value">20</span> 19741 </li> 19742 <li> 19743 <span class="entry_type_enum_name">D65</span> 19744 <span class="entry_type_enum_value">21</span> 19745 </li> 19746 <li> 19747 <span class="entry_type_enum_name">D75</span> 19748 <span class="entry_type_enum_value">22</span> 19749 </li> 19750 <li> 19751 <span class="entry_type_enum_name">D50</span> 19752 <span class="entry_type_enum_value">23</span> 19753 </li> 19754 <li> 19755 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span> 19756 <span class="entry_type_enum_value">24</span> 19757 </li> 19758 </ul> 19759 19760 </td> <!-- entry_type --> 19761 19762 <td class="entry_description"> 19763 <p>The standard reference illuminant used as the scene light source when 19764calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 19765<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 19766<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p> 19767 </td> 19768 19769 <td class="entry_units"> 19770 </td> 19771 19772 <td class="entry_range"> 19773 </td> 19774 19775 <td class="entry_tags"> 19776 <ul class="entry_tags"> 19777 <li><a href="#tag_RAW">RAW</a></li> 19778 </ul> 19779 </td> 19780 19781 </tr> 19782 <tr class="entries_header"> 19783 <th class="th_details" colspan="5">Details</th> 19784 </tr> 19785 <tr class="entry_cont"> 19786 <td class="entry_details" colspan="5"> 19787 <p>The values in this key correspond to the values defined for the 19788EXIF LightSource tag.<wbr/> These illuminants are standard light sources 19789that are often used calibrating camera devices.<wbr/></p> 19790<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/> 19791<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and 19792<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p> 19793<p>Some devices may choose to provide a second set of calibration 19794information for improved quality,<wbr/> including 19795<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p> 19796 </td> 19797 </tr> 19798 19799 <tr class="entries_header"> 19800 <th class="th_details" colspan="5">HAL Implementation Details</th> 19801 </tr> 19802 <tr class="entry_cont"> 19803 <td class="entry_details" colspan="5"> 19804 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 19805and corresponding matrices must be present to support the RAW capability 19806and DNG output.<wbr/></p> 19807<p>When producing raw images with a color profile that has only been 19808calibrated against a single light source,<wbr/> it is valid to omit 19809<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the 19810<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/> 19811and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 19812<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be 19813chosen so that it is representative of typical scene lighting.<wbr/> In 19814general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p> 19815<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and 19816<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be 19817chosen to represent the typical range of scene lighting conditions.<wbr/> 19818In general,<wbr/> low color temperature illuminant such as Standard-A will 19819be chosen for the first reference illuminant and a higher color 19820temperature illuminant such as D65 will be chosen for the second 19821reference illuminant.<wbr/></p> 19822 </td> 19823 </tr> 19824 19825 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19826 <!-- end of entry --> 19827 19828 19829 <tr class="entry" id="static_android.sensor.referenceIlluminant2"> 19830 <td class="entry_name 19831 " rowspan="3"> 19832 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2 19833 </td> 19834 <td class="entry_type"> 19835 <span class="entry_type_name">byte</span> 19836 19837 <span class="entry_type_visibility"> [public]</span> 19838 19839 19840 19841 19842 19843 19844 </td> <!-- entry_type --> 19845 19846 <td class="entry_description"> 19847 <p>The standard reference illuminant used as the scene light source when 19848calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 19849<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 19850<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p> 19851 </td> 19852 19853 <td class="entry_units"> 19854 </td> 19855 19856 <td class="entry_range"> 19857 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p> 19858 </td> 19859 19860 <td class="entry_tags"> 19861 <ul class="entry_tags"> 19862 <li><a href="#tag_RAW">RAW</a></li> 19863 </ul> 19864 </td> 19865 19866 </tr> 19867 <tr class="entries_header"> 19868 <th class="th_details" colspan="5">Details</th> 19869 </tr> 19870 <tr class="entry_cont"> 19871 <td class="entry_details" colspan="5"> 19872 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p> 19873<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/> 19874<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and 19875<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p> 19876 </td> 19877 </tr> 19878 19879 19880 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19881 <!-- end of entry --> 19882 19883 19884 <tr class="entry" id="static_android.sensor.calibrationTransform1"> 19885 <td class="entry_name 19886 " rowspan="3"> 19887 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1 19888 </td> 19889 <td class="entry_type"> 19890 <span class="entry_type_name">rational</span> 19891 <span class="entry_type_container">x</span> 19892 19893 <span class="entry_type_array"> 19894 3 x 3 19895 </span> 19896 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19897 19898 19899 19900 19901 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19902 19903 19904 </td> <!-- entry_type --> 19905 19906 <td class="entry_description"> 19907 <p>A per-device calibration transform matrix that maps from the 19908reference sensor colorspace to the actual device sensor colorspace.<wbr/></p> 19909 </td> 19910 19911 <td class="entry_units"> 19912 </td> 19913 19914 <td class="entry_range"> 19915 </td> 19916 19917 <td class="entry_tags"> 19918 <ul class="entry_tags"> 19919 <li><a href="#tag_RAW">RAW</a></li> 19920 </ul> 19921 </td> 19922 19923 </tr> 19924 <tr class="entries_header"> 19925 <th class="th_details" colspan="5">Details</th> 19926 </tr> 19927 <tr class="entry_cont"> 19928 <td class="entry_details" colspan="5"> 19929 <p>This matrix is used to correct for per-device variations in the 19930sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 19931<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19932contains a per-device calibration transform that maps colors 19933from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 19934colorspace) into this camera device's native sensor color 19935space under the first reference illuminant 19936(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 19937 </td> 19938 </tr> 19939 19940 19941 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 19942 <!-- end of entry --> 19943 19944 19945 <tr class="entry" id="static_android.sensor.calibrationTransform2"> 19946 <td class="entry_name 19947 " rowspan="3"> 19948 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2 19949 </td> 19950 <td class="entry_type"> 19951 <span class="entry_type_name">rational</span> 19952 <span class="entry_type_container">x</span> 19953 19954 <span class="entry_type_array"> 19955 3 x 3 19956 </span> 19957 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 19958 19959 19960 19961 19962 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 19963 19964 19965 </td> <!-- entry_type --> 19966 19967 <td class="entry_description"> 19968 <p>A per-device calibration transform matrix that maps from the 19969reference sensor colorspace to the actual device sensor colorspace 19970(this is the colorspace of the raw buffer data).<wbr/></p> 19971 </td> 19972 19973 <td class="entry_units"> 19974 </td> 19975 19976 <td class="entry_range"> 19977 </td> 19978 19979 <td class="entry_tags"> 19980 <ul class="entry_tags"> 19981 <li><a href="#tag_RAW">RAW</a></li> 19982 </ul> 19983 </td> 19984 19985 </tr> 19986 <tr class="entries_header"> 19987 <th class="th_details" colspan="5">Details</th> 19988 </tr> 19989 <tr class="entry_cont"> 19990 <td class="entry_details" colspan="5"> 19991 <p>This matrix is used to correct for per-device variations in the 19992sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p> 19993<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 19994contains a per-device calibration transform that maps colors 19995from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module" 19996colorspace) into this camera device's native sensor color 19997space under the second reference illuminant 19998(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 19999<p>This matrix will only be present if the second reference 20000illuminant is present.<wbr/></p> 20001 </td> 20002 </tr> 20003 20004 20005 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20006 <!-- end of entry --> 20007 20008 20009 <tr class="entry" id="static_android.sensor.colorTransform1"> 20010 <td class="entry_name 20011 " rowspan="3"> 20012 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1 20013 </td> 20014 <td class="entry_type"> 20015 <span class="entry_type_name">rational</span> 20016 <span class="entry_type_container">x</span> 20017 20018 <span class="entry_type_array"> 20019 3 x 3 20020 </span> 20021 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 20022 20023 20024 20025 20026 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 20027 20028 20029 </td> <!-- entry_type --> 20030 20031 <td class="entry_description"> 20032 <p>A matrix that transforms color values from CIE XYZ color space to 20033reference sensor color space.<wbr/></p> 20034 </td> 20035 20036 <td class="entry_units"> 20037 </td> 20038 20039 <td class="entry_range"> 20040 </td> 20041 20042 <td class="entry_tags"> 20043 <ul class="entry_tags"> 20044 <li><a href="#tag_RAW">RAW</a></li> 20045 </ul> 20046 </td> 20047 20048 </tr> 20049 <tr class="entries_header"> 20050 <th class="th_details" colspan="5">Details</th> 20051 </tr> 20052 <tr class="entry_cont"> 20053 <td class="entry_details" colspan="5"> 20054 <p>This matrix is used to convert from the standard CIE XYZ color 20055space to the reference sensor colorspace,<wbr/> and is used when processing 20056raw buffer data.<wbr/></p> 20057<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 20058contains a color transform matrix that maps colors from the CIE 20059XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 20060"golden module" colorspace) under the first reference illuminant 20061(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p> 20062<p>The white points chosen in both the reference sensor color space 20063and the CIE XYZ colorspace when calculating this transform will 20064match the standard white point for the first reference illuminant 20065(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 20066 </td> 20067 </tr> 20068 20069 20070 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20071 <!-- end of entry --> 20072 20073 20074 <tr class="entry" id="static_android.sensor.colorTransform2"> 20075 <td class="entry_name 20076 " rowspan="3"> 20077 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2 20078 </td> 20079 <td class="entry_type"> 20080 <span class="entry_type_name">rational</span> 20081 <span class="entry_type_container">x</span> 20082 20083 <span class="entry_type_array"> 20084 3 x 3 20085 </span> 20086 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 20087 20088 20089 20090 20091 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 20092 20093 20094 </td> <!-- entry_type --> 20095 20096 <td class="entry_description"> 20097 <p>A matrix that transforms color values from CIE XYZ color space to 20098reference sensor color space.<wbr/></p> 20099 </td> 20100 20101 <td class="entry_units"> 20102 </td> 20103 20104 <td class="entry_range"> 20105 </td> 20106 20107 <td class="entry_tags"> 20108 <ul class="entry_tags"> 20109 <li><a href="#tag_RAW">RAW</a></li> 20110 </ul> 20111 </td> 20112 20113 </tr> 20114 <tr class="entries_header"> 20115 <th class="th_details" colspan="5">Details</th> 20116 </tr> 20117 <tr class="entry_cont"> 20118 <td class="entry_details" colspan="5"> 20119 <p>This matrix is used to convert from the standard CIE XYZ color 20120space to the reference sensor colorspace,<wbr/> and is used when processing 20121raw buffer data.<wbr/></p> 20122<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and 20123contains a color transform matrix that maps colors from the CIE 20124XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the 20125"golden module" colorspace) under the second reference illuminant 20126(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p> 20127<p>The white points chosen in both the reference sensor color space 20128and the CIE XYZ colorspace when calculating this transform will 20129match the standard white point for the second reference illuminant 20130(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p> 20131<p>This matrix will only be present if the second reference 20132illuminant is present.<wbr/></p> 20133 </td> 20134 </tr> 20135 20136 20137 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20138 <!-- end of entry --> 20139 20140 20141 <tr class="entry" id="static_android.sensor.forwardMatrix1"> 20142 <td class="entry_name 20143 " rowspan="3"> 20144 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1 20145 </td> 20146 <td class="entry_type"> 20147 <span class="entry_type_name">rational</span> 20148 <span class="entry_type_container">x</span> 20149 20150 <span class="entry_type_array"> 20151 3 x 3 20152 </span> 20153 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 20154 20155 20156 20157 20158 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 20159 20160 20161 </td> <!-- entry_type --> 20162 20163 <td class="entry_description"> 20164 <p>A matrix that transforms white balanced camera colors from the reference 20165sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 20166 </td> 20167 20168 <td class="entry_units"> 20169 </td> 20170 20171 <td class="entry_range"> 20172 </td> 20173 20174 <td class="entry_tags"> 20175 <ul class="entry_tags"> 20176 <li><a href="#tag_RAW">RAW</a></li> 20177 </ul> 20178 </td> 20179 20180 </tr> 20181 <tr class="entries_header"> 20182 <th class="th_details" colspan="5">Details</th> 20183 </tr> 20184 <tr class="entry_cont"> 20185 <td class="entry_details" colspan="5"> 20186 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 20187is used when processing raw buffer data.<wbr/></p> 20188<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 20189a color transform matrix that maps white balanced colors from the 20190reference sensor color space to the CIE XYZ color space with a D50 white 20191point.<wbr/></p> 20192<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>) 20193this matrix is chosen so that the standard white point for this reference 20194illuminant in the reference sensor colorspace is mapped to D50 in the 20195CIE XYZ colorspace.<wbr/></p> 20196 </td> 20197 </tr> 20198 20199 20200 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20201 <!-- end of entry --> 20202 20203 20204 <tr class="entry" id="static_android.sensor.forwardMatrix2"> 20205 <td class="entry_name 20206 " rowspan="3"> 20207 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2 20208 </td> 20209 <td class="entry_type"> 20210 <span class="entry_type_name">rational</span> 20211 <span class="entry_type_container">x</span> 20212 20213 <span class="entry_type_array"> 20214 3 x 3 20215 </span> 20216 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span> 20217 20218 20219 20220 20221 <div class="entry_type_notes">3x3 matrix in row-major-order</div> 20222 20223 20224 </td> <!-- entry_type --> 20225 20226 <td class="entry_description"> 20227 <p>A matrix that transforms white balanced camera colors from the reference 20228sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p> 20229 </td> 20230 20231 <td class="entry_units"> 20232 </td> 20233 20234 <td class="entry_range"> 20235 </td> 20236 20237 <td class="entry_tags"> 20238 <ul class="entry_tags"> 20239 <li><a href="#tag_RAW">RAW</a></li> 20240 </ul> 20241 </td> 20242 20243 </tr> 20244 <tr class="entries_header"> 20245 <th class="th_details" colspan="5">Details</th> 20246 </tr> 20247 <tr class="entry_cont"> 20248 <td class="entry_details" colspan="5"> 20249 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and 20250is used when processing raw buffer data.<wbr/></p> 20251<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains 20252a color transform matrix that maps white balanced colors from the 20253reference sensor color space to the CIE XYZ color space with a D50 white 20254point.<wbr/></p> 20255<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>) 20256this matrix is chosen so that the standard white point for this reference 20257illuminant in the reference sensor colorspace is mapped to D50 in the 20258CIE XYZ colorspace.<wbr/></p> 20259<p>This matrix will only be present if the second reference 20260illuminant is present.<wbr/></p> 20261 </td> 20262 </tr> 20263 20264 20265 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20266 <!-- end of entry --> 20267 20268 20269 <tr class="entry" id="static_android.sensor.baseGainFactor"> 20270 <td class="entry_name 20271 " rowspan="1"> 20272 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor 20273 </td> 20274 <td class="entry_type"> 20275 <span class="entry_type_name">rational</span> 20276 20277 <span class="entry_type_visibility"> [system]</span> 20278 20279 20280 20281 20282 20283 20284 </td> <!-- entry_type --> 20285 20286 <td class="entry_description"> 20287 <p>Gain factor from electrons to raw units when 20288ISO=100</p> 20289 </td> 20290 20291 <td class="entry_units"> 20292 </td> 20293 20294 <td class="entry_range"> 20295 </td> 20296 20297 <td class="entry_tags"> 20298 <ul class="entry_tags"> 20299 <li><a href="#tag_FUTURE">FUTURE</a></li> 20300 </ul> 20301 </td> 20302 20303 </tr> 20304 20305 20306 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20307 <!-- end of entry --> 20308 20309 20310 <tr class="entry" id="static_android.sensor.blackLevelPattern"> 20311 <td class="entry_name 20312 " rowspan="5"> 20313 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern 20314 </td> 20315 <td class="entry_type"> 20316 <span class="entry_type_name">int32</span> 20317 <span class="entry_type_container">x</span> 20318 20319 <span class="entry_type_array"> 20320 4 20321 </span> 20322 <span class="entry_type_visibility"> [public as blackLevelPattern]</span> 20323 20324 20325 20326 20327 <div class="entry_type_notes">2x2 raw count block</div> 20328 20329 20330 </td> <!-- entry_type --> 20331 20332 <td class="entry_description"> 20333 <p>A fixed black level offset for each of the color filter arrangement 20334(CFA) mosaic channels.<wbr/></p> 20335 </td> 20336 20337 <td class="entry_units"> 20338 </td> 20339 20340 <td class="entry_range"> 20341 <p>>= 0 for each.<wbr/></p> 20342 </td> 20343 20344 <td class="entry_tags"> 20345 <ul class="entry_tags"> 20346 <li><a href="#tag_RAW">RAW</a></li> 20347 </ul> 20348 </td> 20349 20350 </tr> 20351 <tr class="entries_header"> 20352 <th class="th_details" colspan="5">Details</th> 20353 </tr> 20354 <tr class="entry_cont"> 20355 <td class="entry_details" colspan="5"> 20356 <p>This key specifies the zero light value for each of the CFA mosaic 20357channels in the camera sensor.<wbr/> The maximal value output by the 20358sensor 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> 20359<p>The values are given in the same order as channels listed for the CFA 20360layout 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 20361nth value given corresponds to the black level offset for the nth 20362color channel listed in the CFA.<wbr/></p> 20363<p>The black level values of captured images may vary for different 20364capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key 20365represents a coarse approximation for such case.<wbr/> It is recommended to 20366use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from 20367<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when 20368supported by the camera device,<wbr/> which provides more accurate black 20369level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use 20370pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black 20371level values for each frame.<wbr/></p> 20372 </td> 20373 </tr> 20374 20375 <tr class="entries_header"> 20376 <th class="th_details" colspan="5">HAL Implementation Details</th> 20377 </tr> 20378 <tr class="entry_cont"> 20379 <td class="entry_details" colspan="5"> 20380 <p>The values are given in row-column scan order,<wbr/> with the first value 20381corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 20382 </td> 20383 </tr> 20384 20385 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20386 <!-- end of entry --> 20387 20388 20389 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity"> 20390 <td class="entry_name 20391 " rowspan="3"> 20392 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity 20393 </td> 20394 <td class="entry_type"> 20395 <span class="entry_type_name">int32</span> 20396 20397 <span class="entry_type_visibility"> [public]</span> 20398 20399 20400 <span class="entry_type_hwlevel">[full] </span> 20401 20402 20403 20404 20405 </td> <!-- entry_type --> 20406 20407 <td class="entry_description"> 20408 <p>Maximum sensitivity that is implemented 20409purely through analog gain.<wbr/></p> 20410 </td> 20411 20412 <td class="entry_units"> 20413 </td> 20414 20415 <td class="entry_range"> 20416 </td> 20417 20418 <td class="entry_tags"> 20419 <ul class="entry_tags"> 20420 <li><a href="#tag_V1">V1</a></li> 20421 <li><a href="#tag_FULL">FULL</a></li> 20422 </ul> 20423 </td> 20424 20425 </tr> 20426 <tr class="entries_header"> 20427 <th class="th_details" colspan="5">Details</th> 20428 </tr> 20429 <tr class="entry_cont"> 20430 <td class="entry_details" colspan="5"> 20431 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or 20432equal to this,<wbr/> all applied gain must be analog.<wbr/> For 20433values above this,<wbr/> the gain applied can be a mix of analog and 20434digital.<wbr/></p> 20435 </td> 20436 </tr> 20437 20438 20439 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20440 <!-- end of entry --> 20441 20442 20443 <tr class="entry" id="static_android.sensor.orientation"> 20444 <td class="entry_name 20445 " rowspan="3"> 20446 android.<wbr/>sensor.<wbr/>orientation 20447 </td> 20448 <td class="entry_type"> 20449 <span class="entry_type_name">int32</span> 20450 20451 <span class="entry_type_visibility"> [public]</span> 20452 20453 20454 <span class="entry_type_hwlevel">[legacy] </span> 20455 20456 20457 20458 20459 </td> <!-- entry_type --> 20460 20461 <td class="entry_description"> 20462 <p>Clockwise angle through which the output image needs to be rotated to be 20463upright on the device screen in its native orientation.<wbr/></p> 20464 </td> 20465 20466 <td class="entry_units"> 20467 Degrees of clockwise rotation; always a multiple of 20468 90 20469 </td> 20470 20471 <td class="entry_range"> 20472 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p> 20473 </td> 20474 20475 <td class="entry_tags"> 20476 <ul class="entry_tags"> 20477 <li><a href="#tag_BC">BC</a></li> 20478 </ul> 20479 </td> 20480 20481 </tr> 20482 <tr class="entries_header"> 20483 <th class="th_details" colspan="5">Details</th> 20484 </tr> 20485 <tr class="entry_cont"> 20486 <td class="entry_details" colspan="5"> 20487 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in 20488the sensor's coordinate system.<wbr/></p> 20489 </td> 20490 </tr> 20491 20492 20493 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20494 <!-- end of entry --> 20495 20496 20497 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions"> 20498 <td class="entry_name 20499 " rowspan="3"> 20500 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions 20501 </td> 20502 <td class="entry_type"> 20503 <span class="entry_type_name">int32</span> 20504 <span class="entry_type_container">x</span> 20505 20506 <span class="entry_type_array"> 20507 3 20508 </span> 20509 <span class="entry_type_visibility"> [system]</span> 20510 20511 20512 20513 20514 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div> 20515 20516 20517 </td> <!-- entry_type --> 20518 20519 <td class="entry_description"> 20520 <p>The number of input samples for each dimension of 20521<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p> 20522 </td> 20523 20524 <td class="entry_units"> 20525 </td> 20526 20527 <td class="entry_range"> 20528 <p>Hue >= 1,<wbr/> 20529Saturation >= 2,<wbr/> 20530Value >= 1</p> 20531 </td> 20532 20533 <td class="entry_tags"> 20534 <ul class="entry_tags"> 20535 <li><a href="#tag_RAW">RAW</a></li> 20536 </ul> 20537 </td> 20538 20539 </tr> 20540 <tr class="entries_header"> 20541 <th class="th_details" colspan="5">Details</th> 20542 </tr> 20543 <tr class="entry_cont"> 20544 <td class="entry_details" colspan="5"> 20545 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value 20546dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the 20547dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th 20548element.<wbr/></p> 20549 </td> 20550 </tr> 20551 20552 20553 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20554 <!-- end of entry --> 20555 20556 20557 <tr class="entry" id="static_android.sensor.availableTestPatternModes"> 20558 <td class="entry_name 20559 " rowspan="5"> 20560 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes 20561 </td> 20562 <td class="entry_type"> 20563 <span class="entry_type_name">int32</span> 20564 <span class="entry_type_container">x</span> 20565 20566 <span class="entry_type_array"> 20567 n 20568 </span> 20569 <span class="entry_type_visibility"> [public]</span> 20570 20571 20572 20573 20574 <div class="entry_type_notes">list of enums</div> 20575 20576 20577 </td> <!-- entry_type --> 20578 20579 <td class="entry_description"> 20580 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> 20581supported by this camera device.<wbr/></p> 20582 </td> 20583 20584 <td class="entry_units"> 20585 </td> 20586 20587 <td class="entry_range"> 20588 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p> 20589 </td> 20590 20591 <td class="entry_tags"> 20592 </td> 20593 20594 </tr> 20595 <tr class="entries_header"> 20596 <th class="th_details" colspan="5">Details</th> 20597 </tr> 20598 <tr class="entry_cont"> 20599 <td class="entry_details" colspan="5"> 20600 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p> 20601 </td> 20602 </tr> 20603 20604 <tr class="entries_header"> 20605 <th class="th_details" colspan="5">HAL Implementation Details</th> 20606 </tr> 20607 <tr class="entry_cont"> 20608 <td class="entry_details" colspan="5"> 20609 <p>All custom modes must be >= CUSTOM1.<wbr/></p> 20610 </td> 20611 </tr> 20612 20613 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20614 <!-- end of entry --> 20615 20616 20617 <tr class="entry" id="static_android.sensor.opticalBlackRegions"> 20618 <td class="entry_name 20619 " rowspan="5"> 20620 android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions 20621 </td> 20622 <td class="entry_type"> 20623 <span class="entry_type_name">int32</span> 20624 <span class="entry_type_container">x</span> 20625 20626 <span class="entry_type_array"> 20627 4 x num_regions 20628 </span> 20629 <span class="entry_type_visibility"> [public as rectangle]</span> 20630 20631 20632 20633 20634 20635 20636 </td> <!-- entry_type --> 20637 20638 <td class="entry_description"> 20639 <p>List of disjoint rectangles indicating the sensor 20640optically shielded black pixel regions.<wbr/></p> 20641 </td> 20642 20643 <td class="entry_units"> 20644 </td> 20645 20646 <td class="entry_range"> 20647 </td> 20648 20649 <td class="entry_tags"> 20650 </td> 20651 20652 </tr> 20653 <tr class="entries_header"> 20654 <th class="th_details" colspan="5">Details</th> 20655 </tr> 20656 <tr class="entry_cont"> 20657 <td class="entry_details" colspan="5"> 20658 <p>In most camera sensors,<wbr/> the active array is surrounded by some 20659optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels 20660provides a reliable black reference for black level compensation 20661in active array region.<wbr/></p> 20662<p>This key provides a list of disjoint rectangles specifying the 20663regions of optically shielded (with metal shield) black pixel 20664regions if the camera device is capable of reading out these black 20665pixels in the output raw images.<wbr/> In comparison to the fixed black 20666level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key 20667may provide a more accurate way for the application to calculate 20668black level of each captured raw images.<wbr/></p> 20669<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 20670<a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p> 20671 </td> 20672 </tr> 20673 20674 <tr class="entries_header"> 20675 <th class="th_details" colspan="5">HAL Implementation Details</th> 20676 </tr> 20677 <tr class="entry_cont"> 20678 <td class="entry_details" colspan="5"> 20679 <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin) 20680must be >= (0,<wbr/>0) and <= 20681<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 20682<= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be 20683outside the region reported by 20684<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> 20685<p>The HAL must report minimal number of disjoint regions for the 20686optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can 20687be covered by one rectangle,<wbr/> the HAL must not split this region into 20688multiple rectangles.<wbr/></p> 20689 </td> 20690 </tr> 20691 20692 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20693 <!-- end of entry --> 20694 20695 20696 <tr class="entry" id="static_android.sensor.opaqueRawSize"> 20697 <td class="entry_name 20698 " rowspan="5"> 20699 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size 20700 </td> 20701 <td class="entry_type"> 20702 <span class="entry_type_name">int32</span> 20703 <span class="entry_type_container">x</span> 20704 20705 <span class="entry_type_array"> 20706 n x 3 20707 </span> 20708 <span class="entry_type_visibility"> [system]</span> 20709 20710 20711 20712 20713 20714 20715 </td> <!-- entry_type --> 20716 20717 <td class="entry_description"> 20718 <p>Size in bytes for all the listed opaque RAW buffer sizes</p> 20719 </td> 20720 20721 <td class="entry_units"> 20722 </td> 20723 20724 <td class="entry_range"> 20725 <p>Must be large enough to fit the opaque RAW of corresponding size produced by 20726the camera</p> 20727 </td> 20728 20729 <td class="entry_tags"> 20730 </td> 20731 20732 </tr> 20733 <tr class="entries_header"> 20734 <th class="th_details" colspan="5">Details</th> 20735 </tr> 20736 <tr class="entry_cont"> 20737 <td class="entry_details" colspan="5"> 20738 <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/> 20739This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/> 20740All RAW_<wbr/>OPAQUE output stream configuration listed in 20741<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in 20742this key.<wbr/></p> 20743 </td> 20744 </tr> 20745 20746 <tr class="entries_header"> 20747 <th class="th_details" colspan="5">HAL Implementation Details</th> 20748 </tr> 20749 <tr class="entry_cont"> 20750 <td class="entry_details" colspan="5"> 20751 <p>This key is added in HAL3.<wbr/>4.<wbr/> 20752For HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this key.<wbr/> 20753For HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera framework 20754will derive this key by assuming each pixel takes two bytes and no padding bytes 20755between rows.<wbr/></p> 20756 </td> 20757 </tr> 20758 20759 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20760 <!-- end of entry --> 20761 20762 20763 20764 <!-- end of kind --> 20765 </tbody> 20766 <tr><td colspan="6" class="kind">dynamic</td></tr> 20767 20768 <thead class="entries_header"> 20769 <tr> 20770 <th class="th_name">Property Name</th> 20771 <th class="th_type">Type</th> 20772 <th class="th_description">Description</th> 20773 <th class="th_units">Units</th> 20774 <th class="th_range">Range</th> 20775 <th class="th_tags">Tags</th> 20776 </tr> 20777 </thead> 20778 20779 <tbody> 20780 20781 20782 20783 20784 20785 20786 20787 20788 20789 20790 <tr class="entry" id="dynamic_android.sensor.exposureTime"> 20791 <td class="entry_name 20792 " rowspan="3"> 20793 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time 20794 </td> 20795 <td class="entry_type"> 20796 <span class="entry_type_name">int64</span> 20797 20798 <span class="entry_type_visibility"> [public]</span> 20799 20800 20801 <span class="entry_type_hwlevel">[full] </span> 20802 20803 20804 20805 20806 </td> <!-- entry_type --> 20807 20808 <td class="entry_description"> 20809 <p>Duration each pixel is exposed to 20810light.<wbr/></p> 20811 </td> 20812 20813 <td class="entry_units"> 20814 Nanoseconds 20815 </td> 20816 20817 <td class="entry_range"> 20818 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> 20819 </td> 20820 20821 <td class="entry_tags"> 20822 <ul class="entry_tags"> 20823 <li><a href="#tag_V1">V1</a></li> 20824 </ul> 20825 </td> 20826 20827 </tr> 20828 <tr class="entries_header"> 20829 <th class="th_details" colspan="5">Details</th> 20830 </tr> 20831 <tr class="entry_cont"> 20832 <td class="entry_details" colspan="5"> 20833 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the 20834duration exposed to the nearest possible value (rather than expose longer).<wbr/> 20835The final exposure time used will be available in the output capture result.<wbr/></p> 20836<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 20837OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 20838 </td> 20839 </tr> 20840 20841 20842 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20843 <!-- end of entry --> 20844 20845 20846 <tr class="entry" id="dynamic_android.sensor.frameDuration"> 20847 <td class="entry_name 20848 " rowspan="5"> 20849 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration 20850 </td> 20851 <td class="entry_type"> 20852 <span class="entry_type_name">int64</span> 20853 20854 <span class="entry_type_visibility"> [public]</span> 20855 20856 20857 <span class="entry_type_hwlevel">[full] </span> 20858 20859 20860 20861 20862 </td> <!-- entry_type --> 20863 20864 <td class="entry_description"> 20865 <p>Duration from start of frame exposure to 20866start of next frame exposure.<wbr/></p> 20867 </td> 20868 20869 <td class="entry_units"> 20870 Nanoseconds 20871 </td> 20872 20873 <td class="entry_range"> 20874 <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> 20875<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration 20876is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> 20877 </td> 20878 20879 <td class="entry_tags"> 20880 <ul class="entry_tags"> 20881 <li><a href="#tag_V1">V1</a></li> 20882 </ul> 20883 </td> 20884 20885 </tr> 20886 <tr class="entries_header"> 20887 <th class="th_details" colspan="5">Details</th> 20888 </tr> 20889 <tr class="entry_cont"> 20890 <td class="entry_details" colspan="5"> 20891 <p>The maximum frame rate that can be supported by a camera subsystem is 20892a function of many factors:</p> 20893<ul> 20894<li>Requested resolutions of output image streams</li> 20895<li>Availability of binning /<wbr/> skipping modes on the imager</li> 20896<li>The bandwidth of the imager interface</li> 20897<li>The bandwidth of the various ISP processing blocks</li> 20898</ul> 20899<p>Since these factors can vary greatly between different ISPs and 20900sensors,<wbr/> the camera abstraction tries to represent the bandwidth 20901restrictions with as simple a model as possible.<wbr/></p> 20902<p>The model presented has the following characteristics:</p> 20903<ul> 20904<li>The image sensor is always configured to output the smallest 20905resolution possible given the application's requested output stream 20906sizes.<wbr/> The smallest resolution is defined as being at least as large 20907as the largest requested output stream size; the camera pipeline must 20908never digitally upsample sensor data when the crop region covers the 20909whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream 20910resolutions are configured,<wbr/> the sensor can provide a higher frame 20911rate.<wbr/></li> 20912<li>Since any request may use any or all the currently configured 20913output streams,<wbr/> the sensor and ISP must be configured to support 20914scaling a single capture to all the streams at the same time.<wbr/> This 20915means the camera pipeline must be ready to produce the largest 20916requested output size without any delay.<wbr/> Therefore,<wbr/> the overall 20917frame rate of a given configured stream set is governed only by the 20918largest requested stream resolution.<wbr/></li> 20919<li>Using more than one output stream in a request does not affect the 20920frame duration.<wbr/></li> 20921<li>Certain format-streams may need to do additional background processing 20922before data is consumed/<wbr/>produced by that stream.<wbr/> These processors 20923can run concurrently to the rest of the camera pipeline,<wbr/> but 20924cannot process more than 1 capture at a time.<wbr/></li> 20925</ul> 20926<p>The necessary information for the application,<wbr/> given the model above,<wbr/> 20927is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using 20928<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/> 20929These are used to determine the maximum frame rate /<wbr/> minimum frame 20930duration that is possible for a given stream configuration.<wbr/></p> 20931<p>Specifically,<wbr/> the application can use the following rules to 20932determine the minimum frame duration it can request from the camera 20933device:</p> 20934<ol> 20935<li>Let the set of currently configured input/<wbr/>output streams 20936be called <code>S</code>.<wbr/></li> 20937<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking 20938it 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> 20939(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be 20940called <code>F</code>.<wbr/></li> 20941<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed 20942for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams 20943used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li> 20944</ol> 20945<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> 20946using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> 20947determines the steady state frame rate that the application will get 20948if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of 20949request be called <code>Rsimple</code>.<wbr/></p> 20950<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved 20951by a single capture of a new request <code>Rstall</code> (which has at least 20952one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the 20953same minimum frame duration this will not cause a frame rate loss 20954if all buffers from the previous <code>Rstall</code> have already been 20955delivered.<wbr/></p> 20956<p>For more details about stalling,<wbr/> see 20957<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p> 20958<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 20959OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 20960 </td> 20961 </tr> 20962 20963 <tr class="entries_header"> 20964 <th class="th_details" colspan="5">HAL Implementation Details</th> 20965 </tr> 20966 <tr class="entry_cont"> 20967 <td class="entry_details" colspan="5"> 20968 <p>For more details about stalling,<wbr/> see 20969<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p> 20970 </td> 20971 </tr> 20972 20973 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 20974 <!-- end of entry --> 20975 20976 20977 <tr class="entry" id="dynamic_android.sensor.sensitivity"> 20978 <td class="entry_name 20979 " rowspan="5"> 20980 android.<wbr/>sensor.<wbr/>sensitivity 20981 </td> 20982 <td class="entry_type"> 20983 <span class="entry_type_name">int32</span> 20984 20985 <span class="entry_type_visibility"> [public]</span> 20986 20987 20988 <span class="entry_type_hwlevel">[full] </span> 20989 20990 20991 20992 20993 </td> <!-- entry_type --> 20994 20995 <td class="entry_description"> 20996 <p>The amount of gain applied to sensor data 20997before processing.<wbr/></p> 20998 </td> 20999 21000 <td class="entry_units"> 21001 ISO arithmetic units 21002 </td> 21003 21004 <td class="entry_range"> 21005 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> 21006 </td> 21007 21008 <td class="entry_tags"> 21009 <ul class="entry_tags"> 21010 <li><a href="#tag_V1">V1</a></li> 21011 </ul> 21012 </td> 21013 21014 </tr> 21015 <tr class="entries_header"> 21016 <th class="th_details" colspan="5">Details</th> 21017 </tr> 21018 <tr class="entry_cont"> 21019 <td class="entry_details" colspan="5"> 21020 <p>The sensitivity is the standard ISO sensitivity value,<wbr/> 21021as defined in ISO 12232:2006.<wbr/></p> 21022<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 21023if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device 21024is guaranteed to use only analog amplification for applying the gain.<wbr/></p> 21025<p>If the camera device cannot apply the exact sensitivity 21026requested,<wbr/> it will reduce the gain to the nearest supported 21027value.<wbr/> The final sensitivity used will be available in the 21028output capture result.<wbr/></p> 21029<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 21030OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p> 21031 </td> 21032 </tr> 21033 21034 <tr class="entries_header"> 21035 <th class="th_details" colspan="5">HAL Implementation Details</th> 21036 </tr> 21037 <tr class="entry_cont"> 21038 <td class="entry_details" colspan="5"> 21039 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p> 21040 </td> 21041 </tr> 21042 21043 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21044 <!-- end of entry --> 21045 21046 21047 <tr class="entry" id="dynamic_android.sensor.timestamp"> 21048 <td class="entry_name 21049 " rowspan="5"> 21050 android.<wbr/>sensor.<wbr/>timestamp 21051 </td> 21052 <td class="entry_type"> 21053 <span class="entry_type_name">int64</span> 21054 21055 <span class="entry_type_visibility"> [public]</span> 21056 21057 21058 <span class="entry_type_hwlevel">[legacy] </span> 21059 21060 21061 21062 21063 </td> <!-- entry_type --> 21064 21065 <td class="entry_description"> 21066 <p>Time at start of exposure of first 21067row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p> 21068 </td> 21069 21070 <td class="entry_units"> 21071 Nanoseconds 21072 </td> 21073 21074 <td class="entry_range"> 21075 <p>> 0</p> 21076 </td> 21077 21078 <td class="entry_tags"> 21079 <ul class="entry_tags"> 21080 <li><a href="#tag_BC">BC</a></li> 21081 </ul> 21082 </td> 21083 21084 </tr> 21085 <tr class="entries_header"> 21086 <th class="th_details" colspan="5">Details</th> 21087 </tr> 21088 <tr class="entry_cont"> 21089 <td class="entry_details" colspan="5"> 21090 <p>The timestamps are also included in all image 21091buffers produced for the same capture,<wbr/> and will be identical 21092on all the outputs.<wbr/></p> 21093<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/> 21094the timestamps measure time since an unspecified starting point,<wbr/> 21095and are monotonically increasing.<wbr/> They can be compared with the 21096timestamps for other captures from the same camera device,<wbr/> but are 21097not guaranteed to be comparable to any other time source.<wbr/></p> 21098<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the 21099timestamps 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 21100be compared to other timestamps from other subsystems that 21101are using that base.<wbr/></p> 21102<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of 21103the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the 21104timestamp</a> in the TotalCaptureResult that was used to create the 21105reprocess capture request.<wbr/></p> 21106 </td> 21107 </tr> 21108 21109 <tr class="entries_header"> 21110 <th class="th_details" colspan="5">HAL Implementation Details</th> 21111 </tr> 21112 <tr class="entry_cont"> 21113 <td class="entry_details" colspan="5"> 21114 <p>All timestamps must be in reference to the kernel's 21115CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for 21116time spent asleep.<wbr/> This allows for synchronization with 21117sensors that continue to operate while the system is 21118otherwise asleep.<wbr/></p> 21119<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> 21120The timestamp must be synchronized with the timestamps from other 21121sensor subsystems that are using the same timebase.<wbr/></p> 21122<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up 21123with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the 21124capture request.<wbr/></p> 21125 </td> 21126 </tr> 21127 21128 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21129 <!-- end of entry --> 21130 21131 21132 <tr class="entry" id="dynamic_android.sensor.temperature"> 21133 <td class="entry_name 21134 " rowspan="1"> 21135 android.<wbr/>sensor.<wbr/>temperature 21136 </td> 21137 <td class="entry_type"> 21138 <span class="entry_type_name">float</span> 21139 21140 <span class="entry_type_visibility"> [system]</span> 21141 21142 21143 21144 21145 21146 21147 </td> <!-- entry_type --> 21148 21149 <td class="entry_description"> 21150 <p>The temperature of the sensor,<wbr/> sampled at the time 21151exposure began for this frame.<wbr/></p> 21152<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or 21153somewhere close to it.<wbr/></p> 21154 </td> 21155 21156 <td class="entry_units"> 21157 Celsius 21158 </td> 21159 21160 <td class="entry_range"> 21161 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p> 21162 </td> 21163 21164 <td class="entry_tags"> 21165 <ul class="entry_tags"> 21166 <li><a href="#tag_FUTURE">FUTURE</a></li> 21167 </ul> 21168 </td> 21169 21170 </tr> 21171 21172 21173 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21174 <!-- end of entry --> 21175 21176 21177 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint"> 21178 <td class="entry_name 21179 " rowspan="3"> 21180 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point 21181 </td> 21182 <td class="entry_type"> 21183 <span class="entry_type_name">rational</span> 21184 <span class="entry_type_container">x</span> 21185 21186 <span class="entry_type_array"> 21187 3 21188 </span> 21189 <span class="entry_type_visibility"> [public]</span> 21190 21191 21192 21193 21194 21195 21196 </td> <!-- entry_type --> 21197 21198 <td class="entry_description"> 21199 <p>The estimated camera neutral color in the native sensor colorspace at 21200the time of capture.<wbr/></p> 21201 </td> 21202 21203 <td class="entry_units"> 21204 </td> 21205 21206 <td class="entry_range"> 21207 </td> 21208 21209 <td class="entry_tags"> 21210 <ul class="entry_tags"> 21211 <li><a href="#tag_RAW">RAW</a></li> 21212 </ul> 21213 </td> 21214 21215 </tr> 21216 <tr class="entries_header"> 21217 <th class="th_details" colspan="5">Details</th> 21218 </tr> 21219 <tr class="entry_cont"> 21220 <td class="entry_details" colspan="5"> 21221 <p>This value gives the neutral color point encoded as an RGB value in the 21222native sensor color space.<wbr/> The neutral color point indicates the 21223currently estimated white point of the scene illumination.<wbr/> It can be 21224used to interpolate between the provided color transforms when 21225processing raw sensor data.<wbr/></p> 21226<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p> 21227 </td> 21228 </tr> 21229 21230 21231 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21232 <!-- end of entry --> 21233 21234 21235 <tr class="entry" id="dynamic_android.sensor.noiseProfile"> 21236 <td class="entry_name 21237 " rowspan="5"> 21238 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile 21239 </td> 21240 <td class="entry_type"> 21241 <span class="entry_type_name">double</span> 21242 <span class="entry_type_container">x</span> 21243 21244 <span class="entry_type_array"> 21245 2 x CFA Channels 21246 </span> 21247 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span> 21248 21249 21250 21251 21252 <div class="entry_type_notes">Pairs of noise model coefficients</div> 21253 21254 21255 </td> <!-- entry_type --> 21256 21257 <td class="entry_description"> 21258 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p> 21259 </td> 21260 21261 <td class="entry_units"> 21262 </td> 21263 21264 <td class="entry_range"> 21265 </td> 21266 21267 <td class="entry_tags"> 21268 <ul class="entry_tags"> 21269 <li><a href="#tag_RAW">RAW</a></li> 21270 </ul> 21271 </td> 21272 21273 </tr> 21274 <tr class="entries_header"> 21275 <th class="th_details" colspan="5">Details</th> 21276 </tr> 21277 <tr class="entry_cont"> 21278 <td class="entry_details" colspan="5"> 21279 <p>This key contains two noise model coefficients for each CFA channel 21280corresponding to the sensor amplification (S) and sensor readout 21281noise (O).<wbr/> These are given as pairs of coefficients for each channel 21282in the same order as channels listed for the CFA layout key 21283(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is 21284represented as an array of Pair<Double,<wbr/> Double>,<wbr/> where 21285the first member of the Pair at index n is the S coefficient and the 21286second member is the O coefficient for the nth color channel in the CFA.<wbr/></p> 21287<p>These coefficients are used in a two parameter noise model to describe 21288the amount of noise present in the image for each CFA channel.<wbr/> The 21289noise model used here is:</p> 21290<p>N(x) = sqrt(Sx + O)</p> 21291<p>Where x represents the recorded signal of a CFA channel normalized to 21292the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for 21293that channel.<wbr/></p> 21294<p>A more detailed description of the noise model can be found in the 21295Adobe DNG specification for the NoiseProfile tag.<wbr/></p> 21296 </td> 21297 </tr> 21298 21299 <tr class="entries_header"> 21300 <th class="th_details" colspan="5">HAL Implementation Details</th> 21301 </tr> 21302 <tr class="entry_cont"> 21303 <td class="entry_details" colspan="5"> 21304 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as 21305an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients 21306for the red channel,<wbr/> S1 and O1 are the coefficients for the first green 21307channel,<wbr/> etc.<wbr/></p> 21308 </td> 21309 </tr> 21310 21311 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21312 <!-- end of entry --> 21313 21314 21315 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap"> 21316 <td class="entry_name 21317 " rowspan="3"> 21318 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map 21319 </td> 21320 <td class="entry_type"> 21321 <span class="entry_type_name">float</span> 21322 <span class="entry_type_container">x</span> 21323 21324 <span class="entry_type_array"> 21325 hue_samples x saturation_samples x value_samples x 3 21326 </span> 21327 <span class="entry_type_visibility"> [system]</span> 21328 21329 21330 21331 21332 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div> 21333 21334 21335 </td> <!-- entry_type --> 21336 21337 <td class="entry_description"> 21338 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale 21339for each pixel.<wbr/></p> 21340 </td> 21341 21342 <td class="entry_units"> 21343 21344 The hue shift is given in degrees; saturation and value scale factors are 21345 unitless and are between 0 and 1 inclusive 21346 21347 </td> 21348 21349 <td class="entry_range"> 21350 </td> 21351 21352 <td class="entry_tags"> 21353 <ul class="entry_tags"> 21354 <li><a href="#tag_RAW">RAW</a></li> 21355 </ul> 21356 </td> 21357 21358 </tr> 21359 <tr class="entries_header"> 21360 <th class="th_details" colspan="5">Details</th> 21361 </tr> 21362 <tr class="entry_cont"> 21363 <td class="entry_details" colspan="5"> 21364 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in 21365<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p> 21366<p>Each entry of this map contains three floats corresponding to the 21367hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the 21368hue shift has the lowest index.<wbr/> The map entries are stored in the key 21369in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the 21370hue divisions in the middle loop,<wbr/> and the saturation divisions in the 21371inner loop.<wbr/> All zero input saturation entries are required to have a 21372value scale factor of 1.<wbr/>0.<wbr/></p> 21373 </td> 21374 </tr> 21375 21376 21377 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21378 <!-- end of entry --> 21379 21380 21381 <tr class="entry" id="dynamic_android.sensor.profileToneCurve"> 21382 <td class="entry_name 21383 " rowspan="3"> 21384 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve 21385 </td> 21386 <td class="entry_type"> 21387 <span class="entry_type_name">float</span> 21388 <span class="entry_type_container">x</span> 21389 21390 <span class="entry_type_array"> 21391 samples x 2 21392 </span> 21393 <span class="entry_type_visibility"> [system]</span> 21394 21395 21396 21397 21398 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div> 21399 21400 21401 </td> <!-- entry_type --> 21402 21403 <td class="entry_description"> 21404 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p> 21405 </td> 21406 21407 <td class="entry_units"> 21408 </td> 21409 21410 <td class="entry_range"> 21411 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of 21412<code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last 21413sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p> 21414 </td> 21415 21416 <td class="entry_tags"> 21417 <ul class="entry_tags"> 21418 <li><a href="#tag_RAW">RAW</a></li> 21419 </ul> 21420 </td> 21421 21422 </tr> 21423 <tr class="entries_header"> 21424 <th class="th_details" colspan="5">Details</th> 21425 </tr> 21426 <tr class="entry_cont"> 21427 <td class="entry_details" colspan="5"> 21428 <p>This key contains a default tone curve that can be applied while 21429processing the image as a starting point for user adjustments.<wbr/> 21430The curve is specified as a list of value pairs in linear gamma.<wbr/> 21431The curve is interpolated using a cubic spline.<wbr/></p> 21432 </td> 21433 </tr> 21434 21435 21436 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21437 <!-- end of entry --> 21438 21439 21440 <tr class="entry" id="dynamic_android.sensor.greenSplit"> 21441 <td class="entry_name 21442 " rowspan="5"> 21443 android.<wbr/>sensor.<wbr/>green<wbr/>Split 21444 </td> 21445 <td class="entry_type"> 21446 <span class="entry_type_name">float</span> 21447 21448 <span class="entry_type_visibility"> [public]</span> 21449 21450 21451 21452 21453 21454 21455 </td> <!-- entry_type --> 21456 21457 <td class="entry_description"> 21458 <p>The worst-case divergence between Bayer green channels.<wbr/></p> 21459 </td> 21460 21461 <td class="entry_units"> 21462 </td> 21463 21464 <td class="entry_range"> 21465 <p>>= 0</p> 21466 </td> 21467 21468 <td class="entry_tags"> 21469 <ul class="entry_tags"> 21470 <li><a href="#tag_RAW">RAW</a></li> 21471 </ul> 21472 </td> 21473 21474 </tr> 21475 <tr class="entries_header"> 21476 <th class="th_details" colspan="5">Details</th> 21477 </tr> 21478 <tr class="entry_cont"> 21479 <td class="entry_details" colspan="5"> 21480 <p>This value is an estimate of the worst case split between the 21481Bayer green channels in the red and blue rows in the sensor color 21482filter array.<wbr/></p> 21483<p>The green split is calculated as follows:</p> 21484<ol> 21485<li>A 5x5 pixel (or larger) window W within the active sensor array is 21486chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer 21487mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window 21488chosen is implementation defined,<wbr/> and should be chosen to provide a 21489green split estimate that is both representative of the entire image 21490for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li> 21491<li>The arithmetic mean of the green channels from the red 21492rows (mean_<wbr/>Gr) within W is computed.<wbr/></li> 21493<li>The arithmetic mean of the green channels from the blue 21494rows (mean_<wbr/>Gb) within W is computed.<wbr/></li> 21495<li>The maximum ratio R of the two means is computed as follows: 21496<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li> 21497</ol> 21498<p>The ratio R is the green split divergence reported for this property,<wbr/> 21499which represents how much the green channels differ in the mosaic 21500pattern.<wbr/> This value is typically used to determine the treatment of 21501the green mosaic channels when demosaicing.<wbr/></p> 21502<p>The green split value can be roughly interpreted as follows:</p> 21503<ul> 21504<li>R < 1.<wbr/>03 is a negligible split (<3% divergence).<wbr/></li> 21505<li>1.<wbr/>20 <= R >= 1.<wbr/>03 will require some software 21506correction to avoid demosaic errors (3-20% divergence).<wbr/></li> 21507<li>R > 1.<wbr/>20 will require strong software correction to produce 21508a usuable image (>20% divergence).<wbr/></li> 21509</ul> 21510 </td> 21511 </tr> 21512 21513 <tr class="entries_header"> 21514 <th class="th_details" colspan="5">HAL Implementation Details</th> 21515 </tr> 21516 <tr class="entry_cont"> 21517 <td class="entry_details" colspan="5"> 21518 <p>The green split given may be a static value based on prior 21519characterization of the camera sensor using the green split 21520calculation method given here over a large,<wbr/> representative,<wbr/> sample 21521set of images.<wbr/> Other methods of calculation that produce equivalent 21522results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p> 21523 </td> 21524 </tr> 21525 21526 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21527 <!-- end of entry --> 21528 21529 21530 <tr class="entry" id="dynamic_android.sensor.testPatternData"> 21531 <td class="entry_name 21532 " rowspan="5"> 21533 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data 21534 </td> 21535 <td class="entry_type"> 21536 <span class="entry_type_name">int32</span> 21537 <span class="entry_type_container">x</span> 21538 21539 <span class="entry_type_array"> 21540 4 21541 </span> 21542 <span class="entry_type_visibility"> [public]</span> 21543 21544 21545 21546 21547 21548 21549 </td> <!-- entry_type --> 21550 21551 <td class="entry_description"> 21552 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern 21553when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> 21554 </td> 21555 21556 <td class="entry_units"> 21557 </td> 21558 21559 <td class="entry_range"> 21560 </td> 21561 21562 <td class="entry_tags"> 21563 </td> 21564 21565 </tr> 21566 <tr class="entries_header"> 21567 <th class="th_details" colspan="5">Details</th> 21568 </tr> 21569 <tr class="entry_cont"> 21570 <td class="entry_details" colspan="5"> 21571 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> 21572The camera device then uses the most significant X bits 21573that correspond to how many bits are in its Bayer raw sensor 21574output.<wbr/></p> 21575<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the 2157610 most significant bits from each color channel.<wbr/></p> 21577 </td> 21578 </tr> 21579 21580 <tr class="entries_header"> 21581 <th class="th_details" colspan="5">HAL Implementation Details</th> 21582 </tr> 21583 <tr class="entry_cont"> 21584 <td class="entry_details" colspan="5"> 21585 21586 </td> 21587 </tr> 21588 21589 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21590 <!-- end of entry --> 21591 21592 21593 <tr class="entry" id="dynamic_android.sensor.testPatternMode"> 21594 <td class="entry_name 21595 " rowspan="5"> 21596 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode 21597 </td> 21598 <td class="entry_type"> 21599 <span class="entry_type_name entry_type_name_enum">int32</span> 21600 21601 <span class="entry_type_visibility"> [public]</span> 21602 21603 21604 21605 21606 21607 <ul class="entry_type_enum"> 21608 <li> 21609 <span class="entry_type_enum_name">OFF</span> 21610 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera 21611device returns captures from the image sensor.<wbr/></p> 21612<p>This is the default if the key is not set.<wbr/></p></span> 21613 </li> 21614 <li> 21615 <span class="entry_type_enum_name">SOLID_COLOR</span> 21616 <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 21617respective color channel provided in 21618<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> 21619<p>For example:</p> 21620<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] 21621</code></pre> 21622<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> 21623<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] 21624</code></pre> 21625<p>All red pixels are 100% red.<wbr/> Only the odd green pixels 21626are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> 21627 </li> 21628 <li> 21629 <span class="entry_type_enum_name">COLOR_BARS</span> 21630 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> 21631<p>The vertical bars (left-to-right) are as follows:</p> 21632<ul> 21633<li>100% white</li> 21634<li>yellow</li> 21635<li>cyan</li> 21636<li>green</li> 21637<li>magenta</li> 21638<li>red</li> 21639<li>blue</li> 21640<li>black</li> 21641</ul> 21642<p>In general the image would look like the following:</p> 21643<pre><code>W Y C G M R B K 21644W Y C G M R B K 21645W Y C G M R B K 21646W Y C G M R B K 21647W Y C G M R B K 21648.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21649.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21650.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> 21651 21652(B = Blue,<wbr/> K = Black) 21653</code></pre> 21654<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> 21655When this is not possible,<wbr/> the bar size should be rounded 21656down to the nearest integer and the pattern can repeat 21657on the right side.<wbr/></p> 21658<p>Each bar's height must always take up the full sensor 21659pixel array height.<wbr/></p> 21660<p>Each pixel in this test pattern must be set to either 216610% intensity or 100% intensity.<wbr/></p></span> 21662 </li> 21663 <li> 21664 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> 21665 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that 21666each bar should start at its specified color at the top,<wbr/> 21667and fade to gray at the bottom.<wbr/></p> 21668<p>Furthermore each bar is further subdivided into a left and 21669right half.<wbr/> The left half should have a smooth gradient,<wbr/> 21670and the right half should have a quantized gradient.<wbr/></p> 21671<p>In particular,<wbr/> the right half's should consist of blocks of the 21672same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> 21673<p>The least significant bits in the quantized gradient should 21674be copied from the most significant bits of the smooth gradient.<wbr/></p> 21675<p>The height of each bar should always be a multiple of 128.<wbr/> 21676When this is not the case,<wbr/> the pattern should repeat at the bottom 21677of the image.<wbr/></p></span> 21678 </li> 21679 <li> 21680 <span class="entry_type_enum_name">PN9</span> 21681 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence 21682generated from a PN9 512-bit sequence (typically implemented 21683in hardware with a linear feedback shift register).<wbr/></p> 21684<p>The generator should be reset at the beginning of each frame,<wbr/> 21685and thus each subsequent raw frame with this test pattern should 21686be exactly the same as the last.<wbr/></p></span> 21687 </li> 21688 <li> 21689 <span class="entry_type_enum_name">CUSTOM1</span> 21690 <span class="entry_type_enum_value">256</span> 21691 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are 21692available only on this camera device are at least this numeric 21693value.<wbr/></p> 21694<p>All of the custom test patterns will be static 21695(that is the raw image must not vary from frame to frame).<wbr/></p></span> 21696 </li> 21697 </ul> 21698 21699 </td> <!-- entry_type --> 21700 21701 <td class="entry_description"> 21702 <p>When enabled,<wbr/> the sensor sends a test pattern instead of 21703doing a real exposure from the camera.<wbr/></p> 21704 </td> 21705 21706 <td class="entry_units"> 21707 </td> 21708 21709 <td class="entry_range"> 21710 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> 21711 </td> 21712 21713 <td class="entry_tags"> 21714 </td> 21715 21716 </tr> 21717 <tr class="entries_header"> 21718 <th class="th_details" colspan="5">Details</th> 21719 </tr> 21720 <tr class="entry_cont"> 21721 <td class="entry_details" colspan="5"> 21722 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified 21723by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should 21724work as normal.<wbr/></p> 21725<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still 21726occur (and that the test pattern remain unmodified,<wbr/> since the flash 21727would not actually affect it).<wbr/></p> 21728<p>Defaults to OFF.<wbr/></p> 21729 </td> 21730 </tr> 21731 21732 <tr class="entries_header"> 21733 <th class="th_details" colspan="5">HAL Implementation Details</th> 21734 </tr> 21735 <tr class="entry_cont"> 21736 <td class="entry_details" colspan="5"> 21737 <p>All test patterns are specified in the Bayer domain.<wbr/></p> 21738<p>The HAL may choose to substitute test patterns from the sensor 21739with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be 21740indistinguishable to the ISP whether the data came from the 21741sensor interconnect bus (such as CSI2) or memory.<wbr/></p> 21742 </td> 21743 </tr> 21744 21745 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21746 <!-- end of entry --> 21747 21748 21749 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew"> 21750 <td class="entry_name 21751 " rowspan="5"> 21752 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew 21753 </td> 21754 <td class="entry_type"> 21755 <span class="entry_type_name">int64</span> 21756 21757 <span class="entry_type_visibility"> [public]</span> 21758 21759 21760 <span class="entry_type_hwlevel">[limited] </span> 21761 21762 21763 21764 21765 </td> <!-- entry_type --> 21766 21767 <td class="entry_description"> 21768 <p>Duration between the start of first row exposure 21769and the start of last row exposure.<wbr/></p> 21770 </td> 21771 21772 <td class="entry_units"> 21773 Nanoseconds 21774 </td> 21775 21776 <td class="entry_range"> 21777 <p>>= 0 and < 21778<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p> 21779 </td> 21780 21781 <td class="entry_tags"> 21782 <ul class="entry_tags"> 21783 <li><a href="#tag_V1">V1</a></li> 21784 </ul> 21785 </td> 21786 21787 </tr> 21788 <tr class="entries_header"> 21789 <th class="th_details" colspan="5">Details</th> 21790 </tr> 21791 <tr class="entry_cont"> 21792 <td class="entry_details" colspan="5"> 21793 <p>This is the exposure time skew between the first and last 21794row exposure start times.<wbr/> The first row and the last row are 21795the first and last rows inside of the 21796<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 21797<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent 21798to the frame readout time.<wbr/></p> 21799 </td> 21800 </tr> 21801 21802 <tr class="entries_header"> 21803 <th class="th_details" colspan="5">HAL Implementation Details</th> 21804 </tr> 21805 <tr class="entry_cont"> 21806 <td class="entry_details" colspan="5"> 21807 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin 21808exposure at the same time.<wbr/></p> 21809 </td> 21810 </tr> 21811 21812 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21813 <!-- end of entry --> 21814 21815 21816 <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel"> 21817 <td class="entry_name 21818 " rowspan="5"> 21819 android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level 21820 </td> 21821 <td class="entry_type"> 21822 <span class="entry_type_name">float</span> 21823 <span class="entry_type_container">x</span> 21824 21825 <span class="entry_type_array"> 21826 4 21827 </span> 21828 <span class="entry_type_visibility"> [public]</span> 21829 21830 21831 21832 21833 <div class="entry_type_notes">2x2 raw count block</div> 21834 21835 21836 </td> <!-- entry_type --> 21837 21838 <td class="entry_description"> 21839 <p>A per-frame dynamic black level offset for each of the color filter 21840arrangement (CFA) mosaic channels.<wbr/></p> 21841 </td> 21842 21843 <td class="entry_units"> 21844 </td> 21845 21846 <td class="entry_range"> 21847 <p>>= 0 for each.<wbr/></p> 21848 </td> 21849 21850 <td class="entry_tags"> 21851 <ul class="entry_tags"> 21852 <li><a href="#tag_RAW">RAW</a></li> 21853 </ul> 21854 </td> 21855 21856 </tr> 21857 <tr class="entries_header"> 21858 <th class="th_details" colspan="5">Details</th> 21859 </tr> 21860 <tr class="entry_cont"> 21861 <td class="entry_details" colspan="5"> 21862 <p>Camera sensor black levels may vary dramatically for different 21863capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black 21864level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too 21865inaccurate to represent the actual value on a per-frame basis.<wbr/> The 21866camera device internal pipeline relies on reliable black level values 21867to process the raw images appropriately.<wbr/> To get the best image 21868quality,<wbr/> the camera device may choose to estimate the per frame black 21869level values either based on optically shielded black regions 21870(<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p> 21871<p>This key reports the camera device estimated per-frame zero light 21872value for each of the CFA mosaic channels in the camera sensor.<wbr/> The 21873<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse 21874approximation of the actual black level values.<wbr/> This value is the 21875black level used in camera device internal image processing pipeline 21876and generally more accurate than the fixed black level values.<wbr/> 21877However,<wbr/> since they are estimated values by the camera device,<wbr/> they 21878may not be as accurate as the black level values calculated from the 21879optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p> 21880<p>The values are given in the same order as channels listed for the CFA 21881layout 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 21882nth value given corresponds to the black level offset for the nth 21883color channel listed in the CFA.<wbr/></p> 21884<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is 21885available or the camera device advertises this key via 21886<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p> 21887 </td> 21888 </tr> 21889 21890 <tr class="entries_header"> 21891 <th class="th_details" colspan="5">HAL Implementation Details</th> 21892 </tr> 21893 <tr class="entry_cont"> 21894 <td class="entry_details" colspan="5"> 21895 <p>The values are given in row-column scan order,<wbr/> with the first value 21896corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> 21897 </td> 21898 </tr> 21899 21900 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21901 <!-- end of entry --> 21902 21903 21904 <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel"> 21905 <td class="entry_name 21906 " rowspan="5"> 21907 android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level 21908 </td> 21909 <td class="entry_type"> 21910 <span class="entry_type_name">int32</span> 21911 21912 <span class="entry_type_visibility"> [public]</span> 21913 21914 21915 21916 21917 21918 21919 </td> <!-- entry_type --> 21920 21921 <td class="entry_description"> 21922 <p>Maximum raw value output by sensor for this frame.<wbr/></p> 21923 </td> 21924 21925 <td class="entry_units"> 21926 </td> 21927 21928 <td class="entry_range"> 21929 <p>>= 0</p> 21930 </td> 21931 21932 <td class="entry_tags"> 21933 <ul class="entry_tags"> 21934 <li><a href="#tag_RAW">RAW</a></li> 21935 </ul> 21936 </td> 21937 21938 </tr> 21939 <tr class="entries_header"> 21940 <th class="th_details" colspan="5">Details</th> 21941 </tr> 21942 <tr class="entry_cont"> 21943 <td class="entry_details" colspan="5"> 21944 <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different 21945capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white 21946level will change accordingly.<wbr/> This key is similar to 21947<a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device 21948estimated white level for each frame.<wbr/></p> 21949<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is 21950available or the camera device advertises this key via 21951<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p> 21952 </td> 21953 </tr> 21954 21955 <tr class="entries_header"> 21956 <th class="th_details" colspan="5">HAL Implementation Details</th> 21957 </tr> 21958 <tr class="entry_cont"> 21959 <td class="entry_details" colspan="5"> 21960 <p>The full bit depth of the sensor must be available in the raw data,<wbr/> 21961so the value for linear sensors should not be significantly lower 21962than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p> 21963 </td> 21964 </tr> 21965 21966 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 21967 <!-- end of entry --> 21968 21969 21970 21971 <!-- end of kind --> 21972 </tbody> 21973 21974 <!-- end of section --> 21975 <tr><td colspan="6" id="section_shading" class="section">shading</td></tr> 21976 21977 21978 <tr><td colspan="6" class="kind">controls</td></tr> 21979 21980 <thead class="entries_header"> 21981 <tr> 21982 <th class="th_name">Property Name</th> 21983 <th class="th_type">Type</th> 21984 <th class="th_description">Description</th> 21985 <th class="th_units">Units</th> 21986 <th class="th_range">Range</th> 21987 <th class="th_tags">Tags</th> 21988 </tr> 21989 </thead> 21990 21991 <tbody> 21992 21993 21994 21995 21996 21997 21998 21999 22000 22001 22002 <tr class="entry" id="controls_android.shading.mode"> 22003 <td class="entry_name 22004 " rowspan="3"> 22005 android.<wbr/>shading.<wbr/>mode 22006 </td> 22007 <td class="entry_type"> 22008 <span class="entry_type_name entry_type_name_enum">byte</span> 22009 22010 <span class="entry_type_visibility"> [public]</span> 22011 22012 22013 <span class="entry_type_hwlevel">[full] </span> 22014 22015 22016 22017 <ul class="entry_type_enum"> 22018 <li> 22019 <span class="entry_type_enum_name">OFF</span> 22020 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 22021 </li> 22022 <li> 22023 <span class="entry_type_enum_name">FAST</span> 22024 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 22025frame rate relative to sensor raw output</p></span> 22026 </li> 22027 <li> 22028 <span class="entry_type_enum_name">HIGH_QUALITY</span> 22029 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 22030cost of possibly reduced frame rate.<wbr/></p></span> 22031 </li> 22032 </ul> 22033 22034 </td> <!-- entry_type --> 22035 22036 <td class="entry_description"> 22037 <p>Quality of lens shading correction applied 22038to the image data.<wbr/></p> 22039 </td> 22040 22041 <td class="entry_units"> 22042 </td> 22043 22044 <td class="entry_range"> 22045 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 22046 </td> 22047 22048 <td class="entry_tags"> 22049 </td> 22050 22051 </tr> 22052 <tr class="entries_header"> 22053 <th class="th_details" colspan="5">Details</th> 22054 </tr> 22055 <tr class="entry_cont"> 22056 <td class="entry_details" colspan="5"> 22057 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 22058camera device,<wbr/> and an identity lens shading map data will be provided 22059if <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 22060shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 22061the 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 22062map shown below:</p> 22063<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/> 22064 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/> 22065 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/> 22066 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/> 22067 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/> 22068 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 ] 22069</code></pre> 22070<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 22071device.<wbr/> Applications can request lens shading map data by setting 22072<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 22073shading 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 22074data will be the one applied by the camera device for this capture request.<wbr/></p> 22075<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 22076the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 22077AWB 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> 22078OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 22079to be converged before using the returned shading map data.<wbr/></p> 22080 </td> 22081 </tr> 22082 22083 22084 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22085 <!-- end of entry --> 22086 22087 22088 <tr class="entry" id="controls_android.shading.strength"> 22089 <td class="entry_name 22090 " rowspan="1"> 22091 android.<wbr/>shading.<wbr/>strength 22092 </td> 22093 <td class="entry_type"> 22094 <span class="entry_type_name">byte</span> 22095 22096 <span class="entry_type_visibility"> [system]</span> 22097 22098 22099 22100 22101 22102 22103 </td> <!-- entry_type --> 22104 22105 <td class="entry_description"> 22106 <p>Control the amount of shading correction 22107applied to the images</p> 22108 </td> 22109 22110 <td class="entry_units"> 22111 unitless: 1-10; 10 is full shading 22112 compensation 22113 </td> 22114 22115 <td class="entry_range"> 22116 </td> 22117 22118 <td class="entry_tags"> 22119 <ul class="entry_tags"> 22120 <li><a href="#tag_FUTURE">FUTURE</a></li> 22121 </ul> 22122 </td> 22123 22124 </tr> 22125 22126 22127 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22128 <!-- end of entry --> 22129 22130 22131 22132 <!-- end of kind --> 22133 </tbody> 22134 <tr><td colspan="6" class="kind">dynamic</td></tr> 22135 22136 <thead class="entries_header"> 22137 <tr> 22138 <th class="th_name">Property Name</th> 22139 <th class="th_type">Type</th> 22140 <th class="th_description">Description</th> 22141 <th class="th_units">Units</th> 22142 <th class="th_range">Range</th> 22143 <th class="th_tags">Tags</th> 22144 </tr> 22145 </thead> 22146 22147 <tbody> 22148 22149 22150 22151 22152 22153 22154 22155 22156 22157 22158 <tr class="entry" id="dynamic_android.shading.mode"> 22159 <td class="entry_name 22160 " rowspan="3"> 22161 android.<wbr/>shading.<wbr/>mode 22162 </td> 22163 <td class="entry_type"> 22164 <span class="entry_type_name entry_type_name_enum">byte</span> 22165 22166 <span class="entry_type_visibility"> [public]</span> 22167 22168 22169 <span class="entry_type_hwlevel">[full] </span> 22170 22171 22172 22173 <ul class="entry_type_enum"> 22174 <li> 22175 <span class="entry_type_enum_name">OFF</span> 22176 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span> 22177 </li> 22178 <li> 22179 <span class="entry_type_enum_name">FAST</span> 22180 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing 22181frame rate relative to sensor raw output</p></span> 22182 </li> 22183 <li> 22184 <span class="entry_type_enum_name">HIGH_QUALITY</span> 22185 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the 22186cost of possibly reduced frame rate.<wbr/></p></span> 22187 </li> 22188 </ul> 22189 22190 </td> <!-- entry_type --> 22191 22192 <td class="entry_description"> 22193 <p>Quality of lens shading correction applied 22194to the image data.<wbr/></p> 22195 </td> 22196 22197 <td class="entry_units"> 22198 </td> 22199 22200 <td class="entry_range"> 22201 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p> 22202 </td> 22203 22204 <td class="entry_tags"> 22205 </td> 22206 22207 </tr> 22208 <tr class="entries_header"> 22209 <th class="th_details" colspan="5">Details</th> 22210 </tr> 22211 <tr class="entry_cont"> 22212 <td class="entry_details" colspan="5"> 22213 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the 22214camera device,<wbr/> and an identity lens shading map data will be provided 22215if <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 22216shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/> 22217the 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 22218map shown below:</p> 22219<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/> 22220 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/> 22221 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/> 22222 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/> 22223 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/> 22224 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 ] 22225</code></pre> 22226<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera 22227device.<wbr/> Applications can request lens shading map data by setting 22228<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 22229shading 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 22230data will be the one applied by the camera device for this capture request.<wbr/></p> 22231<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore 22232the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and 22233AWB 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> 22234OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB 22235to be converged before using the returned shading map data.<wbr/></p> 22236 </td> 22237 </tr> 22238 22239 22240 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22241 <!-- end of entry --> 22242 22243 22244 22245 <!-- end of kind --> 22246 </tbody> 22247 <tr><td colspan="6" class="kind">static</td></tr> 22248 22249 <thead class="entries_header"> 22250 <tr> 22251 <th class="th_name">Property Name</th> 22252 <th class="th_type">Type</th> 22253 <th class="th_description">Description</th> 22254 <th class="th_units">Units</th> 22255 <th class="th_range">Range</th> 22256 <th class="th_tags">Tags</th> 22257 </tr> 22258 </thead> 22259 22260 <tbody> 22261 22262 22263 22264 22265 22266 22267 22268 22269 22270 22271 <tr class="entry" id="static_android.shading.availableModes"> 22272 <td class="entry_name 22273 " rowspan="5"> 22274 android.<wbr/>shading.<wbr/>available<wbr/>Modes 22275 </td> 22276 <td class="entry_type"> 22277 <span class="entry_type_name">byte</span> 22278 <span class="entry_type_container">x</span> 22279 22280 <span class="entry_type_array"> 22281 n 22282 </span> 22283 <span class="entry_type_visibility"> [public as enumList]</span> 22284 22285 22286 <span class="entry_type_hwlevel">[legacy] </span> 22287 22288 22289 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div> 22290 22291 22292 </td> <!-- entry_type --> 22293 22294 <td class="entry_description"> 22295 <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> 22296 </td> 22297 22298 <td class="entry_units"> 22299 </td> 22300 22301 <td class="entry_range"> 22302 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p> 22303 </td> 22304 22305 <td class="entry_tags"> 22306 </td> 22307 22308 </tr> 22309 <tr class="entries_header"> 22310 <th class="th_details" colspan="5">Details</th> 22311 </tr> 22312 <tr class="entry_cont"> 22313 <td class="entry_details" colspan="5"> 22314 <p>This list contains lens shading modes that can be set for the camera device.<wbr/> 22315Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always 22316list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/> 22317LEGACY devices will always only support FAST mode.<wbr/></p> 22318 </td> 22319 </tr> 22320 22321 <tr class="entries_header"> 22322 <th class="th_details" colspan="5">HAL Implementation Details</th> 22323 </tr> 22324 <tr class="entry_cont"> 22325 <td class="entry_details" colspan="5"> 22326 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is 22327available on the camera device,<wbr/> but the underlying implementation can be the same for 22328both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not 22329slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 22330 </td> 22331 </tr> 22332 22333 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22334 <!-- end of entry --> 22335 22336 22337 22338 <!-- end of kind --> 22339 </tbody> 22340 22341 <!-- end of section --> 22342 <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr> 22343 22344 22345 <tr><td colspan="6" class="kind">controls</td></tr> 22346 22347 <thead class="entries_header"> 22348 <tr> 22349 <th class="th_name">Property Name</th> 22350 <th class="th_type">Type</th> 22351 <th class="th_description">Description</th> 22352 <th class="th_units">Units</th> 22353 <th class="th_range">Range</th> 22354 <th class="th_tags">Tags</th> 22355 </tr> 22356 </thead> 22357 22358 <tbody> 22359 22360 22361 22362 22363 22364 22365 22366 22367 22368 22369 <tr class="entry" id="controls_android.statistics.faceDetectMode"> 22370 <td class="entry_name 22371 " rowspan="5"> 22372 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 22373 </td> 22374 <td class="entry_type"> 22375 <span class="entry_type_name entry_type_name_enum">byte</span> 22376 22377 <span class="entry_type_visibility"> [public]</span> 22378 22379 22380 <span class="entry_type_hwlevel">[legacy] </span> 22381 22382 22383 22384 <ul class="entry_type_enum"> 22385 <li> 22386 <span class="entry_type_enum_name">OFF</span> 22387 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 22388results.<wbr/></p></span> 22389 </li> 22390 <li> 22391 <span class="entry_type_enum_name">SIMPLE</span> 22392 <span class="entry_type_enum_optional">[optional]</span> 22393 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 22394 </li> 22395 <li> 22396 <span class="entry_type_enum_name">FULL</span> 22397 <span class="entry_type_enum_optional">[optional]</span> 22398 <span class="entry_type_enum_notes"><p>Return all face 22399metadata.<wbr/></p> 22400<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 22401 </li> 22402 </ul> 22403 22404 </td> <!-- entry_type --> 22405 22406 <td class="entry_description"> 22407 <p>Operating mode for the face detector 22408unit.<wbr/></p> 22409 </td> 22410 22411 <td class="entry_units"> 22412 </td> 22413 22414 <td class="entry_range"> 22415 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 22416 </td> 22417 22418 <td class="entry_tags"> 22419 <ul class="entry_tags"> 22420 <li><a href="#tag_BC">BC</a></li> 22421 </ul> 22422 </td> 22423 22424 </tr> 22425 <tr class="entries_header"> 22426 <th class="th_details" colspan="5">Details</th> 22427 </tr> 22428 <tr class="entry_cont"> 22429 <td class="entry_details" colspan="5"> 22430 <p>Whether face detection is enabled,<wbr/> and whether it 22431should output just the basic fields or the full set of 22432fields.<wbr/></p> 22433 </td> 22434 </tr> 22435 22436 <tr class="entries_header"> 22437 <th class="th_details" colspan="5">HAL Implementation Details</th> 22438 </tr> 22439 <tr class="entry_cont"> 22440 <td class="entry_details" colspan="5"> 22441 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 22442<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 22443FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 22444<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 22445 </td> 22446 </tr> 22447 22448 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22449 <!-- end of entry --> 22450 22451 22452 <tr class="entry" id="controls_android.statistics.histogramMode"> 22453 <td class="entry_name 22454 " rowspan="1"> 22455 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 22456 </td> 22457 <td class="entry_type"> 22458 <span class="entry_type_name entry_type_name_enum">byte</span> 22459 22460 <span class="entry_type_visibility"> [system as boolean]</span> 22461 22462 22463 22464 22465 22466 <ul class="entry_type_enum"> 22467 <li> 22468 <span class="entry_type_enum_name">OFF</span> 22469 </li> 22470 <li> 22471 <span class="entry_type_enum_name">ON</span> 22472 </li> 22473 </ul> 22474 22475 </td> <!-- entry_type --> 22476 22477 <td class="entry_description"> 22478 <p>Operating mode for histogram 22479generation</p> 22480 </td> 22481 22482 <td class="entry_units"> 22483 </td> 22484 22485 <td class="entry_range"> 22486 </td> 22487 22488 <td class="entry_tags"> 22489 <ul class="entry_tags"> 22490 <li><a href="#tag_FUTURE">FUTURE</a></li> 22491 </ul> 22492 </td> 22493 22494 </tr> 22495 22496 22497 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22498 <!-- end of entry --> 22499 22500 22501 <tr class="entry" id="controls_android.statistics.sharpnessMapMode"> 22502 <td class="entry_name 22503 " rowspan="1"> 22504 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode 22505 </td> 22506 <td class="entry_type"> 22507 <span class="entry_type_name entry_type_name_enum">byte</span> 22508 22509 <span class="entry_type_visibility"> [system as boolean]</span> 22510 22511 22512 22513 22514 22515 <ul class="entry_type_enum"> 22516 <li> 22517 <span class="entry_type_enum_name">OFF</span> 22518 </li> 22519 <li> 22520 <span class="entry_type_enum_name">ON</span> 22521 </li> 22522 </ul> 22523 22524 </td> <!-- entry_type --> 22525 22526 <td class="entry_description"> 22527 <p>Operating mode for sharpness map 22528generation</p> 22529 </td> 22530 22531 <td class="entry_units"> 22532 </td> 22533 22534 <td class="entry_range"> 22535 </td> 22536 22537 <td class="entry_tags"> 22538 <ul class="entry_tags"> 22539 <li><a href="#tag_FUTURE">FUTURE</a></li> 22540 </ul> 22541 </td> 22542 22543 </tr> 22544 22545 22546 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22547 <!-- end of entry --> 22548 22549 22550 <tr class="entry" id="controls_android.statistics.hotPixelMapMode"> 22551 <td class="entry_name 22552 " rowspan="3"> 22553 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 22554 </td> 22555 <td class="entry_type"> 22556 <span class="entry_type_name entry_type_name_enum">byte</span> 22557 22558 <span class="entry_type_visibility"> [public as boolean]</span> 22559 22560 22561 22562 22563 22564 <ul class="entry_type_enum"> 22565 <li> 22566 <span class="entry_type_enum_name">OFF</span> 22567 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 22568 </li> 22569 <li> 22570 <span class="entry_type_enum_name">ON</span> 22571 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 22572 </li> 22573 </ul> 22574 22575 </td> <!-- entry_type --> 22576 22577 <td class="entry_description"> 22578 <p>Operating mode for hot pixel map generation.<wbr/></p> 22579 </td> 22580 22581 <td class="entry_units"> 22582 </td> 22583 22584 <td class="entry_range"> 22585 <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> 22586 </td> 22587 22588 <td class="entry_tags"> 22589 <ul class="entry_tags"> 22590 <li><a href="#tag_V1">V1</a></li> 22591 <li><a href="#tag_RAW">RAW</a></li> 22592 </ul> 22593 </td> 22594 22595 </tr> 22596 <tr class="entries_header"> 22597 <th class="th_details" colspan="5">Details</th> 22598 </tr> 22599 <tr class="entry_cont"> 22600 <td class="entry_details" colspan="5"> 22601 <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/> 22602If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 22603 </td> 22604 </tr> 22605 22606 22607 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22608 <!-- end of entry --> 22609 22610 22611 <tr class="entry" id="controls_android.statistics.lensShadingMapMode"> 22612 <td class="entry_name 22613 " rowspan="3"> 22614 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 22615 </td> 22616 <td class="entry_type"> 22617 <span class="entry_type_name entry_type_name_enum">byte</span> 22618 22619 <span class="entry_type_visibility"> [public]</span> 22620 22621 22622 <span class="entry_type_hwlevel">[full] </span> 22623 22624 22625 22626 <ul class="entry_type_enum"> 22627 <li> 22628 <span class="entry_type_enum_name">OFF</span> 22629 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 22630 </li> 22631 <li> 22632 <span class="entry_type_enum_name">ON</span> 22633 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 22634 </li> 22635 </ul> 22636 22637 </td> <!-- entry_type --> 22638 22639 <td class="entry_description"> 22640 <p>Whether the camera device will output the lens 22641shading map in output result metadata.<wbr/></p> 22642 </td> 22643 22644 <td class="entry_units"> 22645 </td> 22646 22647 <td class="entry_range"> 22648 <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> 22649 </td> 22650 22651 <td class="entry_tags"> 22652 <ul class="entry_tags"> 22653 <li><a href="#tag_RAW">RAW</a></li> 22654 </ul> 22655 </td> 22656 22657 </tr> 22658 <tr class="entries_header"> 22659 <th class="th_details" colspan="5">Details</th> 22660 </tr> 22661 <tr class="entry_cont"> 22662 <td class="entry_details" colspan="5"> 22663 <p>When set to ON,<wbr/> 22664<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 22665the output result metadata.<wbr/></p> 22666<p>ON is always supported on devices with the RAW capability.<wbr/></p> 22667 </td> 22668 </tr> 22669 22670 22671 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22672 <!-- end of entry --> 22673 22674 22675 22676 <!-- end of kind --> 22677 </tbody> 22678 <tr><td colspan="6" class="kind">static</td></tr> 22679 22680 <thead class="entries_header"> 22681 <tr> 22682 <th class="th_name">Property Name</th> 22683 <th class="th_type">Type</th> 22684 <th class="th_description">Description</th> 22685 <th class="th_units">Units</th> 22686 <th class="th_range">Range</th> 22687 <th class="th_tags">Tags</th> 22688 </tr> 22689 </thead> 22690 22691 <tbody> 22692 22693 22694 22695 22696 22697 22698 22699 22700 22701 22702 22703 22704 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes"> 22705 <td class="entry_name 22706 " rowspan="3"> 22707 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes 22708 </td> 22709 <td class="entry_type"> 22710 <span class="entry_type_name">byte</span> 22711 <span class="entry_type_container">x</span> 22712 22713 <span class="entry_type_array"> 22714 n 22715 </span> 22716 <span class="entry_type_visibility"> [public as enumList]</span> 22717 22718 22719 <span class="entry_type_hwlevel">[legacy] </span> 22720 22721 22722 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div> 22723 22724 22725 </td> <!-- entry_type --> 22726 22727 <td class="entry_description"> 22728 <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 22729supported by this camera device.<wbr/></p> 22730 </td> 22731 22732 <td class="entry_units"> 22733 </td> 22734 22735 <td class="entry_range"> 22736 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p> 22737 </td> 22738 22739 <td class="entry_tags"> 22740 </td> 22741 22742 </tr> 22743 <tr class="entries_header"> 22744 <th class="th_details" colspan="5">Details</th> 22745 </tr> 22746 <tr class="entry_cont"> 22747 <td class="entry_details" colspan="5"> 22748 <p>OFF is always supported.<wbr/></p> 22749 </td> 22750 </tr> 22751 22752 22753 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22754 <!-- end of entry --> 22755 22756 22757 <tr class="entry" id="static_android.statistics.info.histogramBucketCount"> 22758 <td class="entry_name 22759 " rowspan="1"> 22760 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count 22761 </td> 22762 <td class="entry_type"> 22763 <span class="entry_type_name">int32</span> 22764 22765 <span class="entry_type_visibility"> [system]</span> 22766 22767 22768 22769 22770 22771 22772 </td> <!-- entry_type --> 22773 22774 <td class="entry_description"> 22775 <p>Number of histogram buckets 22776supported</p> 22777 </td> 22778 22779 <td class="entry_units"> 22780 </td> 22781 22782 <td class="entry_range"> 22783 <p>>= 64</p> 22784 </td> 22785 22786 <td class="entry_tags"> 22787 <ul class="entry_tags"> 22788 <li><a href="#tag_FUTURE">FUTURE</a></li> 22789 </ul> 22790 </td> 22791 22792 </tr> 22793 22794 22795 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22796 <!-- end of entry --> 22797 22798 22799 <tr class="entry" id="static_android.statistics.info.maxFaceCount"> 22800 <td class="entry_name 22801 " rowspan="1"> 22802 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count 22803 </td> 22804 <td class="entry_type"> 22805 <span class="entry_type_name">int32</span> 22806 22807 <span class="entry_type_visibility"> [public]</span> 22808 22809 22810 <span class="entry_type_hwlevel">[legacy] </span> 22811 22812 22813 22814 22815 </td> <!-- entry_type --> 22816 22817 <td class="entry_description"> 22818 <p>The maximum number of simultaneously detectable 22819faces.<wbr/></p> 22820 </td> 22821 22822 <td class="entry_units"> 22823 </td> 22824 22825 <td class="entry_range"> 22826 <p>0 for cameras without available face detection; otherwise: 22827<code>>=4</code> for LIMITED or FULL hwlevel devices or 22828<code>>0</code> for LEGACY devices.<wbr/></p> 22829 </td> 22830 22831 <td class="entry_tags"> 22832 <ul class="entry_tags"> 22833 <li><a href="#tag_BC">BC</a></li> 22834 </ul> 22835 </td> 22836 22837 </tr> 22838 22839 22840 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22841 <!-- end of entry --> 22842 22843 22844 <tr class="entry" id="static_android.statistics.info.maxHistogramCount"> 22845 <td class="entry_name 22846 " rowspan="1"> 22847 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count 22848 </td> 22849 <td class="entry_type"> 22850 <span class="entry_type_name">int32</span> 22851 22852 <span class="entry_type_visibility"> [system]</span> 22853 22854 22855 22856 22857 22858 22859 </td> <!-- entry_type --> 22860 22861 <td class="entry_description"> 22862 <p>Maximum value possible for a histogram 22863bucket</p> 22864 </td> 22865 22866 <td class="entry_units"> 22867 </td> 22868 22869 <td class="entry_range"> 22870 </td> 22871 22872 <td class="entry_tags"> 22873 <ul class="entry_tags"> 22874 <li><a href="#tag_FUTURE">FUTURE</a></li> 22875 </ul> 22876 </td> 22877 22878 </tr> 22879 22880 22881 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22882 <!-- end of entry --> 22883 22884 22885 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue"> 22886 <td class="entry_name 22887 " rowspan="1"> 22888 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value 22889 </td> 22890 <td class="entry_type"> 22891 <span class="entry_type_name">int32</span> 22892 22893 <span class="entry_type_visibility"> [system]</span> 22894 22895 22896 22897 22898 22899 22900 </td> <!-- entry_type --> 22901 22902 <td class="entry_description"> 22903 <p>Maximum value possible for a sharpness map 22904region.<wbr/></p> 22905 </td> 22906 22907 <td class="entry_units"> 22908 </td> 22909 22910 <td class="entry_range"> 22911 </td> 22912 22913 <td class="entry_tags"> 22914 <ul class="entry_tags"> 22915 <li><a href="#tag_FUTURE">FUTURE</a></li> 22916 </ul> 22917 </td> 22918 22919 </tr> 22920 22921 22922 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22923 <!-- end of entry --> 22924 22925 22926 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize"> 22927 <td class="entry_name 22928 " rowspan="1"> 22929 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size 22930 </td> 22931 <td class="entry_type"> 22932 <span class="entry_type_name">int32</span> 22933 <span class="entry_type_container">x</span> 22934 22935 <span class="entry_type_array"> 22936 2 22937 </span> 22938 <span class="entry_type_visibility"> [system as size]</span> 22939 22940 22941 22942 22943 <div class="entry_type_notes">width x height</div> 22944 22945 22946 </td> <!-- entry_type --> 22947 22948 <td class="entry_description"> 22949 <p>Dimensions of the sharpness 22950map</p> 22951 </td> 22952 22953 <td class="entry_units"> 22954 </td> 22955 22956 <td class="entry_range"> 22957 <p>Must be at least 32 x 32</p> 22958 </td> 22959 22960 <td class="entry_tags"> 22961 <ul class="entry_tags"> 22962 <li><a href="#tag_FUTURE">FUTURE</a></li> 22963 </ul> 22964 </td> 22965 22966 </tr> 22967 22968 22969 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 22970 <!-- end of entry --> 22971 22972 22973 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes"> 22974 <td class="entry_name 22975 " rowspan="3"> 22976 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes 22977 </td> 22978 <td class="entry_type"> 22979 <span class="entry_type_name">byte</span> 22980 <span class="entry_type_container">x</span> 22981 22982 <span class="entry_type_array"> 22983 n 22984 </span> 22985 <span class="entry_type_visibility"> [public as boolean]</span> 22986 22987 22988 22989 22990 <div class="entry_type_notes">list of enums</div> 22991 22992 22993 </td> <!-- entry_type --> 22994 22995 <td class="entry_description"> 22996 <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 22997supported by this camera device.<wbr/></p> 22998 </td> 22999 23000 <td class="entry_units"> 23001 </td> 23002 23003 <td class="entry_range"> 23004 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p> 23005 </td> 23006 23007 <td class="entry_tags"> 23008 <ul class="entry_tags"> 23009 <li><a href="#tag_V1">V1</a></li> 23010 <li><a href="#tag_RAW">RAW</a></li> 23011 </ul> 23012 </td> 23013 23014 </tr> 23015 <tr class="entries_header"> 23016 <th class="th_details" colspan="5">Details</th> 23017 </tr> 23018 <tr class="entry_cont"> 23019 <td class="entry_details" colspan="5"> 23020 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only 23021<code>false</code>.<wbr/></p> 23022<p>ON is always supported on devices with the RAW capability.<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="static_android.statistics.info.availableLensShadingMapModes"> 23032 <td class="entry_name 23033 " rowspan="3"> 23034 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes 23035 </td> 23036 <td class="entry_type"> 23037 <span class="entry_type_name">byte</span> 23038 <span class="entry_type_container">x</span> 23039 23040 <span class="entry_type_array"> 23041 n 23042 </span> 23043 <span class="entry_type_visibility"> [public as enumList]</span> 23044 23045 23046 23047 23048 <div class="entry_type_notes">list of enums</div> 23049 23050 23051 </td> <!-- entry_type --> 23052 23053 <td class="entry_description"> 23054 <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 23055are supported by this camera device.<wbr/></p> 23056 </td> 23057 23058 <td class="entry_units"> 23059 </td> 23060 23061 <td class="entry_range"> 23062 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p> 23063 </td> 23064 23065 <td class="entry_tags"> 23066 </td> 23067 23068 </tr> 23069 <tr class="entries_header"> 23070 <th class="th_details" colspan="5">Details</th> 23071 </tr> 23072 <tr class="entry_cont"> 23073 <td class="entry_details" colspan="5"> 23074 <p>If no lens shading map output is available for this camera device,<wbr/> this key will 23075contain only OFF.<wbr/></p> 23076<p>ON is always supported on devices with the RAW capability.<wbr/> 23077LEGACY mode devices will always only support OFF.<wbr/></p> 23078 </td> 23079 </tr> 23080 23081 23082 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23083 <!-- end of entry --> 23084 23085 23086 23087 23088 23089 23090 <!-- end of kind --> 23091 </tbody> 23092 <tr><td colspan="6" class="kind">dynamic</td></tr> 23093 23094 <thead class="entries_header"> 23095 <tr> 23096 <th class="th_name">Property Name</th> 23097 <th class="th_type">Type</th> 23098 <th class="th_description">Description</th> 23099 <th class="th_units">Units</th> 23100 <th class="th_range">Range</th> 23101 <th class="th_tags">Tags</th> 23102 </tr> 23103 </thead> 23104 23105 <tbody> 23106 23107 23108 23109 23110 23111 23112 23113 23114 23115 23116 <tr class="entry" id="dynamic_android.statistics.faceDetectMode"> 23117 <td class="entry_name 23118 " rowspan="5"> 23119 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode 23120 </td> 23121 <td class="entry_type"> 23122 <span class="entry_type_name entry_type_name_enum">byte</span> 23123 23124 <span class="entry_type_visibility"> [public]</span> 23125 23126 23127 <span class="entry_type_hwlevel">[legacy] </span> 23128 23129 23130 23131 <ul class="entry_type_enum"> 23132 <li> 23133 <span class="entry_type_enum_name">OFF</span> 23134 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture 23135results.<wbr/></p></span> 23136 </li> 23137 <li> 23138 <span class="entry_type_enum_name">SIMPLE</span> 23139 <span class="entry_type_enum_optional">[optional]</span> 23140 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span> 23141 </li> 23142 <li> 23143 <span class="entry_type_enum_name">FULL</span> 23144 <span class="entry_type_enum_optional">[optional]</span> 23145 <span class="entry_type_enum_notes"><p>Return all face 23146metadata.<wbr/></p> 23147<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span> 23148 </li> 23149 </ul> 23150 23151 </td> <!-- entry_type --> 23152 23153 <td class="entry_description"> 23154 <p>Operating mode for the face detector 23155unit.<wbr/></p> 23156 </td> 23157 23158 <td class="entry_units"> 23159 </td> 23160 23161 <td class="entry_range"> 23162 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> 23163 </td> 23164 23165 <td class="entry_tags"> 23166 <ul class="entry_tags"> 23167 <li><a href="#tag_BC">BC</a></li> 23168 </ul> 23169 </td> 23170 23171 </tr> 23172 <tr class="entries_header"> 23173 <th class="th_details" colspan="5">Details</th> 23174 </tr> 23175 <tr class="entry_cont"> 23176 <td class="entry_details" colspan="5"> 23177 <p>Whether face detection is enabled,<wbr/> and whether it 23178should output just the basic fields or the full set of 23179fields.<wbr/></p> 23180 </td> 23181 </tr> 23182 23183 <tr class="entries_header"> 23184 <th class="th_details" colspan="5">HAL Implementation Details</th> 23185 </tr> 23186 <tr class="entry_cont"> 23187 <td class="entry_details" colspan="5"> 23188 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and 23189<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/> 23190FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and 23191<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p> 23192 </td> 23193 </tr> 23194 23195 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23196 <!-- end of entry --> 23197 23198 23199 <tr class="entry" id="dynamic_android.statistics.faceIds"> 23200 <td class="entry_name 23201 " rowspan="3"> 23202 android.<wbr/>statistics.<wbr/>face<wbr/>Ids 23203 </td> 23204 <td class="entry_type"> 23205 <span class="entry_type_name">int32</span> 23206 <span class="entry_type_container">x</span> 23207 23208 <span class="entry_type_array"> 23209 n 23210 </span> 23211 <span class="entry_type_visibility"> [ndk_public]</span> 23212 23213 23214 <span class="entry_type_hwlevel">[legacy] </span> 23215 23216 23217 23218 23219 </td> <!-- entry_type --> 23220 23221 <td class="entry_description"> 23222 <p>List of unique IDs for detected faces.<wbr/></p> 23223 </td> 23224 23225 <td class="entry_units"> 23226 </td> 23227 23228 <td class="entry_range"> 23229 </td> 23230 23231 <td class="entry_tags"> 23232 <ul class="entry_tags"> 23233 <li><a href="#tag_BC">BC</a></li> 23234 </ul> 23235 </td> 23236 23237 </tr> 23238 <tr class="entries_header"> 23239 <th class="th_details" colspan="5">Details</th> 23240 </tr> 23241 <tr class="entry_cont"> 23242 <td class="entry_details" colspan="5"> 23243 <p>Each detected face is given a unique ID that is valid for as long as the face is visible 23244to the camera device.<wbr/> A face that leaves the field of view and later returns may be 23245assigned a new ID.<wbr/></p> 23246<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 23247 </td> 23248 </tr> 23249 23250 23251 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23252 <!-- end of entry --> 23253 23254 23255 <tr class="entry" id="dynamic_android.statistics.faceLandmarks"> 23256 <td class="entry_name 23257 " rowspan="3"> 23258 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks 23259 </td> 23260 <td class="entry_type"> 23261 <span class="entry_type_name">int32</span> 23262 <span class="entry_type_container">x</span> 23263 23264 <span class="entry_type_array"> 23265 n x 6 23266 </span> 23267 <span class="entry_type_visibility"> [ndk_public]</span> 23268 23269 23270 <span class="entry_type_hwlevel">[legacy] </span> 23271 23272 23273 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div> 23274 23275 23276 </td> <!-- entry_type --> 23277 23278 <td class="entry_description"> 23279 <p>List of landmarks for detected 23280faces.<wbr/></p> 23281 </td> 23282 23283 <td class="entry_units"> 23284 </td> 23285 23286 <td class="entry_range"> 23287 </td> 23288 23289 <td class="entry_tags"> 23290 <ul class="entry_tags"> 23291 <li><a href="#tag_BC">BC</a></li> 23292 </ul> 23293 </td> 23294 23295 </tr> 23296 <tr class="entries_header"> 23297 <th class="th_details" colspan="5">Details</th> 23298 </tr> 23299 <tr class="entry_cont"> 23300 <td class="entry_details" colspan="5"> 23301 <p>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 23302<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 23303<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p> 23304 </td> 23305 </tr> 23306 23307 23308 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23309 <!-- end of entry --> 23310 23311 23312 <tr class="entry" id="dynamic_android.statistics.faceRectangles"> 23313 <td class="entry_name 23314 " rowspan="3"> 23315 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles 23316 </td> 23317 <td class="entry_type"> 23318 <span class="entry_type_name">int32</span> 23319 <span class="entry_type_container">x</span> 23320 23321 <span class="entry_type_array"> 23322 n x 4 23323 </span> 23324 <span class="entry_type_visibility"> [ndk_public as rectangle]</span> 23325 23326 23327 <span class="entry_type_hwlevel">[legacy] </span> 23328 23329 23330 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div> 23331 23332 23333 </td> <!-- entry_type --> 23334 23335 <td class="entry_description"> 23336 <p>List of the bounding rectangles for detected 23337faces.<wbr/></p> 23338 </td> 23339 23340 <td class="entry_units"> 23341 </td> 23342 23343 <td class="entry_range"> 23344 </td> 23345 23346 <td class="entry_tags"> 23347 <ul class="entry_tags"> 23348 <li><a href="#tag_BC">BC</a></li> 23349 </ul> 23350 </td> 23351 23352 </tr> 23353 <tr class="entries_header"> 23354 <th class="th_details" colspan="5">Details</th> 23355 </tr> 23356 <tr class="entry_cont"> 23357 <td class="entry_details" colspan="5"> 23358 <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 23359<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p> 23360<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p> 23361 </td> 23362 </tr> 23363 23364 23365 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23366 <!-- end of entry --> 23367 23368 23369 <tr class="entry" id="dynamic_android.statistics.faceScores"> 23370 <td class="entry_name 23371 " rowspan="5"> 23372 android.<wbr/>statistics.<wbr/>face<wbr/>Scores 23373 </td> 23374 <td class="entry_type"> 23375 <span class="entry_type_name">byte</span> 23376 <span class="entry_type_container">x</span> 23377 23378 <span class="entry_type_array"> 23379 n 23380 </span> 23381 <span class="entry_type_visibility"> [ndk_public]</span> 23382 23383 23384 <span class="entry_type_hwlevel">[legacy] </span> 23385 23386 23387 23388 23389 </td> <!-- entry_type --> 23390 23391 <td class="entry_description"> 23392 <p>List of the face confidence scores for 23393detected faces</p> 23394 </td> 23395 23396 <td class="entry_units"> 23397 </td> 23398 23399 <td class="entry_range"> 23400 <p>1-100</p> 23401 </td> 23402 23403 <td class="entry_tags"> 23404 <ul class="entry_tags"> 23405 <li><a href="#tag_BC">BC</a></li> 23406 </ul> 23407 </td> 23408 23409 </tr> 23410 <tr class="entries_header"> 23411 <th class="th_details" colspan="5">Details</th> 23412 </tr> 23413 <tr class="entry_cont"> 23414 <td class="entry_details" colspan="5"> 23415 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p> 23416 </td> 23417 </tr> 23418 23419 <tr class="entries_header"> 23420 <th class="th_details" colspan="5">HAL Implementation Details</th> 23421 </tr> 23422 <tr class="entry_cont"> 23423 <td class="entry_details" colspan="5"> 23424 <p>The value should be meaningful (for example,<wbr/> setting 100 at 23425all times is illegal).<wbr/></p> 23426 </td> 23427 </tr> 23428 23429 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23430 <!-- end of entry --> 23431 23432 23433 <tr class="entry" id="dynamic_android.statistics.faces"> 23434 <td class="entry_name 23435 " rowspan="3"> 23436 android.<wbr/>statistics.<wbr/>faces 23437 </td> 23438 <td class="entry_type"> 23439 <span class="entry_type_name">int32</span> 23440 <span class="entry_type_container">x</span> 23441 23442 <span class="entry_type_array"> 23443 n 23444 </span> 23445 <span class="entry_type_visibility"> [java_public as face]</span> 23446 23447 <span class="entry_type_synthetic">[synthetic] </span> 23448 23449 <span class="entry_type_hwlevel">[legacy] </span> 23450 23451 23452 23453 23454 </td> <!-- entry_type --> 23455 23456 <td class="entry_description"> 23457 <p>List of the faces detected through camera face detection 23458in this capture.<wbr/></p> 23459 </td> 23460 23461 <td class="entry_units"> 23462 </td> 23463 23464 <td class="entry_range"> 23465 </td> 23466 23467 <td class="entry_tags"> 23468 </td> 23469 23470 </tr> 23471 <tr class="entries_header"> 23472 <th class="th_details" colspan="5">Details</th> 23473 </tr> 23474 <tr class="entry_cont"> 23475 <td class="entry_details" colspan="5"> 23476 <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> 23477 </td> 23478 </tr> 23479 23480 23481 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23482 <!-- end of entry --> 23483 23484 23485 <tr class="entry" id="dynamic_android.statistics.histogram"> 23486 <td class="entry_name 23487 " rowspan="3"> 23488 android.<wbr/>statistics.<wbr/>histogram 23489 </td> 23490 <td class="entry_type"> 23491 <span class="entry_type_name">int32</span> 23492 <span class="entry_type_container">x</span> 23493 23494 <span class="entry_type_array"> 23495 n x 3 23496 </span> 23497 <span class="entry_type_visibility"> [system]</span> 23498 23499 23500 23501 23502 <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> 23503 23504 23505 </td> <!-- entry_type --> 23506 23507 <td class="entry_description"> 23508 <p>A 3-channel histogram based on the raw 23509sensor data</p> 23510 </td> 23511 23512 <td class="entry_units"> 23513 </td> 23514 23515 <td class="entry_range"> 23516 </td> 23517 23518 <td class="entry_tags"> 23519 <ul class="entry_tags"> 23520 <li><a href="#tag_FUTURE">FUTURE</a></li> 23521 </ul> 23522 </td> 23523 23524 </tr> 23525 <tr class="entries_header"> 23526 <th class="th_details" colspan="5">Details</th> 23527 </tr> 23528 <tr class="entry_cont"> 23529 <td class="entry_details" colspan="5"> 23530 <p>The k'th bucket (0-based) covers the input range 23531(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/> 23532(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is 23533supported,<wbr/> all channels should have the same data</p> 23534 </td> 23535 </tr> 23536 23537 23538 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23539 <!-- end of entry --> 23540 23541 23542 <tr class="entry" id="dynamic_android.statistics.histogramMode"> 23543 <td class="entry_name 23544 " rowspan="1"> 23545 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode 23546 </td> 23547 <td class="entry_type"> 23548 <span class="entry_type_name entry_type_name_enum">byte</span> 23549 23550 <span class="entry_type_visibility"> [system as boolean]</span> 23551 23552 23553 23554 23555 23556 <ul class="entry_type_enum"> 23557 <li> 23558 <span class="entry_type_enum_name">OFF</span> 23559 </li> 23560 <li> 23561 <span class="entry_type_enum_name">ON</span> 23562 </li> 23563 </ul> 23564 23565 </td> <!-- entry_type --> 23566 23567 <td class="entry_description"> 23568 <p>Operating mode for histogram 23569generation</p> 23570 </td> 23571 23572 <td class="entry_units"> 23573 </td> 23574 23575 <td class="entry_range"> 23576 </td> 23577 23578 <td class="entry_tags"> 23579 <ul class="entry_tags"> 23580 <li><a href="#tag_FUTURE">FUTURE</a></li> 23581 </ul> 23582 </td> 23583 23584 </tr> 23585 23586 23587 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23588 <!-- end of entry --> 23589 23590 23591 <tr class="entry" id="dynamic_android.statistics.sharpnessMap"> 23592 <td class="entry_name 23593 " rowspan="3"> 23594 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map 23595 </td> 23596 <td class="entry_type"> 23597 <span class="entry_type_name">int32</span> 23598 <span class="entry_type_container">x</span> 23599 23600 <span class="entry_type_array"> 23601 n x m x 3 23602 </span> 23603 <span class="entry_type_visibility"> [system]</span> 23604 23605 23606 23607 23608 <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> 23609 23610 23611 </td> <!-- entry_type --> 23612 23613 <td class="entry_description"> 23614 <p>A 3-channel sharpness map,<wbr/> based on the raw 23615sensor data</p> 23616 </td> 23617 23618 <td class="entry_units"> 23619 </td> 23620 23621 <td class="entry_range"> 23622 </td> 23623 23624 <td class="entry_tags"> 23625 <ul class="entry_tags"> 23626 <li><a href="#tag_FUTURE">FUTURE</a></li> 23627 </ul> 23628 </td> 23629 23630 </tr> 23631 <tr class="entries_header"> 23632 <th class="th_details" colspan="5">Details</th> 23633 </tr> 23634 <tr class="entry_cont"> 23635 <td class="entry_details" colspan="5"> 23636 <p>If only a monochrome sharpness map is supported,<wbr/> 23637all channels should have the same data</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.sharpnessMapMode"> 23647 <td class="entry_name 23648 " rowspan="1"> 23649 android.<wbr/>statistics.<wbr/>sharpness<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"> [system 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 </li> 23664 <li> 23665 <span class="entry_type_enum_name">ON</span> 23666 </li> 23667 </ul> 23668 23669 </td> <!-- entry_type --> 23670 23671 <td class="entry_description"> 23672 <p>Operating mode for sharpness map 23673generation</p> 23674 </td> 23675 23676 <td class="entry_units"> 23677 </td> 23678 23679 <td class="entry_range"> 23680 </td> 23681 23682 <td class="entry_tags"> 23683 <ul class="entry_tags"> 23684 <li><a href="#tag_FUTURE">FUTURE</a></li> 23685 </ul> 23686 </td> 23687 23688 </tr> 23689 23690 23691 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23692 <!-- end of entry --> 23693 23694 23695 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap"> 23696 <td class="entry_name 23697 " rowspan="3"> 23698 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map 23699 </td> 23700 <td class="entry_type"> 23701 <span class="entry_type_name">byte</span> 23702 23703 <span class="entry_type_visibility"> [java_public as lensShadingMap]</span> 23704 23705 23706 <span class="entry_type_hwlevel">[full] </span> 23707 23708 23709 23710 23711 </td> <!-- entry_type --> 23712 23713 <td class="entry_description"> 23714 <p>The shading map is a low-resolution floating-point map 23715that lists the coefficients used to correct for vignetting,<wbr/> for each 23716Bayer color channel.<wbr/></p> 23717 </td> 23718 23719 <td class="entry_units"> 23720 </td> 23721 23722 <td class="entry_range"> 23723 <p>Each gain factor is >= 1</p> 23724 </td> 23725 23726 <td class="entry_tags"> 23727 </td> 23728 23729 </tr> 23730 <tr class="entries_header"> 23731 <th class="th_details" colspan="5">Details</th> 23732 </tr> 23733 <tr class="entry_cont"> 23734 <td class="entry_details" colspan="5"> 23735 <p>The map provided here is the same map that is used by the camera device to 23736correct both color shading and vignetting for output non-RAW images.<wbr/></p> 23737<p>When there is no lens shading correction applied to RAW 23738output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code> 23739false),<wbr/> this map is the complete lens shading correction 23740map; when there is some lens shading correction applied to 23741the RAW output image (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a><code>==</code> true),<wbr/> this map reports the remaining lens shading 23742correction map that needs to be applied to get shading 23743corrected images that match the camera device's output for 23744non-RAW formats.<wbr/></p> 23745<p>For a complete shading correction map,<wbr/> the least shaded 23746section of the image will have a gain factor of 1; all 23747other sections will have gains above 1.<wbr/></p> 23748<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 23749will take into account the colorCorrection settings.<wbr/></p> 23750<p>The shading map is for the entire active pixel array,<wbr/> and is not 23751affected by the crop region specified in the request.<wbr/> Each shading map 23752entry is the value of the shading compensation map over a specific 23753pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 23754map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 23755(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 23756pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 23757The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 23758<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 23759channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 23760The shading map is stored in a fully interleaved format.<wbr/></p> 23761<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/> 23762and will be smaller than 64x64.<wbr/></p> 23763<p>As an example,<wbr/> given a very small map defined as:</p> 23764<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ] 23765values = 23766[ 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/> 23767 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/> 23768 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/> 23769 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/> 23770 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/> 23771 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 ] 23772</code></pre> 23773<p>The low-resolution scaling map images for each channel are 23774(displayed using nearest-neighbor interpolation):</p> 23775<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 23776<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 23777<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 23778<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 23779<p>As a visualization only,<wbr/> inverting the full-color map to recover an 23780image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 23781<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 23782 </td> 23783 </tr> 23784 23785 23786 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23787 <!-- end of entry --> 23788 23789 23790 <tr class="entry" id="dynamic_android.statistics.lensShadingMap"> 23791 <td class="entry_name 23792 " rowspan="5"> 23793 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map 23794 </td> 23795 <td class="entry_type"> 23796 <span class="entry_type_name">float</span> 23797 <span class="entry_type_container">x</span> 23798 23799 <span class="entry_type_array"> 23800 4 x n x m 23801 </span> 23802 <span class="entry_type_visibility"> [ndk_public]</span> 23803 23804 23805 <span class="entry_type_hwlevel">[full] </span> 23806 23807 23808 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div> 23809 23810 23811 </td> <!-- entry_type --> 23812 23813 <td class="entry_description"> 23814 <p>The shading map is a low-resolution floating-point map 23815that lists the coefficients used to correct for vignetting and color shading,<wbr/> 23816for each Bayer color channel of RAW image data.<wbr/></p> 23817 </td> 23818 23819 <td class="entry_units"> 23820 </td> 23821 23822 <td class="entry_range"> 23823 <p>Each gain factor is >= 1</p> 23824 </td> 23825 23826 <td class="entry_tags"> 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>The map provided here is the same map that is used by the camera device to 23836correct both color shading and vignetting for output non-RAW images.<wbr/></p> 23837<p>When there is no lens shading correction applied to RAW 23838output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code> 23839false),<wbr/> this map is the complete lens shading correction 23840map; when there is some lens shading correction applied to 23841the RAW output image (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a><code>==</code> true),<wbr/> this map reports the remaining lens shading 23842correction map that needs to be applied to get shading 23843corrected images that match the camera device's output for 23844non-RAW formats.<wbr/></p> 23845<p>For a complete shading correction map,<wbr/> the least shaded 23846section of the image will have a gain factor of 1; all 23847other sections will have gains above 1.<wbr/></p> 23848<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map 23849will take into account the colorCorrection settings.<wbr/></p> 23850<p>The shading map is for the entire active pixel array,<wbr/> and is not 23851affected by the crop region specified in the request.<wbr/> Each shading map 23852entry is the value of the shading compensation map over a specific 23853pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading 23854map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry 23855(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at 23856pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> 23857The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> 23858<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green 23859channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> 23860The shading map is stored in a fully interleaved format,<wbr/> and its size 23861is 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> 23862<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/> 23863and will be smaller than 64x64.<wbr/></p> 23864<p>As an example,<wbr/> given a very small map defined as:</p> 23865<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] 23866<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = 23867[ 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/> 23868 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/> 23869 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/> 23870 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/> 23871 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/> 23872 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 ] 23873</code></pre> 23874<p>The low-resolution scaling map images for each channel are 23875(displayed using nearest-neighbor interpolation):</p> 23876<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> 23877<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> 23878<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> 23879<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> 23880<p>As a visualization only,<wbr/> inverting the full-color map to recover an 23881image of a gray wall (using bicubic interpolation for visual quality) 23882as captured by the sensor gives:</p> 23883<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> 23884<p>Note that the RAW image data might be subject to lens shading 23885correction not reported on this map.<wbr/> Query 23886<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 23887to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> 23888is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading 23889correction.<wbr/> In the case full lens shading correction is applied to RAW 23890images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/> 23891In other words,<wbr/> the map reported in this key is the remaining lens shading 23892that needs to be applied on the RAW image to get images without lens shading 23893artifacts.<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 23894formats.<wbr/></p> 23895 </td> 23896 </tr> 23897 23898 <tr class="entries_header"> 23899 <th class="th_details" colspan="5">HAL Implementation Details</th> 23900 </tr> 23901 <tr class="entry_cont"> 23902 <td class="entry_details" colspan="5"> 23903 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/> 23904When AE and AWB are in AUTO modes 23905(<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 23906may have all the information it need to generate most accurate lens shading map.<wbr/> When 23907AE or AWB are in manual mode 23908(<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 23909may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid 23910generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with 23911the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p> 23912 </td> 23913 </tr> 23914 23915 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23916 <!-- end of entry --> 23917 23918 23919 <tr class="entry" id="dynamic_android.statistics.predictedColorGains"> 23920 <td class="entry_name 23921 entry_name_deprecated 23922 " rowspan="3"> 23923 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains 23924 </td> 23925 <td class="entry_type"> 23926 <span class="entry_type_name">float</span> 23927 <span class="entry_type_container">x</span> 23928 23929 <span class="entry_type_array"> 23930 4 23931 </span> 23932 <span class="entry_type_visibility"> [hidden]</span> 23933 23934 23935 23936 <span class="entry_type_deprecated">[deprecated] </span> 23937 23938 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div> 23939 23940 23941 </td> <!-- entry_type --> 23942 23943 <td class="entry_description"> 23944 <p>The best-fit color channel gains calculated 23945by the camera device's statistics units for the current output frame.<wbr/></p> 23946 </td> 23947 23948 <td class="entry_units"> 23949 </td> 23950 23951 <td class="entry_range"> 23952 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 23953 </td> 23954 23955 <td class="entry_tags"> 23956 </td> 23957 23958 </tr> 23959 <tr class="entries_header"> 23960 <th class="th_details" colspan="5">Details</th> 23961 </tr> 23962 <tr class="entry_cont"> 23963 <td class="entry_details" colspan="5"> 23964 <p>This may be different than the gains used for this frame,<wbr/> 23965since statistics processing on data from a new frame 23966typically completes after the transform has already been 23967applied to that frame.<wbr/></p> 23968<p>The 4 channel gains are defined in Bayer domain,<wbr/> 23969see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p> 23970<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 23971regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 23972 </td> 23973 </tr> 23974 23975 23976 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 23977 <!-- end of entry --> 23978 23979 23980 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform"> 23981 <td class="entry_name 23982 entry_name_deprecated 23983 " rowspan="3"> 23984 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform 23985 </td> 23986 <td class="entry_type"> 23987 <span class="entry_type_name">rational</span> 23988 <span class="entry_type_container">x</span> 23989 23990 <span class="entry_type_array"> 23991 3 x 3 23992 </span> 23993 <span class="entry_type_visibility"> [hidden]</span> 23994 23995 23996 23997 <span class="entry_type_deprecated">[deprecated] </span> 23998 23999 <div class="entry_type_notes">3x3 rational matrix in row-major order</div> 24000 24001 24002 </td> <!-- entry_type --> 24003 24004 <td class="entry_description"> 24005 <p>The best-fit color transform matrix estimate 24006calculated by the camera device's statistics units for the current 24007output frame.<wbr/></p> 24008 </td> 24009 24010 <td class="entry_units"> 24011 </td> 24012 24013 <td class="entry_range"> 24014 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 24015 </td> 24016 24017 <td class="entry_tags"> 24018 </td> 24019 24020 </tr> 24021 <tr class="entries_header"> 24022 <th class="th_details" colspan="5">Details</th> 24023 </tr> 24024 <tr class="entry_cont"> 24025 <td class="entry_details" colspan="5"> 24026 <p>The camera device will provide the estimate from its 24027statistics unit on the white balance transforms to use 24028for the next frame.<wbr/> These are the values the camera device believes 24029are the best fit for the current output frame.<wbr/> This may 24030be different than the transform used for this frame,<wbr/> since 24031statistics processing on data from a new frame typically 24032completes after the transform has already been applied to 24033that frame.<wbr/></p> 24034<p>These estimates must be provided for all frames,<wbr/> even if 24035capture settings and color transforms are set by the application.<wbr/></p> 24036<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/> 24037regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> 24038 </td> 24039 </tr> 24040 24041 24042 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24043 <!-- end of entry --> 24044 24045 24046 <tr class="entry" id="dynamic_android.statistics.sceneFlicker"> 24047 <td class="entry_name 24048 " rowspan="3"> 24049 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker 24050 </td> 24051 <td class="entry_type"> 24052 <span class="entry_type_name entry_type_name_enum">byte</span> 24053 24054 <span class="entry_type_visibility"> [public]</span> 24055 24056 24057 <span class="entry_type_hwlevel">[full] </span> 24058 24059 24060 24061 <ul class="entry_type_enum"> 24062 <li> 24063 <span class="entry_type_enum_name">NONE</span> 24064 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination 24065in the current scene.<wbr/></p></span> 24066 </li> 24067 <li> 24068 <span class="entry_type_enum_name">50HZ</span> 24069 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz 24070in the current scene.<wbr/></p></span> 24071 </li> 24072 <li> 24073 <span class="entry_type_enum_name">60HZ</span> 24074 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz 24075in the current scene.<wbr/></p></span> 24076 </li> 24077 </ul> 24078 24079 </td> <!-- entry_type --> 24080 24081 <td class="entry_description"> 24082 <p>The camera device estimated scene illumination lighting 24083frequency.<wbr/></p> 24084 </td> 24085 24086 <td class="entry_units"> 24087 </td> 24088 24089 <td class="entry_range"> 24090 </td> 24091 24092 <td class="entry_tags"> 24093 </td> 24094 24095 </tr> 24096 <tr class="entries_header"> 24097 <th class="th_details" colspan="5">Details</th> 24098 </tr> 24099 <tr class="entry_cont"> 24100 <td class="entry_details" colspan="5"> 24101 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate 24102that depends on the local utility power standards.<wbr/> This flicker must be 24103accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> 24104The camera device uses this entry to tell the application what the scene 24105illuminant frequency is.<wbr/></p> 24106<p>When manual exposure control is enabled 24107(<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> == 24108OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform 24109antibanding,<wbr/> and the application can ensure it selects 24110exposure times that do not cause banding issues by looking 24111into this metadata field.<wbr/> See 24112<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p> 24113<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p> 24114 </td> 24115 </tr> 24116 24117 24118 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24119 <!-- end of entry --> 24120 24121 24122 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode"> 24123 <td class="entry_name 24124 " rowspan="3"> 24125 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode 24126 </td> 24127 <td class="entry_type"> 24128 <span class="entry_type_name entry_type_name_enum">byte</span> 24129 24130 <span class="entry_type_visibility"> [public as boolean]</span> 24131 24132 24133 24134 24135 24136 <ul class="entry_type_enum"> 24137 <li> 24138 <span class="entry_type_enum_name">OFF</span> 24139 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span> 24140 </li> 24141 <li> 24142 <span class="entry_type_enum_name">ON</span> 24143 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span> 24144 </li> 24145 </ul> 24146 24147 </td> <!-- entry_type --> 24148 24149 <td class="entry_description"> 24150 <p>Operating mode for hot pixel map generation.<wbr/></p> 24151 </td> 24152 24153 <td class="entry_units"> 24154 </td> 24155 24156 <td class="entry_range"> 24157 <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> 24158 </td> 24159 24160 <td class="entry_tags"> 24161 <ul class="entry_tags"> 24162 <li><a href="#tag_V1">V1</a></li> 24163 <li><a href="#tag_RAW">RAW</a></li> 24164 </ul> 24165 </td> 24166 24167 </tr> 24168 <tr class="entries_header"> 24169 <th class="th_details" colspan="5">Details</th> 24170 </tr> 24171 <tr class="entry_cont"> 24172 <td class="entry_details" colspan="5"> 24173 <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/> 24174If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p> 24175 </td> 24176 </tr> 24177 24178 24179 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24180 <!-- end of entry --> 24181 24182 24183 <tr class="entry" id="dynamic_android.statistics.hotPixelMap"> 24184 <td class="entry_name 24185 " rowspan="5"> 24186 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map 24187 </td> 24188 <td class="entry_type"> 24189 <span class="entry_type_name">int32</span> 24190 <span class="entry_type_container">x</span> 24191 24192 <span class="entry_type_array"> 24193 2 x n 24194 </span> 24195 <span class="entry_type_visibility"> [public as point]</span> 24196 24197 24198 24199 24200 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div> 24201 24202 24203 </td> <!-- entry_type --> 24204 24205 <td class="entry_description"> 24206 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p> 24207 </td> 24208 24209 <td class="entry_units"> 24210 </td> 24211 24212 <td class="entry_range"> 24213 <p>n <= number of pixels on the sensor.<wbr/> 24214The <code>(x,<wbr/> y)</code> coordinates must be bounded by 24215<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p> 24216 </td> 24217 24218 <td class="entry_tags"> 24219 <ul class="entry_tags"> 24220 <li><a href="#tag_V1">V1</a></li> 24221 <li><a href="#tag_RAW">RAW</a></li> 24222 </ul> 24223 </td> 24224 24225 </tr> 24226 <tr class="entries_header"> 24227 <th class="th_details" colspan="5">Details</th> 24228 </tr> 24229 <tr class="entry_cont"> 24230 <td class="entry_details" colspan="5"> 24231 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and 24232<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and 24233bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and 24234height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> 24235This may include hot pixels that lie outside of the active array 24236bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p> 24237 </td> 24238 </tr> 24239 24240 <tr class="entries_header"> 24241 <th class="th_details" colspan="5">HAL Implementation Details</th> 24242 </tr> 24243 <tr class="entry_cont"> 24244 <td class="entry_details" colspan="5"> 24245 <p>A hotpixel map contains the coordinates of pixels on the camera 24246sensor that do report valid values (usually due to defects in 24247the camera sensor).<wbr/> This includes pixels that are stuck at certain 24248values,<wbr/> or have a response that does not accuractly encode the 24249incoming light from the scene.<wbr/></p> 24250<p>To avoid performance issues,<wbr/> there should be significantly fewer hot 24251pixels than actual pixels on the camera sensor.<wbr/></p> 24252 </td> 24253 </tr> 24254 24255 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24256 <!-- end of entry --> 24257 24258 24259 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode"> 24260 <td class="entry_name 24261 " rowspan="3"> 24262 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode 24263 </td> 24264 <td class="entry_type"> 24265 <span class="entry_type_name entry_type_name_enum">byte</span> 24266 24267 <span class="entry_type_visibility"> [public]</span> 24268 24269 24270 <span class="entry_type_hwlevel">[full] </span> 24271 24272 24273 24274 <ul class="entry_type_enum"> 24275 <li> 24276 <span class="entry_type_enum_name">OFF</span> 24277 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span> 24278 </li> 24279 <li> 24280 <span class="entry_type_enum_name">ON</span> 24281 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span> 24282 </li> 24283 </ul> 24284 24285 </td> <!-- entry_type --> 24286 24287 <td class="entry_description"> 24288 <p>Whether the camera device will output the lens 24289shading map in output result metadata.<wbr/></p> 24290 </td> 24291 24292 <td class="entry_units"> 24293 </td> 24294 24295 <td class="entry_range"> 24296 <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> 24297 </td> 24298 24299 <td class="entry_tags"> 24300 <ul class="entry_tags"> 24301 <li><a href="#tag_RAW">RAW</a></li> 24302 </ul> 24303 </td> 24304 24305 </tr> 24306 <tr class="entries_header"> 24307 <th class="th_details" colspan="5">Details</th> 24308 </tr> 24309 <tr class="entry_cont"> 24310 <td class="entry_details" colspan="5"> 24311 <p>When set to ON,<wbr/> 24312<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in 24313the output result metadata.<wbr/></p> 24314<p>ON is always supported on devices with the RAW capability.<wbr/></p> 24315 </td> 24316 </tr> 24317 24318 24319 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24320 <!-- end of entry --> 24321 24322 24323 24324 <!-- end of kind --> 24325 </tbody> 24326 24327 <!-- end of section --> 24328 <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr> 24329 24330 24331 <tr><td colspan="6" class="kind">controls</td></tr> 24332 24333 <thead class="entries_header"> 24334 <tr> 24335 <th class="th_name">Property Name</th> 24336 <th class="th_type">Type</th> 24337 <th class="th_description">Description</th> 24338 <th class="th_units">Units</th> 24339 <th class="th_range">Range</th> 24340 <th class="th_tags">Tags</th> 24341 </tr> 24342 </thead> 24343 24344 <tbody> 24345 24346 24347 24348 24349 24350 24351 24352 24353 24354 24355 <tr class="entry" id="controls_android.tonemap.curveBlue"> 24356 <td class="entry_name 24357 " rowspan="3"> 24358 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 24359 </td> 24360 <td class="entry_type"> 24361 <span class="entry_type_name">float</span> 24362 <span class="entry_type_container">x</span> 24363 24364 <span class="entry_type_array"> 24365 n x 2 24366 </span> 24367 <span class="entry_type_visibility"> [ndk_public]</span> 24368 24369 24370 <span class="entry_type_hwlevel">[full] </span> 24371 24372 24373 <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> 24374 24375 24376 </td> <!-- entry_type --> 24377 24378 <td class="entry_description"> 24379 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 24380channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24381CONTRAST_<wbr/>CURVE.<wbr/></p> 24382 </td> 24383 24384 <td class="entry_units"> 24385 </td> 24386 24387 <td class="entry_range"> 24388 </td> 24389 24390 <td class="entry_tags"> 24391 </td> 24392 24393 </tr> 24394 <tr class="entries_header"> 24395 <th class="th_details" colspan="5">Details</th> 24396 </tr> 24397 <tr class="entry_cont"> 24398 <td class="entry_details" colspan="5"> 24399 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 24400 </td> 24401 </tr> 24402 24403 24404 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24405 <!-- end of entry --> 24406 24407 24408 <tr class="entry" id="controls_android.tonemap.curveGreen"> 24409 <td class="entry_name 24410 " rowspan="3"> 24411 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 24412 </td> 24413 <td class="entry_type"> 24414 <span class="entry_type_name">float</span> 24415 <span class="entry_type_container">x</span> 24416 24417 <span class="entry_type_array"> 24418 n x 2 24419 </span> 24420 <span class="entry_type_visibility"> [ndk_public]</span> 24421 24422 24423 <span class="entry_type_hwlevel">[full] </span> 24424 24425 24426 <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> 24427 24428 24429 </td> <!-- entry_type --> 24430 24431 <td class="entry_description"> 24432 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 24433channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24434CONTRAST_<wbr/>CURVE.<wbr/></p> 24435 </td> 24436 24437 <td class="entry_units"> 24438 </td> 24439 24440 <td class="entry_range"> 24441 </td> 24442 24443 <td class="entry_tags"> 24444 </td> 24445 24446 </tr> 24447 <tr class="entries_header"> 24448 <th class="th_details" colspan="5">Details</th> 24449 </tr> 24450 <tr class="entry_cont"> 24451 <td class="entry_details" colspan="5"> 24452 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 24453 </td> 24454 </tr> 24455 24456 24457 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24458 <!-- end of entry --> 24459 24460 24461 <tr class="entry" id="controls_android.tonemap.curveRed"> 24462 <td class="entry_name 24463 " rowspan="5"> 24464 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 24465 </td> 24466 <td class="entry_type"> 24467 <span class="entry_type_name">float</span> 24468 <span class="entry_type_container">x</span> 24469 24470 <span class="entry_type_array"> 24471 n x 2 24472 </span> 24473 <span class="entry_type_visibility"> [ndk_public]</span> 24474 24475 24476 <span class="entry_type_hwlevel">[full] </span> 24477 24478 24479 <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> 24480 24481 24482 </td> <!-- entry_type --> 24483 24484 <td class="entry_description"> 24485 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 24486channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24487CONTRAST_<wbr/>CURVE.<wbr/></p> 24488 </td> 24489 24490 <td class="entry_units"> 24491 </td> 24492 24493 <td class="entry_range"> 24494 <p>0-1 on both input and output coordinates,<wbr/> normalized 24495as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 24496 </td> 24497 24498 <td class="entry_tags"> 24499 </td> 24500 24501 </tr> 24502 <tr class="entries_header"> 24503 <th class="th_details" colspan="5">Details</th> 24504 </tr> 24505 <tr class="entry_cont"> 24506 <td class="entry_details" colspan="5"> 24507 <p>Each channel's curve is defined by an array of control points:</p> 24508<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 24509 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 245102 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 24511<p>These are sorted in order of increasing <code>Pin</code>; it is 24512required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 24513define a complete mapping.<wbr/> For input values between control points,<wbr/> 24514the camera device must linearly interpolate between the control 24515points.<wbr/></p> 24516<p>Each curve can have an independent number of points,<wbr/> and the number 24517of points can be less than max (that is,<wbr/> the request doesn't have to 24518always provide a curve with number of points equivalent to 24519<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 24520<p>A few examples,<wbr/> and their corresponding graphical mappings; these 24521only specify the red channel and the precision is limited to 4 24522digits,<wbr/> for conciseness.<wbr/></p> 24523<p>Linear mapping:</p> 24524<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 ] 24525</code></pre> 24526<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 24527<p>Invert mapping:</p> 24528<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 ] 24529</code></pre> 24530<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 24531<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 24532<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 24533 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/> 24534 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/> 24535 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/> 24536 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 ] 24537</code></pre> 24538<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 24539<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 24540<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 24541 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/> 24542 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/> 24543 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/> 24544 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 ] 24545</code></pre> 24546<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></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>For good quality of mapping,<wbr/> at least 128 control points are 24556preferred.<wbr/></p> 24557<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 24558control points used as are available.<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 <tr class="entry" id="controls_android.tonemap.curve"> 24567 <td class="entry_name 24568 " rowspan="5"> 24569 android.<wbr/>tonemap.<wbr/>curve 24570 </td> 24571 <td class="entry_type"> 24572 <span class="entry_type_name">float</span> 24573 24574 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span> 24575 24576 <span class="entry_type_synthetic">[synthetic] </span> 24577 24578 <span class="entry_type_hwlevel">[full] </span> 24579 24580 24581 24582 24583 </td> <!-- entry_type --> 24584 24585 <td class="entry_description"> 24586 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 24587is CONTRAST_<wbr/>CURVE.<wbr/></p> 24588 </td> 24589 24590 <td class="entry_units"> 24591 </td> 24592 24593 <td class="entry_range"> 24594 </td> 24595 24596 <td class="entry_tags"> 24597 </td> 24598 24599 </tr> 24600 <tr class="entries_header"> 24601 <th class="th_details" colspan="5">Details</th> 24602 </tr> 24603 <tr class="entry_cont"> 24604 <td class="entry_details" colspan="5"> 24605 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 24606channels respectively.<wbr/> The following example uses the red channel as an 24607example.<wbr/> The same logic applies to green and blue channel.<wbr/> 24608Each channel's curve is defined by an array of control points:</p> 24609<pre><code>curveRed = 24610 [ 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) ] 246112 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 24612<p>These are sorted in order of increasing <code>Pin</code>; it is always 24613guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 24614define a complete mapping.<wbr/> For input values between control points,<wbr/> 24615the camera device must linearly interpolate between the control 24616points.<wbr/></p> 24617<p>Each curve can have an independent number of points,<wbr/> and the number 24618of points can be less than max (that is,<wbr/> the request doesn't have to 24619always provide a curve with number of points equivalent to 24620<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 24621<p>A few examples,<wbr/> and their corresponding graphical mappings; these 24622only specify the red channel and the precision is limited to 4 24623digits,<wbr/> for conciseness.<wbr/></p> 24624<p>Linear mapping:</p> 24625<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 24626</code></pre> 24627<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 24628<p>Invert mapping:</p> 24629<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 24630</code></pre> 24631<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 24632<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 24633<pre><code>curveRed = [ 24634 (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/> 24635 (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/> 24636 (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/> 24637 (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) ] 24638</code></pre> 24639<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 24640<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 24641<pre><code>curveRed = [ 24642 (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/> 24643 (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/> 24644 (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/> 24645 (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) ] 24646</code></pre> 24647<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24648 </td> 24649 </tr> 24650 24651 <tr class="entries_header"> 24652 <th class="th_details" colspan="5">HAL Implementation Details</th> 24653 </tr> 24654 <tr class="entry_cont"> 24655 <td class="entry_details" colspan="5"> 24656 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 24657curveBlue entries.<wbr/></p> 24658 </td> 24659 </tr> 24660 24661 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24662 <!-- end of entry --> 24663 24664 24665 <tr class="entry" id="controls_android.tonemap.mode"> 24666 <td class="entry_name 24667 " rowspan="3"> 24668 android.<wbr/>tonemap.<wbr/>mode 24669 </td> 24670 <td class="entry_type"> 24671 <span class="entry_type_name entry_type_name_enum">byte</span> 24672 24673 <span class="entry_type_visibility"> [public]</span> 24674 24675 24676 <span class="entry_type_hwlevel">[full] </span> 24677 24678 24679 24680 <ul class="entry_type_enum"> 24681 <li> 24682 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 24683 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 24684the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 24685<p>All color enhancement and tonemapping must be disabled,<wbr/> except 24686for applying the tonemapping curve specified by 24687<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 24688<p>Must not slow down frame rate relative to raw 24689sensor output.<wbr/></p></span> 24690 </li> 24691 <li> 24692 <span class="entry_type_enum_name">FAST</span> 24693 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 24694reducing frame rate compared to raw sensor output.<wbr/></p></span> 24695 </li> 24696 <li> 24697 <span class="entry_type_enum_name">HIGH_QUALITY</span> 24698 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 24699the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 24700 </li> 24701 <li> 24702 <span class="entry_type_enum_name">GAMMA_VALUE</span> 24703 <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 24704tonemapping.<wbr/></p> 24705<p>All color enhancement and tonemapping must be disabled,<wbr/> except 24706for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 24707<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 24708 </li> 24709 <li> 24710 <span class="entry_type_enum_name">PRESET_CURVE</span> 24711 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 24712<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 24713<p>All color enhancement and tonemapping must be disabled,<wbr/> except 24714for applying the tonemapping curve specified by 24715<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 24716<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 24717 </li> 24718 </ul> 24719 24720 </td> <!-- entry_type --> 24721 24722 <td class="entry_description"> 24723 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 24724 </td> 24725 24726 <td class="entry_units"> 24727 </td> 24728 24729 <td class="entry_range"> 24730 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 24731 </td> 24732 24733 <td class="entry_tags"> 24734 </td> 24735 24736 </tr> 24737 <tr class="entries_header"> 24738 <th class="th_details" colspan="5">Details</th> 24739 </tr> 24740 <tr class="entry_cont"> 24741 <td class="entry_details" colspan="5"> 24742 <p>When switching to an application-defined contrast curve by setting 24743<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 24744per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 24745mapping from input high-bit-depth pixel value to the output 24746low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 24747and output may change depending on the camera pipeline,<wbr/> the values 24748are specified by normalized floating-point numbers.<wbr/></p> 24749<p>More-complex color mapping operations such as 3D color look-up 24750tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 24751transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24752CONTRAST_<wbr/>CURVE.<wbr/></p> 24753<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 24754emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 24755These values are always available,<wbr/> and as close as possible to the 24756actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 24757<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 24758provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 24759roughly the same.<wbr/></p> 24760 </td> 24761 </tr> 24762 24763 24764 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24765 <!-- end of entry --> 24766 24767 24768 <tr class="entry" id="controls_android.tonemap.gamma"> 24769 <td class="entry_name 24770 " rowspan="3"> 24771 android.<wbr/>tonemap.<wbr/>gamma 24772 </td> 24773 <td class="entry_type"> 24774 <span class="entry_type_name">float</span> 24775 24776 <span class="entry_type_visibility"> [public]</span> 24777 24778 24779 24780 24781 24782 24783 </td> <!-- entry_type --> 24784 24785 <td class="entry_description"> 24786 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24787GAMMA_<wbr/>VALUE</p> 24788 </td> 24789 24790 <td class="entry_units"> 24791 </td> 24792 24793 <td class="entry_range"> 24794 </td> 24795 24796 <td class="entry_tags"> 24797 </td> 24798 24799 </tr> 24800 <tr class="entries_header"> 24801 <th class="th_details" colspan="5">Details</th> 24802 </tr> 24803 <tr class="entry_cont"> 24804 <td class="entry_details" colspan="5"> 24805 <p>The tonemap curve will be defined the following formula: 24806* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 24807where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 24808pow is the power function and gamma is the gamma value specified by this 24809key.<wbr/></p> 24810<p>The same curve will be applied to all color channels.<wbr/> The camera device 24811may clip the input gamma value to its supported range.<wbr/> The actual applied 24812value will be returned in capture result.<wbr/></p> 24813<p>The valid range of gamma value varies on different devices,<wbr/> but values 24814within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 24815 </td> 24816 </tr> 24817 24818 24819 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24820 <!-- end of entry --> 24821 24822 24823 <tr class="entry" id="controls_android.tonemap.presetCurve"> 24824 <td class="entry_name 24825 " rowspan="3"> 24826 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 24827 </td> 24828 <td class="entry_type"> 24829 <span class="entry_type_name entry_type_name_enum">byte</span> 24830 24831 <span class="entry_type_visibility"> [public]</span> 24832 24833 24834 24835 24836 24837 <ul class="entry_type_enum"> 24838 <li> 24839 <span class="entry_type_enum_name">SRGB</span> 24840 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 24841 </li> 24842 <li> 24843 <span class="entry_type_enum_name">REC709</span> 24844 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 24845 </li> 24846 </ul> 24847 24848 </td> <!-- entry_type --> 24849 24850 <td class="entry_description"> 24851 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 24852PRESET_<wbr/>CURVE</p> 24853 </td> 24854 24855 <td class="entry_units"> 24856 </td> 24857 24858 <td class="entry_range"> 24859 </td> 24860 24861 <td class="entry_tags"> 24862 </td> 24863 24864 </tr> 24865 <tr class="entries_header"> 24866 <th class="th_details" colspan="5">Details</th> 24867 </tr> 24868 <tr class="entry_cont"> 24869 <td class="entry_details" colspan="5"> 24870 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 24871<p>sRGB (approximated by 16 control points):</p> 24872<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 24873<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 24874<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 24875<p>Note that above figures show a 16 control points approximation of preset 24876curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 24877 </td> 24878 </tr> 24879 24880 24881 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24882 <!-- end of entry --> 24883 24884 24885 24886 <!-- end of kind --> 24887 </tbody> 24888 <tr><td colspan="6" class="kind">static</td></tr> 24889 24890 <thead class="entries_header"> 24891 <tr> 24892 <th class="th_name">Property Name</th> 24893 <th class="th_type">Type</th> 24894 <th class="th_description">Description</th> 24895 <th class="th_units">Units</th> 24896 <th class="th_range">Range</th> 24897 <th class="th_tags">Tags</th> 24898 </tr> 24899 </thead> 24900 24901 <tbody> 24902 24903 24904 24905 24906 24907 24908 24909 24910 24911 24912 <tr class="entry" id="static_android.tonemap.maxCurvePoints"> 24913 <td class="entry_name 24914 " rowspan="5"> 24915 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points 24916 </td> 24917 <td class="entry_type"> 24918 <span class="entry_type_name">int32</span> 24919 24920 <span class="entry_type_visibility"> [public]</span> 24921 24922 24923 <span class="entry_type_hwlevel">[full] </span> 24924 24925 24926 24927 24928 </td> <!-- entry_type --> 24929 24930 <td class="entry_description"> 24931 <p>Maximum number of supported points in the 24932tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 24933 </td> 24934 24935 <td class="entry_units"> 24936 </td> 24937 24938 <td class="entry_range"> 24939 </td> 24940 24941 <td class="entry_tags"> 24942 </td> 24943 24944 </tr> 24945 <tr class="entries_header"> 24946 <th class="th_details" colspan="5">Details</th> 24947 </tr> 24948 <tr class="entry_cont"> 24949 <td class="entry_details" colspan="5"> 24950 <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 24951less than this maximum,<wbr/> the camera device will resample the curve to its internal 24952representation,<wbr/> using linear interpolation.<wbr/></p> 24953<p>The output curves in the result metadata may have a different number 24954of points than the input curves,<wbr/> and will represent the actual 24955hardware curves used as closely as possible when linearly interpolated.<wbr/></p> 24956 </td> 24957 </tr> 24958 24959 <tr class="entries_header"> 24960 <th class="th_details" colspan="5">HAL Implementation Details</th> 24961 </tr> 24962 <tr class="entry_cont"> 24963 <td class="entry_details" colspan="5"> 24964 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p> 24965 </td> 24966 </tr> 24967 24968 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 24969 <!-- end of entry --> 24970 24971 24972 <tr class="entry" id="static_android.tonemap.availableToneMapModes"> 24973 <td class="entry_name 24974 " rowspan="5"> 24975 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes 24976 </td> 24977 <td class="entry_type"> 24978 <span class="entry_type_name">byte</span> 24979 <span class="entry_type_container">x</span> 24980 24981 <span class="entry_type_array"> 24982 n 24983 </span> 24984 <span class="entry_type_visibility"> [public as enumList]</span> 24985 24986 24987 <span class="entry_type_hwlevel">[full] </span> 24988 24989 24990 <div class="entry_type_notes">list of enums</div> 24991 24992 24993 </td> <!-- entry_type --> 24994 24995 <td class="entry_description"> 24996 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera 24997device.<wbr/></p> 24998 </td> 24999 25000 <td class="entry_units"> 25001 </td> 25002 25003 <td class="entry_range"> 25004 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p> 25005 </td> 25006 25007 <td class="entry_tags"> 25008 </td> 25009 25010 </tr> 25011 <tr class="entries_header"> 25012 <th class="th_details" colspan="5">Details</th> 25013 </tr> 25014 <tr class="entry_cont"> 25015 <td class="entry_details" colspan="5"> 25016 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain 25017at least one of below mode combinations:</p> 25018<ul> 25019<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 25020<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li> 25021</ul> 25022<p>This includes all FULL level devices.<wbr/></p> 25023 </td> 25024 </tr> 25025 25026 <tr class="entries_header"> 25027 <th class="th_details" colspan="5">HAL Implementation Details</th> 25028 </tr> 25029 <tr class="entry_cont"> 25030 <td class="entry_details" colspan="5"> 25031 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available 25032on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/> 25033That is,<wbr/> if the highest quality implementation on the camera device does not slow down 25034capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p> 25035 </td> 25036 </tr> 25037 25038 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25039 <!-- end of entry --> 25040 25041 25042 25043 <!-- end of kind --> 25044 </tbody> 25045 <tr><td colspan="6" class="kind">dynamic</td></tr> 25046 25047 <thead class="entries_header"> 25048 <tr> 25049 <th class="th_name">Property Name</th> 25050 <th class="th_type">Type</th> 25051 <th class="th_description">Description</th> 25052 <th class="th_units">Units</th> 25053 <th class="th_range">Range</th> 25054 <th class="th_tags">Tags</th> 25055 </tr> 25056 </thead> 25057 25058 <tbody> 25059 25060 25061 25062 25063 25064 25065 25066 25067 25068 25069 <tr class="entry" id="dynamic_android.tonemap.curveBlue"> 25070 <td class="entry_name 25071 " rowspan="3"> 25072 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue 25073 </td> 25074 <td class="entry_type"> 25075 <span class="entry_type_name">float</span> 25076 <span class="entry_type_container">x</span> 25077 25078 <span class="entry_type_array"> 25079 n x 2 25080 </span> 25081 <span class="entry_type_visibility"> [ndk_public]</span> 25082 25083 25084 <span class="entry_type_hwlevel">[full] </span> 25085 25086 25087 <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> 25088 25089 25090 </td> <!-- entry_type --> 25091 25092 <td class="entry_description"> 25093 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue 25094channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 25095CONTRAST_<wbr/>CURVE.<wbr/></p> 25096 </td> 25097 25098 <td class="entry_units"> 25099 </td> 25100 25101 <td class="entry_range"> 25102 </td> 25103 25104 <td class="entry_tags"> 25105 </td> 25106 25107 </tr> 25108 <tr class="entries_header"> 25109 <th class="th_details" colspan="5">Details</th> 25110 </tr> 25111 <tr class="entry_cont"> 25112 <td class="entry_details" colspan="5"> 25113 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 25114 </td> 25115 </tr> 25116 25117 25118 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25119 <!-- end of entry --> 25120 25121 25122 <tr class="entry" id="dynamic_android.tonemap.curveGreen"> 25123 <td class="entry_name 25124 " rowspan="3"> 25125 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green 25126 </td> 25127 <td class="entry_type"> 25128 <span class="entry_type_name">float</span> 25129 <span class="entry_type_container">x</span> 25130 25131 <span class="entry_type_array"> 25132 n x 2 25133 </span> 25134 <span class="entry_type_visibility"> [ndk_public]</span> 25135 25136 25137 <span class="entry_type_hwlevel">[full] </span> 25138 25139 25140 <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> 25141 25142 25143 </td> <!-- entry_type --> 25144 25145 <td class="entry_description"> 25146 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green 25147channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 25148CONTRAST_<wbr/>CURVE.<wbr/></p> 25149 </td> 25150 25151 <td class="entry_units"> 25152 </td> 25153 25154 <td class="entry_range"> 25155 </td> 25156 25157 <td class="entry_tags"> 25158 </td> 25159 25160 </tr> 25161 <tr class="entries_header"> 25162 <th class="th_details" colspan="5">Details</th> 25163 </tr> 25164 <tr class="entry_cont"> 25165 <td class="entry_details" colspan="5"> 25166 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> 25167 </td> 25168 </tr> 25169 25170 25171 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25172 <!-- end of entry --> 25173 25174 25175 <tr class="entry" id="dynamic_android.tonemap.curveRed"> 25176 <td class="entry_name 25177 " rowspan="5"> 25178 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red 25179 </td> 25180 <td class="entry_type"> 25181 <span class="entry_type_name">float</span> 25182 <span class="entry_type_container">x</span> 25183 25184 <span class="entry_type_array"> 25185 n x 2 25186 </span> 25187 <span class="entry_type_visibility"> [ndk_public]</span> 25188 25189 25190 <span class="entry_type_hwlevel">[full] </span> 25191 25192 25193 <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> 25194 25195 25196 </td> <!-- entry_type --> 25197 25198 <td class="entry_description"> 25199 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red 25200channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 25201CONTRAST_<wbr/>CURVE.<wbr/></p> 25202 </td> 25203 25204 <td class="entry_units"> 25205 </td> 25206 25207 <td class="entry_range"> 25208 <p>0-1 on both input and output coordinates,<wbr/> normalized 25209as a floating-point value such that 0 == black and 1 == white.<wbr/></p> 25210 </td> 25211 25212 <td class="entry_tags"> 25213 </td> 25214 25215 </tr> 25216 <tr class="entries_header"> 25217 <th class="th_details" colspan="5">Details</th> 25218 </tr> 25219 <tr class="entry_cont"> 25220 <td class="entry_details" colspan="5"> 25221 <p>Each channel's curve is defined by an array of control points:</p> 25222<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = 25223 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] 252242 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 25225<p>These are sorted in order of increasing <code>Pin</code>; it is 25226required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 25227define a complete mapping.<wbr/> For input values between control points,<wbr/> 25228the camera device must linearly interpolate between the control 25229points.<wbr/></p> 25230<p>Each curve can have an independent number of points,<wbr/> and the number 25231of points can be less than max (that is,<wbr/> the request doesn't have to 25232always provide a curve with number of points equivalent to 25233<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 25234<p>A few examples,<wbr/> and their corresponding graphical mappings; these 25235only specify the red channel and the precision is limited to 4 25236digits,<wbr/> for conciseness.<wbr/></p> 25237<p>Linear mapping:</p> 25238<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 ] 25239</code></pre> 25240<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 25241<p>Invert mapping:</p> 25242<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 ] 25243</code></pre> 25244<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 25245<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 25246<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 25247 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/> 25248 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/> 25249 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/> 25250 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 ] 25251</code></pre> 25252<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 25253<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 25254<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 25255 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/> 25256 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/> 25257 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/> 25258 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 ] 25259</code></pre> 25260<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 25261 </td> 25262 </tr> 25263 25264 <tr class="entries_header"> 25265 <th class="th_details" colspan="5">HAL Implementation Details</th> 25266 </tr> 25267 <tr class="entry_cont"> 25268 <td class="entry_details" colspan="5"> 25269 <p>For good quality of mapping,<wbr/> at least 128 control points are 25270preferred.<wbr/></p> 25271<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many 25272control points used as are available.<wbr/></p> 25273 </td> 25274 </tr> 25275 25276 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25277 <!-- end of entry --> 25278 25279 25280 <tr class="entry" id="dynamic_android.tonemap.curve"> 25281 <td class="entry_name 25282 " rowspan="5"> 25283 android.<wbr/>tonemap.<wbr/>curve 25284 </td> 25285 <td class="entry_type"> 25286 <span class="entry_type_name">float</span> 25287 25288 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span> 25289 25290 <span class="entry_type_synthetic">[synthetic] </span> 25291 25292 <span class="entry_type_hwlevel">[full] </span> 25293 25294 25295 25296 25297 </td> <!-- entry_type --> 25298 25299 <td class="entry_description"> 25300 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> 25301is CONTRAST_<wbr/>CURVE.<wbr/></p> 25302 </td> 25303 25304 <td class="entry_units"> 25305 </td> 25306 25307 <td class="entry_range"> 25308 </td> 25309 25310 <td class="entry_tags"> 25311 </td> 25312 25313 </tr> 25314 <tr class="entries_header"> 25315 <th class="th_details" colspan="5">Details</th> 25316 </tr> 25317 <tr class="entry_cont"> 25318 <td class="entry_details" colspan="5"> 25319 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue 25320channels respectively.<wbr/> The following example uses the red channel as an 25321example.<wbr/> The same logic applies to green and blue channel.<wbr/> 25322Each channel's curve is defined by an array of control points:</p> 25323<pre><code>curveRed = 25324 [ 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) ] 253252 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> 25326<p>These are sorted in order of increasing <code>Pin</code>; it is always 25327guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to 25328define a complete mapping.<wbr/> For input values between control points,<wbr/> 25329the camera device must linearly interpolate between the control 25330points.<wbr/></p> 25331<p>Each curve can have an independent number of points,<wbr/> and the number 25332of points can be less than max (that is,<wbr/> the request doesn't have to 25333always provide a curve with number of points equivalent to 25334<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> 25335<p>A few examples,<wbr/> and their corresponding graphical mappings; these 25336only specify the red channel and the precision is limited to 4 25337digits,<wbr/> for conciseness.<wbr/></p> 25338<p>Linear mapping:</p> 25339<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ] 25340</code></pre> 25341<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> 25342<p>Invert mapping:</p> 25343<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ] 25344</code></pre> 25345<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> 25346<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> 25347<pre><code>curveRed = [ 25348 (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/> 25349 (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/> 25350 (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/> 25351 (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) ] 25352</code></pre> 25353<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> 25354<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> 25355<pre><code>curveRed = [ 25356 (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/> 25357 (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/> 25358 (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/> 25359 (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) ] 25360</code></pre> 25361<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 25362 </td> 25363 </tr> 25364 25365 <tr class="entries_header"> 25366 <th class="th_details" colspan="5">HAL Implementation Details</th> 25367 </tr> 25368 <tr class="entry_cont"> 25369 <td class="entry_details" colspan="5"> 25370 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and 25371curveBlue entries.<wbr/></p> 25372 </td> 25373 </tr> 25374 25375 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25376 <!-- end of entry --> 25377 25378 25379 <tr class="entry" id="dynamic_android.tonemap.mode"> 25380 <td class="entry_name 25381 " rowspan="3"> 25382 android.<wbr/>tonemap.<wbr/>mode 25383 </td> 25384 <td class="entry_type"> 25385 <span class="entry_type_name entry_type_name_enum">byte</span> 25386 25387 <span class="entry_type_visibility"> [public]</span> 25388 25389 25390 <span class="entry_type_hwlevel">[full] </span> 25391 25392 25393 25394 <ul class="entry_type_enum"> 25395 <li> 25396 <span class="entry_type_enum_name">CONTRAST_CURVE</span> 25397 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in 25398the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p> 25399<p>All color enhancement and tonemapping must be disabled,<wbr/> except 25400for applying the tonemapping curve specified by 25401<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p> 25402<p>Must not slow down frame rate relative to raw 25403sensor output.<wbr/></p></span> 25404 </li> 25405 <li> 25406 <span class="entry_type_enum_name">FAST</span> 25407 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without 25408reducing frame rate compared to raw sensor output.<wbr/></p></span> 25409 </li> 25410 <li> 25411 <span class="entry_type_enum_name">HIGH_QUALITY</span> 25412 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at 25413the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span> 25414 </li> 25415 <li> 25416 <span class="entry_type_enum_name">GAMMA_VALUE</span> 25417 <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 25418tonemapping.<wbr/></p> 25419<p>All color enhancement and tonemapping must be disabled,<wbr/> except 25420for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p> 25421<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 25422 </li> 25423 <li> 25424 <span class="entry_type_enum_name">PRESET_CURVE</span> 25425 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in 25426<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p> 25427<p>All color enhancement and tonemapping must be disabled,<wbr/> except 25428for applying the tonemapping curve specified by 25429<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p> 25430<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span> 25431 </li> 25432 </ul> 25433 25434 </td> <!-- entry_type --> 25435 25436 <td class="entry_description"> 25437 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> 25438 </td> 25439 25440 <td class="entry_units"> 25441 </td> 25442 25443 <td class="entry_range"> 25444 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p> 25445 </td> 25446 25447 <td class="entry_tags"> 25448 </td> 25449 25450 </tr> 25451 <tr class="entries_header"> 25452 <th class="th_details" colspan="5">Details</th> 25453 </tr> 25454 <tr class="entry_cont"> 25455 <td class="entry_details" colspan="5"> 25456 <p>When switching to an application-defined contrast curve by setting 25457<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined 25458per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the 25459mapping from input high-bit-depth pixel value to the output 25460low-bit-depth value.<wbr/> Since the actual pixel ranges of both input 25461and output may change depending on the camera pipeline,<wbr/> the values 25462are specified by normalized floating-point numbers.<wbr/></p> 25463<p>More-complex color mapping operations such as 3D color look-up 25464tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color 25465transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 25466CONTRAST_<wbr/>CURVE.<wbr/></p> 25467<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will 25468emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/> 25469These values are always available,<wbr/> and as close as possible to the 25470actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> 25471<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's 25472provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be 25473roughly the same.<wbr/></p> 25474 </td> 25475 </tr> 25476 25477 25478 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25479 <!-- end of entry --> 25480 25481 25482 <tr class="entry" id="dynamic_android.tonemap.gamma"> 25483 <td class="entry_name 25484 " rowspan="3"> 25485 android.<wbr/>tonemap.<wbr/>gamma 25486 </td> 25487 <td class="entry_type"> 25488 <span class="entry_type_name">float</span> 25489 25490 <span class="entry_type_visibility"> [public]</span> 25491 25492 25493 25494 25495 25496 25497 </td> <!-- entry_type --> 25498 25499 <td class="entry_description"> 25500 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 25501GAMMA_<wbr/>VALUE</p> 25502 </td> 25503 25504 <td class="entry_units"> 25505 </td> 25506 25507 <td class="entry_range"> 25508 </td> 25509 25510 <td class="entry_tags"> 25511 </td> 25512 25513 </tr> 25514 <tr class="entries_header"> 25515 <th class="th_details" colspan="5">Details</th> 25516 </tr> 25517 <tr class="entry_cont"> 25518 <td class="entry_details" colspan="5"> 25519 <p>The tonemap curve will be defined the following formula: 25520* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma) 25521where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> 25522pow is the power function and gamma is the gamma value specified by this 25523key.<wbr/></p> 25524<p>The same curve will be applied to all color channels.<wbr/> The camera device 25525may clip the input gamma value to its supported range.<wbr/> The actual applied 25526value will be returned in capture result.<wbr/></p> 25527<p>The valid range of gamma value varies on different devices,<wbr/> but values 25528within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p> 25529 </td> 25530 </tr> 25531 25532 25533 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25534 <!-- end of entry --> 25535 25536 25537 <tr class="entry" id="dynamic_android.tonemap.presetCurve"> 25538 <td class="entry_name 25539 " rowspan="3"> 25540 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve 25541 </td> 25542 <td class="entry_type"> 25543 <span class="entry_type_name entry_type_name_enum">byte</span> 25544 25545 <span class="entry_type_visibility"> [public]</span> 25546 25547 25548 25549 25550 25551 <ul class="entry_type_enum"> 25552 <li> 25553 <span class="entry_type_enum_name">SRGB</span> 25554 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span> 25555 </li> 25556 <li> 25557 <span class="entry_type_enum_name">REC709</span> 25558 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span> 25559 </li> 25560 </ul> 25561 25562 </td> <!-- entry_type --> 25563 25564 <td class="entry_description"> 25565 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is 25566PRESET_<wbr/>CURVE</p> 25567 </td> 25568 25569 <td class="entry_units"> 25570 </td> 25571 25572 <td class="entry_range"> 25573 </td> 25574 25575 <td class="entry_tags"> 25576 </td> 25577 25578 </tr> 25579 <tr class="entries_header"> 25580 <th class="th_details" colspan="5">Details</th> 25581 </tr> 25582 <tr class="entry_cont"> 25583 <td class="entry_details" colspan="5"> 25584 <p>The tonemap curve will be defined by specified standard.<wbr/></p> 25585<p>sRGB (approximated by 16 control points):</p> 25586<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> 25587<p>Rec.<wbr/> 709 (approximated by 16 control points):</p> 25588<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p> 25589<p>Note that above figures show a 16 control points approximation of preset 25590curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p> 25591 </td> 25592 </tr> 25593 25594 25595 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25596 <!-- end of entry --> 25597 25598 25599 25600 <!-- end of kind --> 25601 </tbody> 25602 25603 <!-- end of section --> 25604 <tr><td colspan="6" id="section_led" class="section">led</td></tr> 25605 25606 25607 <tr><td colspan="6" class="kind">controls</td></tr> 25608 25609 <thead class="entries_header"> 25610 <tr> 25611 <th class="th_name">Property Name</th> 25612 <th class="th_type">Type</th> 25613 <th class="th_description">Description</th> 25614 <th class="th_units">Units</th> 25615 <th class="th_range">Range</th> 25616 <th class="th_tags">Tags</th> 25617 </tr> 25618 </thead> 25619 25620 <tbody> 25621 25622 25623 25624 25625 25626 25627 25628 25629 25630 25631 <tr class="entry" id="controls_android.led.transmit"> 25632 <td class="entry_name 25633 " rowspan="1"> 25634 android.<wbr/>led.<wbr/>transmit 25635 </td> 25636 <td class="entry_type"> 25637 <span class="entry_type_name entry_type_name_enum">byte</span> 25638 25639 <span class="entry_type_visibility"> [hidden as boolean]</span> 25640 25641 25642 25643 25644 25645 <ul class="entry_type_enum"> 25646 <li> 25647 <span class="entry_type_enum_name">OFF</span> 25648 </li> 25649 <li> 25650 <span class="entry_type_enum_name">ON</span> 25651 </li> 25652 </ul> 25653 25654 </td> <!-- entry_type --> 25655 25656 <td class="entry_description"> 25657 <p>This LED is nominally used to indicate to the user 25658that the camera is powered on and may be streaming images back to the 25659Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 25660disable this when video is processed locally and not transmitted to 25661any untrusted applications.<wbr/></p> 25662<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 25663transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 25664data is stored locally on the device.<wbr/></p> 25665<p>The LED <em>may</em> be off if a trusted application is using the data that 25666doesn't violate the above rules.<wbr/></p> 25667 </td> 25668 25669 <td class="entry_units"> 25670 </td> 25671 25672 <td class="entry_range"> 25673 </td> 25674 25675 <td class="entry_tags"> 25676 </td> 25677 25678 </tr> 25679 25680 25681 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25682 <!-- end of entry --> 25683 25684 25685 25686 <!-- end of kind --> 25687 </tbody> 25688 <tr><td colspan="6" class="kind">dynamic</td></tr> 25689 25690 <thead class="entries_header"> 25691 <tr> 25692 <th class="th_name">Property Name</th> 25693 <th class="th_type">Type</th> 25694 <th class="th_description">Description</th> 25695 <th class="th_units">Units</th> 25696 <th class="th_range">Range</th> 25697 <th class="th_tags">Tags</th> 25698 </tr> 25699 </thead> 25700 25701 <tbody> 25702 25703 25704 25705 25706 25707 25708 25709 25710 25711 25712 <tr class="entry" id="dynamic_android.led.transmit"> 25713 <td class="entry_name 25714 " rowspan="1"> 25715 android.<wbr/>led.<wbr/>transmit 25716 </td> 25717 <td class="entry_type"> 25718 <span class="entry_type_name entry_type_name_enum">byte</span> 25719 25720 <span class="entry_type_visibility"> [hidden as boolean]</span> 25721 25722 25723 25724 25725 25726 <ul class="entry_type_enum"> 25727 <li> 25728 <span class="entry_type_enum_name">OFF</span> 25729 </li> 25730 <li> 25731 <span class="entry_type_enum_name">ON</span> 25732 </li> 25733 </ul> 25734 25735 </td> <!-- entry_type --> 25736 25737 <td class="entry_description"> 25738 <p>This LED is nominally used to indicate to the user 25739that the camera is powered on and may be streaming images back to the 25740Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may 25741disable this when video is processed locally and not transmitted to 25742any untrusted applications.<wbr/></p> 25743<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be 25744transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever 25745data is stored locally on the device.<wbr/></p> 25746<p>The LED <em>may</em> be off if a trusted application is using the data that 25747doesn't violate the above rules.<wbr/></p> 25748 </td> 25749 25750 <td class="entry_units"> 25751 </td> 25752 25753 <td class="entry_range"> 25754 </td> 25755 25756 <td class="entry_tags"> 25757 </td> 25758 25759 </tr> 25760 25761 25762 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25763 <!-- end of entry --> 25764 25765 25766 25767 <!-- end of kind --> 25768 </tbody> 25769 <tr><td colspan="6" class="kind">static</td></tr> 25770 25771 <thead class="entries_header"> 25772 <tr> 25773 <th class="th_name">Property Name</th> 25774 <th class="th_type">Type</th> 25775 <th class="th_description">Description</th> 25776 <th class="th_units">Units</th> 25777 <th class="th_range">Range</th> 25778 <th class="th_tags">Tags</th> 25779 </tr> 25780 </thead> 25781 25782 <tbody> 25783 25784 25785 25786 25787 25788 25789 25790 25791 25792 25793 <tr class="entry" id="static_android.led.availableLeds"> 25794 <td class="entry_name 25795 " rowspan="1"> 25796 android.<wbr/>led.<wbr/>available<wbr/>Leds 25797 </td> 25798 <td class="entry_type"> 25799 <span class="entry_type_name entry_type_name_enum">byte</span> 25800 <span class="entry_type_container">x</span> 25801 25802 <span class="entry_type_array"> 25803 n 25804 </span> 25805 <span class="entry_type_visibility"> [hidden]</span> 25806 25807 25808 25809 25810 25811 <ul class="entry_type_enum"> 25812 <li> 25813 <span class="entry_type_enum_name">TRANSMIT</span> 25814 <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> 25815 </li> 25816 </ul> 25817 25818 </td> <!-- entry_type --> 25819 25820 <td class="entry_description"> 25821 <p>A list of camera LEDs that are available on this system.<wbr/></p> 25822 </td> 25823 25824 <td class="entry_units"> 25825 </td> 25826 25827 <td class="entry_range"> 25828 </td> 25829 25830 <td class="entry_tags"> 25831 </td> 25832 25833 </tr> 25834 25835 25836 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 25837 <!-- end of entry --> 25838 25839 25840 25841 <!-- end of kind --> 25842 </tbody> 25843 25844 <!-- end of section --> 25845 <tr><td colspan="6" id="section_info" class="section">info</td></tr> 25846 25847 25848 <tr><td colspan="6" class="kind">static</td></tr> 25849 25850 <thead class="entries_header"> 25851 <tr> 25852 <th class="th_name">Property Name</th> 25853 <th class="th_type">Type</th> 25854 <th class="th_description">Description</th> 25855 <th class="th_units">Units</th> 25856 <th class="th_range">Range</th> 25857 <th class="th_tags">Tags</th> 25858 </tr> 25859 </thead> 25860 25861 <tbody> 25862 25863 25864 25865 25866 25867 25868 25869 25870 25871 25872 <tr class="entry" id="static_android.info.supportedHardwareLevel"> 25873 <td class="entry_name 25874 " rowspan="5"> 25875 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level 25876 </td> 25877 <td class="entry_type"> 25878 <span class="entry_type_name entry_type_name_enum">byte</span> 25879 25880 <span class="entry_type_visibility"> [public]</span> 25881 25882 25883 <span class="entry_type_hwlevel">[legacy] </span> 25884 25885 25886 25887 <ul class="entry_type_enum"> 25888 <li> 25889 <span class="entry_type_enum_name">LIMITED</span> 25890 <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or 25891better.<wbr/></p> 25892<p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the 25893<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p> 25894<p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic 25895support for color image capture.<wbr/> The only exception is that the device may 25896alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth 25897measurements and not color images.<wbr/></p> 25898<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> 25899to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before 25900capturing a high-quality still image.<wbr/></p> 25901<p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only 25902required to support full-automatic operation and post-processing (<code>OFF</code> is not 25903supported 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 25904<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p> 25905<p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and 25906can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span> 25907 </li> 25908 <li> 25909 <span class="entry_type_enum_name">FULL</span> 25910 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p> 25911<p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the 25912<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p> 25913<p>A <code>FULL</code> device will support below capabilities:</p> 25914<ul> 25915<li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 25916 <code>BURST_<wbr/>CAPTURE</code>)</li> 25917<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> 25918<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> 25919<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 25920 <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li> 25921<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> 25922<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> 25923</ul> 25924<p>Note: 25925Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region 25926(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level 2592723,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span> 25928 </li> 25929 <li> 25930 <span class="entry_type_enum_name">LEGACY</span> 25931 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p> 25932<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> 25933documentation are supported.<wbr/></p> 25934<p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual 25935post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/> 25936No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a 25937<code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p> 25938<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> 25939devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated 25940as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may 25941fire the flash for flash power metering during precapture,<wbr/> and then fire the flash 25942for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to 25943enable the flash.<wbr/></p></span> 25944 </li> 25945 <li> 25946 <span class="entry_type_enum_name">3</span> 25947 <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to 25948FULL-level capabilities.<wbr/></p> 25949<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 25950<code>LIMITED</code> tables in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> 25951documentation are guaranteed to be supported.<wbr/></p> 25952<p>The following additional capabilities are guaranteed to be supported:</p> 25953<ul> 25954<li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 25955 <code>YUV_<wbr/>REPROCESSING</code>)</li> 25956<li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains 25957 <code>RAW</code>)</li> 25958</ul></span> 25959 </li> 25960 </ul> 25961 25962 </td> <!-- entry_type --> 25963 25964 <td class="entry_description"> 25965 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p> 25966 </td> 25967 25968 <td class="entry_units"> 25969 </td> 25970 25971 <td class="entry_range"> 25972 </td> 25973 25974 <td class="entry_tags"> 25975 </td> 25976 25977 </tr> 25978 <tr class="entries_header"> 25979 <th class="th_details" colspan="5">Details</th> 25980 </tr> 25981 <tr class="entry_cont"> 25982 <td class="entry_details" colspan="5"> 25983 <p>The supported hardware level is a high-level description of the camera device's 25984capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional 25985features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/> 25986The ordering is <code>LEGACY < LIMITED < FULL < LEVEL_<wbr/>3</code>.<wbr/></p> 25987<p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing 25988numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/> 25989the following code snippet can be used:</p> 25990<pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/> 25991boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) { 25992 int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL); 25993 if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) { 25994 return requiredLevel == deviceLevel; 25995 } 25996 //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort 25997 return requiredLevel <= deviceLevel; 25998} 25999</code></pre> 26000<p>At a high level,<wbr/> the levels are:</p> 26001<ul> 26002<li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older 26003 Android devices,<wbr/> and have very limited capabilities.<wbr/></li> 26004<li><code>LIMITED</code> devices represent the 26005 baseline feature set,<wbr/> and may also include additional capabilities that are 26006 subsets of <code>FULL</code>.<wbr/></li> 26007<li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and 26008 post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li> 26009<li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along 26010 with additional output stream configurations.<wbr/></li> 26011</ul> 26012<p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The 26013<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a 26014finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or 26015ranges defined in individual <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> entries.<wbr/></p> 26016<p>Some features are not part of any particular hardware level or capability and must be 26017queried separately.<wbr/> These include:</p> 26018<ul> 26019<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li> 26020<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> 26021<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> 26022<li>Optical or electrical image stabilization 26023 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/> 26024 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li> 26025</ul> 26026 </td> 26027 </tr> 26028 26029 <tr class="entries_header"> 26030 <th class="th_details" colspan="5">HAL Implementation Details</th> 26031 </tr> 26032 <tr class="entry_cont"> 26033 <td class="entry_details" colspan="5"> 26034 <p>The camera 3 HAL device can implement one of three possible operational modes; LIMITED,<wbr/> 26035FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p> 26036<p>FULL support or better is expected from new higher-end devices.<wbr/> Limited 26037mode has hardware requirements roughly in line with those for a camera HAL device v1 26038implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict 26039superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p> 26040<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p> 26041<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in 26042the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on HALv1 devices,<wbr/> and is implemented 26043by the camera framework code.<wbr/></p> 26044 </td> 26045 </tr> 26046 26047 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26048 <!-- end of entry --> 26049 26050 26051 26052 <!-- end of kind --> 26053 </tbody> 26054 26055 <!-- end of section --> 26056 <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr> 26057 26058 26059 <tr><td colspan="6" class="kind">controls</td></tr> 26060 26061 <thead class="entries_header"> 26062 <tr> 26063 <th class="th_name">Property Name</th> 26064 <th class="th_type">Type</th> 26065 <th class="th_description">Description</th> 26066 <th class="th_units">Units</th> 26067 <th class="th_range">Range</th> 26068 <th class="th_tags">Tags</th> 26069 </tr> 26070 </thead> 26071 26072 <tbody> 26073 26074 26075 26076 26077 26078 26079 26080 26081 26082 26083 <tr class="entry" id="controls_android.blackLevel.lock"> 26084 <td class="entry_name 26085 " rowspan="5"> 26086 android.<wbr/>black<wbr/>Level.<wbr/>lock 26087 </td> 26088 <td class="entry_type"> 26089 <span class="entry_type_name entry_type_name_enum">byte</span> 26090 26091 <span class="entry_type_visibility"> [public as boolean]</span> 26092 26093 26094 <span class="entry_type_hwlevel">[full] </span> 26095 26096 26097 26098 <ul class="entry_type_enum"> 26099 <li> 26100 <span class="entry_type_enum_name">OFF</span> 26101 </li> 26102 <li> 26103 <span class="entry_type_enum_name">ON</span> 26104 </li> 26105 </ul> 26106 26107 </td> <!-- entry_type --> 26108 26109 <td class="entry_description"> 26110 <p>Whether black-level compensation is locked 26111to its current values,<wbr/> or is free to vary.<wbr/></p> 26112 </td> 26113 26114 <td class="entry_units"> 26115 </td> 26116 26117 <td class="entry_range"> 26118 </td> 26119 26120 <td class="entry_tags"> 26121 <ul class="entry_tags"> 26122 <li><a href="#tag_HAL2">HAL2</a></li> 26123 </ul> 26124 </td> 26125 26126 </tr> 26127 <tr class="entries_header"> 26128 <th class="th_details" colspan="5">Details</th> 26129 </tr> 26130 <tr class="entry_cont"> 26131 <td class="entry_details" colspan="5"> 26132 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level 26133compensation will not change until the lock is set to 26134<code>false</code> (OFF).<wbr/></p> 26135<p>Since changes to certain capture parameters (such as 26136exposure time) may require resetting of black level 26137compensation,<wbr/> the camera device must report whether setting 26138the black level lock was successful in the output result 26139metadata.<wbr/></p> 26140<p>For example,<wbr/> if a sequence of requests is as follows:</p> 26141<ul> 26142<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 26143<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 26144<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 26145<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li> 26146<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 26147<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 26148</ul> 26149<p>And the exposure change in Request 4 requires the camera 26150device to reset the black level offsets,<wbr/> then the output 26151result metadata is expected to be:</p> 26152<ul> 26153<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> 26154<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> 26155<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> 26156<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li> 26157<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> 26158<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> 26159</ul> 26160<p>This indicates to the application that on frame 4,<wbr/> black 26161levels were reset due to exposure value changes,<wbr/> and pixel 26162values may not be consistent across captures.<wbr/></p> 26163<p>The camera device will maintain the lock to the extent 26164possible,<wbr/> only overriding the lock to OFF when changes to 26165other request parameters require a black level recalculation 26166or reset.<wbr/></p> 26167 </td> 26168 </tr> 26169 26170 <tr class="entries_header"> 26171 <th class="th_details" colspan="5">HAL Implementation Details</th> 26172 </tr> 26173 <tr class="entry_cont"> 26174 <td class="entry_details" colspan="5"> 26175 <p>If for some reason black level locking is no longer possible 26176(for example,<wbr/> the analog gain has changed,<wbr/> which forces 26177black level offsets to be recalculated),<wbr/> then the HAL must 26178override this request (and it must report 'OFF' when this 26179does happen) until the next capture for which locking is 26180possible again.<wbr/></p> 26181 </td> 26182 </tr> 26183 26184 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26185 <!-- end of entry --> 26186 26187 26188 26189 <!-- end of kind --> 26190 </tbody> 26191 <tr><td colspan="6" class="kind">dynamic</td></tr> 26192 26193 <thead class="entries_header"> 26194 <tr> 26195 <th class="th_name">Property Name</th> 26196 <th class="th_type">Type</th> 26197 <th class="th_description">Description</th> 26198 <th class="th_units">Units</th> 26199 <th class="th_range">Range</th> 26200 <th class="th_tags">Tags</th> 26201 </tr> 26202 </thead> 26203 26204 <tbody> 26205 26206 26207 26208 26209 26210 26211 26212 26213 26214 26215 <tr class="entry" id="dynamic_android.blackLevel.lock"> 26216 <td class="entry_name 26217 " rowspan="5"> 26218 android.<wbr/>black<wbr/>Level.<wbr/>lock 26219 </td> 26220 <td class="entry_type"> 26221 <span class="entry_type_name entry_type_name_enum">byte</span> 26222 26223 <span class="entry_type_visibility"> [public as boolean]</span> 26224 26225 26226 <span class="entry_type_hwlevel">[full] </span> 26227 26228 26229 26230 <ul class="entry_type_enum"> 26231 <li> 26232 <span class="entry_type_enum_name">OFF</span> 26233 </li> 26234 <li> 26235 <span class="entry_type_enum_name">ON</span> 26236 </li> 26237 </ul> 26238 26239 </td> <!-- entry_type --> 26240 26241 <td class="entry_description"> 26242 <p>Whether black-level compensation is locked 26243to its current values,<wbr/> or is free to vary.<wbr/></p> 26244 </td> 26245 26246 <td class="entry_units"> 26247 </td> 26248 26249 <td class="entry_range"> 26250 </td> 26251 26252 <td class="entry_tags"> 26253 <ul class="entry_tags"> 26254 <li><a href="#tag_HAL2">HAL2</a></li> 26255 </ul> 26256 </td> 26257 26258 </tr> 26259 <tr class="entries_header"> 26260 <th class="th_details" colspan="5">Details</th> 26261 </tr> 26262 <tr class="entry_cont"> 26263 <td class="entry_details" colspan="5"> 26264 <p>Whether the black level offset was locked for this frame.<wbr/> Should be 26265ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless 26266a change in other capture settings forced the camera device to 26267perform a black level reset.<wbr/></p> 26268 </td> 26269 </tr> 26270 26271 <tr class="entries_header"> 26272 <th class="th_details" colspan="5">HAL Implementation Details</th> 26273 </tr> 26274 <tr class="entry_cont"> 26275 <td class="entry_details" colspan="5"> 26276 <p>If for some reason black level locking is no longer possible 26277(for example,<wbr/> the analog gain has changed,<wbr/> which forces 26278black level offsets to be recalculated),<wbr/> then the HAL must 26279override this request (and it must report 'OFF' when this 26280does happen) until the next capture for which locking is 26281possible again.<wbr/></p> 26282 </td> 26283 </tr> 26284 26285 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26286 <!-- end of entry --> 26287 26288 26289 26290 <!-- end of kind --> 26291 </tbody> 26292 26293 <!-- end of section --> 26294 <tr><td colspan="6" id="section_sync" class="section">sync</td></tr> 26295 26296 26297 <tr><td colspan="6" class="kind">dynamic</td></tr> 26298 26299 <thead class="entries_header"> 26300 <tr> 26301 <th class="th_name">Property Name</th> 26302 <th class="th_type">Type</th> 26303 <th class="th_description">Description</th> 26304 <th class="th_units">Units</th> 26305 <th class="th_range">Range</th> 26306 <th class="th_tags">Tags</th> 26307 </tr> 26308 </thead> 26309 26310 <tbody> 26311 26312 26313 26314 26315 26316 26317 26318 26319 26320 26321 <tr class="entry" id="dynamic_android.sync.frameNumber"> 26322 <td class="entry_name 26323 " rowspan="5"> 26324 android.<wbr/>sync.<wbr/>frame<wbr/>Number 26325 </td> 26326 <td class="entry_type"> 26327 <span class="entry_type_name entry_type_name_enum">int64</span> 26328 26329 <span class="entry_type_visibility"> [ndk_public]</span> 26330 26331 26332 <span class="entry_type_hwlevel">[legacy] </span> 26333 26334 26335 26336 <ul class="entry_type_enum"> 26337 <li> 26338 <span class="entry_type_enum_name">CONVERGING</span> 26339 <span class="entry_type_enum_value">-1</span> 26340 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p> 26341<p>Synchronization is in progress,<wbr/> and reading metadata from this 26342result may include a mix of data that have taken effect since the 26343last synchronization time.<wbr/></p> 26344<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/> 26345this value will update to the actual frame number frame number 26346the result is guaranteed to be synchronized to (as long as the 26347request settings remain constant).<wbr/></p></span> 26348 </li> 26349 <li> 26350 <span class="entry_type_enum_name">UNKNOWN</span> 26351 <span class="entry_type_enum_value">-2</span> 26352 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p> 26353<p>The result may have already converged,<wbr/> or it may be in 26354progress.<wbr/> Reading from this result may include some mix 26355of settings from past requests.<wbr/></p> 26356<p>After a settings change,<wbr/> the new settings will eventually all 26357take effect for the output buffers and results.<wbr/> However,<wbr/> this 26358value will not change when that happens.<wbr/> Altering settings 26359rapidly may provide outcomes using mixes of settings from recent 26360requests.<wbr/></p> 26361<p>This value is intended primarily for backwards compatibility with 26362the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span> 26363 </li> 26364 </ul> 26365 26366 </td> <!-- entry_type --> 26367 26368 <td class="entry_description"> 26369 <p>The frame number corresponding to the last request 26370with which the output result (metadata + buffers) has been fully 26371synchronized.<wbr/></p> 26372 </td> 26373 26374 <td class="entry_units"> 26375 </td> 26376 26377 <td class="entry_range"> 26378 <p>Either a non-negative value corresponding to a 26379<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p> 26380 </td> 26381 26382 <td class="entry_tags"> 26383 <ul class="entry_tags"> 26384 <li><a href="#tag_V1">V1</a></li> 26385 </ul> 26386 </td> 26387 26388 </tr> 26389 <tr class="entries_header"> 26390 <th class="th_details" colspan="5">Details</th> 26391 </tr> 26392 <tr class="entry_cont"> 26393 <td class="entry_details" colspan="5"> 26394 <p>When a request is submitted to the camera device,<wbr/> there is usually a 26395delay of several frames before the controls get applied.<wbr/> A camera 26396device may either choose to account for this delay by implementing a 26397pipeline and carefully submit well-timed atomic control updates,<wbr/> or 26398it may start streaming control changes that span over several frame 26399boundaries.<wbr/></p> 26400<p>In the latter case,<wbr/> whenever a request's settings change relative to 26401the previous submitted request,<wbr/> the full set of changes may take 26402multiple frame durations to fully take effect.<wbr/> Some settings may 26403take effect sooner (in less frame durations) than others.<wbr/></p> 26404<p>While a set of control changes are being propagated,<wbr/> this value 26405will be CONVERGING.<wbr/></p> 26406<p>Once it is fully known that a set of control changes have been 26407finished propagating,<wbr/> and the resulting updated control settings 26408have been read back by the camera device,<wbr/> this value will be set 26409to a non-negative frame number (corresponding to the request to 26410which the results have synchronized to).<wbr/></p> 26411<p>Older camera device implementations may not have a way to detect 26412when all camera controls have been applied,<wbr/> and will always set this 26413value to UNKNOWN.<wbr/></p> 26414<p>FULL capability devices will always have this value set to the 26415frame number of the request corresponding to this result.<wbr/></p> 26416<p><em>Further details</em>:</p> 26417<ul> 26418<li>Whenever a request differs from the last request,<wbr/> any future 26419results not yet returned may have this value set to CONVERGING (this 26420could include any in-progress captures not yet returned by the camera 26421device,<wbr/> for more details see pipeline considerations below).<wbr/></li> 26422<li>Submitting a series of multiple requests that differ from the 26423previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) 26424moves the new synchronization frame to the last non-repeating 26425request (using the smallest frame number from the contiguous list of 26426repeating requests).<wbr/></li> 26427<li>Submitting the same request repeatedly will not change this value 26428to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li> 26429<li>When this value changes to non-negative,<wbr/> that means that all of the 26430metadata controls from the request have been applied,<wbr/> all of the 26431metadata controls from the camera device have been read to the 26432updated values (into the result),<wbr/> and all of the graphics buffers 26433corresponding to this result are also synchronized to the request.<wbr/></li> 26434</ul> 26435<p><em>Pipeline considerations</em>:</p> 26436<p>Submitting a request with updated controls relative to the previously 26437submitted requests may also invalidate the synchronization state 26438of all the results corresponding to currently in-flight requests.<wbr/></p> 26439<p>In other words,<wbr/> results for this current request and up to 26440<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their 26441<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p> 26442 </td> 26443 </tr> 26444 26445 <tr class="entries_header"> 26446 <th class="th_details" colspan="5">HAL Implementation Details</th> 26447 </tr> 26448 <tr class="entry_cont"> 26449 <td class="entry_details" colspan="5"> 26450 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> 26451is also UNKNOWN.<wbr/></p> 26452<p>FULL capability devices should simply set this value to the 26453<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p> 26454 </td> 26455 </tr> 26456 26457 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26458 <!-- end of entry --> 26459 26460 26461 26462 <!-- end of kind --> 26463 </tbody> 26464 <tr><td colspan="6" class="kind">static</td></tr> 26465 26466 <thead class="entries_header"> 26467 <tr> 26468 <th class="th_name">Property Name</th> 26469 <th class="th_type">Type</th> 26470 <th class="th_description">Description</th> 26471 <th class="th_units">Units</th> 26472 <th class="th_range">Range</th> 26473 <th class="th_tags">Tags</th> 26474 </tr> 26475 </thead> 26476 26477 <tbody> 26478 26479 26480 26481 26482 26483 26484 26485 26486 26487 26488 <tr class="entry" id="static_android.sync.maxLatency"> 26489 <td class="entry_name 26490 " rowspan="5"> 26491 android.<wbr/>sync.<wbr/>max<wbr/>Latency 26492 </td> 26493 <td class="entry_type"> 26494 <span class="entry_type_name entry_type_name_enum">int32</span> 26495 26496 <span class="entry_type_visibility"> [public]</span> 26497 26498 26499 <span class="entry_type_hwlevel">[legacy] </span> 26500 26501 26502 26503 <ul class="entry_type_enum"> 26504 <li> 26505 <span class="entry_type_enum_name">PER_FRAME_CONTROL</span> 26506 <span class="entry_type_enum_value">0</span> 26507 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p> 26508<p>Changing controls over multiple requests one after another will 26509produce results that have those controls applied atomically 26510each frame.<wbr/></p> 26511<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span> 26512 </li> 26513 <li> 26514 <span class="entry_type_enum_name">UNKNOWN</span> 26515 <span class="entry_type_enum_value">-1</span> 26516 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set) 26517of the past requests applied to the camera settings.<wbr/></p> 26518<p>By submitting a series of identical requests,<wbr/> the camera device 26519will eventually have the camera settings applied,<wbr/> but it is 26520unknown when that exact point will be.<wbr/></p> 26521<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span> 26522 </li> 26523 </ul> 26524 26525 </td> <!-- entry_type --> 26526 26527 <td class="entry_description"> 26528 <p>The maximum number of frames that can occur after a request 26529(different than the previous) has been submitted,<wbr/> and before the 26530result's state becomes synchronized.<wbr/></p> 26531 </td> 26532 26533 <td class="entry_units"> 26534 Frame counts 26535 </td> 26536 26537 <td class="entry_range"> 26538 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p> 26539 </td> 26540 26541 <td class="entry_tags"> 26542 <ul class="entry_tags"> 26543 <li><a href="#tag_V1">V1</a></li> 26544 </ul> 26545 </td> 26546 26547 </tr> 26548 <tr class="entries_header"> 26549 <th class="th_details" colspan="5">Details</th> 26550 </tr> 26551 <tr class="entry_cont"> 26552 <td class="entry_details" colspan="5"> 26553 <p>This defines the maximum distance (in number of metadata results),<wbr/> 26554between the frame number of the request that has new controls to apply 26555and the frame number of the result that has all the controls applied.<wbr/></p> 26556<p>In other words this acts as an upper boundary for how many frames 26557must occur before the camera device knows for a fact that the new 26558submitted camera settings have been applied in outgoing frames.<wbr/></p> 26559 </td> 26560 </tr> 26561 26562 <tr class="entries_header"> 26563 <th class="th_details" colspan="5">HAL Implementation Details</th> 26564 </tr> 26565 <tr class="entry_cont"> 26566 <td class="entry_details" colspan="5"> 26567 <p>For example if maxLatency was 2,<wbr/></p> 26568<pre><code>initial request = X (repeating) 26569request1 = X 26570request2 = Y 26571request3 = Y 26572request4 = Y 26573 26574where requestN has frameNumber N,<wbr/> and the first of the repeating 26575initial request's has frameNumber F (and F < 1).<wbr/> 26576 26577initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 26578result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } 26579result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 26580result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } 26581result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } 26582 26583where resultN has frameNumber N.<wbr/> 26584</code></pre> 26585<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and 26586<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly 26587<code>4 - 2 = 2</code>.<wbr/></p> 26588<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of 26589<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or 26590<code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p> 26591<p>LIMITED devices are strongly encouraged to use a non-negative 26592value.<wbr/> If UNKNOWN is used here then app developers do not have a way 26593to know when sensor settings have been applied.<wbr/></p> 26594 </td> 26595 </tr> 26596 26597 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26598 <!-- end of entry --> 26599 26600 26601 26602 <!-- end of kind --> 26603 </tbody> 26604 26605 <!-- end of section --> 26606 <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr> 26607 26608 26609 <tr><td colspan="6" class="kind">controls</td></tr> 26610 26611 <thead class="entries_header"> 26612 <tr> 26613 <th class="th_name">Property Name</th> 26614 <th class="th_type">Type</th> 26615 <th class="th_description">Description</th> 26616 <th class="th_units">Units</th> 26617 <th class="th_range">Range</th> 26618 <th class="th_tags">Tags</th> 26619 </tr> 26620 </thead> 26621 26622 <tbody> 26623 26624 26625 26626 26627 26628 26629 26630 26631 26632 26633 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor"> 26634 <td class="entry_name 26635 " rowspan="3"> 26636 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 26637 </td> 26638 <td class="entry_type"> 26639 <span class="entry_type_name">float</span> 26640 26641 <span class="entry_type_visibility"> [java_public]</span> 26642 26643 26644 <span class="entry_type_hwlevel">[limited] </span> 26645 26646 26647 26648 26649 </td> <!-- entry_type --> 26650 26651 <td class="entry_description"> 26652 <p>The amount of exposure time increase factor applied to the original output 26653frame by the application processing before sending for reprocessing.<wbr/></p> 26654 </td> 26655 26656 <td class="entry_units"> 26657 Relative exposure time increase factor.<wbr/> 26658 </td> 26659 26660 <td class="entry_range"> 26661 <p>>= 1.<wbr/>0</p> 26662 </td> 26663 26664 <td class="entry_tags"> 26665 <ul class="entry_tags"> 26666 <li><a href="#tag_REPROC">REPROC</a></li> 26667 </ul> 26668 </td> 26669 26670 </tr> 26671 <tr class="entries_header"> 26672 <th class="th_details" colspan="5">Details</th> 26673 </tr> 26674 <tr class="entry_cont"> 26675 <td class="entry_details" colspan="5"> 26676 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 26677capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 26678<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 26679output frames to effectively reduce the noise to the same level as a frame that was 26680captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 26681images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 26682the camera device is that the amount of noise in the image would be approximately what 26683would be expected if the original capture parameters had been a sensitivity of 26684S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 26685than S and T respectively.<wbr/> If the captured images were processed by the application 26686before being sent for reprocessing,<wbr/> then the application may have used image processing 26687algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 26688application-processed images (input images).<wbr/> By using the effectiveExposureFactor 26689control,<wbr/> the application can communicate to the camera device the actual noise level 26690improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 26691device can select appropriate noise reduction and edge enhancement parameters to avoid 26692excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 26693enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 26694<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 26695multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 26696fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 26697square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 26698adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 26699produce the best quality images.<wbr/></p> 26700<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 26701buffer in a way that affects its effective exposure time.<wbr/></p> 26702<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 26703reduction 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/> 26704Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 26705<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 26706 </td> 26707 </tr> 26708 26709 26710 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26711 <!-- end of entry --> 26712 26713 26714 26715 <!-- end of kind --> 26716 </tbody> 26717 <tr><td colspan="6" class="kind">dynamic</td></tr> 26718 26719 <thead class="entries_header"> 26720 <tr> 26721 <th class="th_name">Property Name</th> 26722 <th class="th_type">Type</th> 26723 <th class="th_description">Description</th> 26724 <th class="th_units">Units</th> 26725 <th class="th_range">Range</th> 26726 <th class="th_tags">Tags</th> 26727 </tr> 26728 </thead> 26729 26730 <tbody> 26731 26732 26733 26734 26735 26736 26737 26738 26739 26740 26741 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor"> 26742 <td class="entry_name 26743 " rowspan="3"> 26744 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor 26745 </td> 26746 <td class="entry_type"> 26747 <span class="entry_type_name">float</span> 26748 26749 <span class="entry_type_visibility"> [java_public]</span> 26750 26751 26752 <span class="entry_type_hwlevel">[limited] </span> 26753 26754 26755 26756 26757 </td> <!-- entry_type --> 26758 26759 <td class="entry_description"> 26760 <p>The amount of exposure time increase factor applied to the original output 26761frame by the application processing before sending for reprocessing.<wbr/></p> 26762 </td> 26763 26764 <td class="entry_units"> 26765 Relative exposure time increase factor.<wbr/> 26766 </td> 26767 26768 <td class="entry_range"> 26769 <p>>= 1.<wbr/>0</p> 26770 </td> 26771 26772 <td class="entry_tags"> 26773 <ul class="entry_tags"> 26774 <li><a href="#tag_REPROC">REPROC</a></li> 26775 </ul> 26776 </td> 26777 26778 </tr> 26779 <tr class="entries_header"> 26780 <th class="th_details" colspan="5">Details</th> 26781 </tr> 26782 <tr class="entry_cont"> 26783 <td class="entry_details" colspan="5"> 26784 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING 26785capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p> 26786<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original 26787output frames to effectively reduce the noise to the same level as a frame that was 26788captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured 26789images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in 26790the camera device is that the amount of noise in the image would be approximately what 26791would be expected if the original capture parameters had been a sensitivity of 26792S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather 26793than S and T respectively.<wbr/> If the captured images were processed by the application 26794before being sent for reprocessing,<wbr/> then the application may have used image processing 26795algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the 26796application-processed images (input images).<wbr/> By using the effectiveExposureFactor 26797control,<wbr/> the application can communicate to the camera device the actual noise level 26798improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera 26799device can select appropriate noise reduction and edge enhancement parameters to avoid 26800excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge 26801enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p> 26802<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse 26803multiple output frames together to a final frame for reprocessing.<wbr/> When N image are 26804fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to 26805square root of N (based on a simple photon shot noise model).<wbr/> The camera device will 26806adjust the reprocessing noise reduction and edge enhancement parameters accordingly to 26807produce the best quality images.<wbr/></p> 26808<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input 26809buffer in a way that affects its effective exposure time.<wbr/></p> 26810<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise 26811reduction 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/> 26812Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when 26813<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p> 26814 </td> 26815 </tr> 26816 26817 26818 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26819 <!-- end of entry --> 26820 26821 26822 26823 <!-- end of kind --> 26824 </tbody> 26825 <tr><td colspan="6" class="kind">static</td></tr> 26826 26827 <thead class="entries_header"> 26828 <tr> 26829 <th class="th_name">Property Name</th> 26830 <th class="th_type">Type</th> 26831 <th class="th_description">Description</th> 26832 <th class="th_units">Units</th> 26833 <th class="th_range">Range</th> 26834 <th class="th_tags">Tags</th> 26835 </tr> 26836 </thead> 26837 26838 <tbody> 26839 26840 26841 26842 26843 26844 26845 26846 26847 26848 26849 <tr class="entry" id="static_android.reprocess.maxCaptureStall"> 26850 <td class="entry_name 26851 " rowspan="3"> 26852 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall 26853 </td> 26854 <td class="entry_type"> 26855 <span class="entry_type_name">int32</span> 26856 26857 <span class="entry_type_visibility"> [java_public]</span> 26858 26859 26860 <span class="entry_type_hwlevel">[limited] </span> 26861 26862 26863 26864 26865 </td> <!-- entry_type --> 26866 26867 <td class="entry_description"> 26868 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a 26869reprocess capture request.<wbr/></p> 26870 </td> 26871 26872 <td class="entry_units"> 26873 Number of frames.<wbr/> 26874 </td> 26875 26876 <td class="entry_range"> 26877 <p><= 4</p> 26878 </td> 26879 26880 <td class="entry_tags"> 26881 <ul class="entry_tags"> 26882 <li><a href="#tag_REPROC">REPROC</a></li> 26883 </ul> 26884 </td> 26885 26886 </tr> 26887 <tr class="entries_header"> 26888 <th class="th_details" colspan="5">Details</th> 26889 </tr> 26890 <tr class="entry_cont"> 26891 <td class="entry_details" colspan="5"> 26892 <p>The key describes the maximal interference that one reprocess (input) request 26893can introduce to the camera simultaneous streaming of regular (output) capture 26894requests,<wbr/> including repeating requests.<wbr/></p> 26895<p>When a reprocessing capture request is submitted while a camera output repeating request 26896(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture 26897pipeline for at least one frame duration so that the camera device is unable to process 26898the following capture request in time for the next sensor start of exposure boundary.<wbr/> 26899When this happens,<wbr/> the application may observe a capture time gap (longer than one frame 26900duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview 26901glitch if the repeating request output targets include a preview surface.<wbr/> This key gives 26902the worst-case number of frame stall introduced by one reprocess request with any kind of 26903formats/<wbr/>sizes combination.<wbr/></p> 26904<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the 26905ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p> 26906<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing ( 26907i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or 26908YUV_<wbr/>REPROCESSING).<wbr/></p> 26909 </td> 26910 </tr> 26911 26912 26913 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 26914 <!-- end of entry --> 26915 26916 26917 26918 <!-- end of kind --> 26919 </tbody> 26920 26921 <!-- end of section --> 26922 <tr><td colspan="6" id="section_depth" class="section">depth</td></tr> 26923 26924 26925 <tr><td colspan="6" class="kind">static</td></tr> 26926 26927 <thead class="entries_header"> 26928 <tr> 26929 <th class="th_name">Property Name</th> 26930 <th class="th_type">Type</th> 26931 <th class="th_description">Description</th> 26932 <th class="th_units">Units</th> 26933 <th class="th_range">Range</th> 26934 <th class="th_tags">Tags</th> 26935 </tr> 26936 </thead> 26937 26938 <tbody> 26939 26940 26941 26942 26943 26944 26945 26946 26947 26948 26949 <tr class="entry" id="static_android.depth.maxDepthSamples"> 26950 <td class="entry_name 26951 " rowspan="3"> 26952 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples 26953 </td> 26954 <td class="entry_type"> 26955 <span class="entry_type_name">int32</span> 26956 26957 <span class="entry_type_visibility"> [system]</span> 26958 26959 26960 <span class="entry_type_hwlevel">[limited] </span> 26961 26962 26963 26964 26965 </td> <!-- entry_type --> 26966 26967 <td class="entry_description"> 26968 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p> 26969 </td> 26970 26971 <td class="entry_units"> 26972 </td> 26973 26974 <td class="entry_range"> 26975 </td> 26976 26977 <td class="entry_tags"> 26978 <ul class="entry_tags"> 26979 <li><a href="#tag_DEPTH">DEPTH</a></li> 26980 </ul> 26981 </td> 26982 26983 </tr> 26984 <tr class="entries_header"> 26985 <th class="th_details" colspan="5">Details</th> 26986 </tr> 26987 <tr class="entry_cont"> 26988 <td class="entry_details" colspan="5"> 26989 <p>If a camera device supports outputting depth range data in the form of a depth point 26990cloud (<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 26991number of points an output buffer may contain.<wbr/></p> 26992<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/> 26993If output in the depth point cloud format is not supported,<wbr/> this entry will 26994not be defined.<wbr/></p> 26995 </td> 26996 </tr> 26997 26998 26999 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 27000 <!-- end of entry --> 27001 27002 27003 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations"> 27004 <td class="entry_name 27005 " rowspan="3"> 27006 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations 27007 </td> 27008 <td class="entry_type"> 27009 <span class="entry_type_name entry_type_name_enum">int32</span> 27010 <span class="entry_type_container">x</span> 27011 27012 <span class="entry_type_array"> 27013 n x 4 27014 </span> 27015 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span> 27016 27017 27018 <span class="entry_type_hwlevel">[limited] </span> 27019 27020 27021 27022 <ul class="entry_type_enum"> 27023 <li> 27024 <span class="entry_type_enum_name">OUTPUT</span> 27025 </li> 27026 <li> 27027 <span class="entry_type_enum_name">INPUT</span> 27028 </li> 27029 </ul> 27030 27031 </td> <!-- entry_type --> 27032 27033 <td class="entry_description"> 27034 <p>The available depth dataspace stream 27035configurations that this camera device supports 27036(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p> 27037 </td> 27038 27039 <td class="entry_units"> 27040 </td> 27041 27042 <td class="entry_range"> 27043 </td> 27044 27045 <td class="entry_tags"> 27046 <ul class="entry_tags"> 27047 <li><a href="#tag_DEPTH">DEPTH</a></li> 27048 </ul> 27049 </td> 27050 27051 </tr> 27052 <tr class="entries_header"> 27053 <th class="th_details" colspan="5">Details</th> 27054 </tr> 27055 <tr class="entry_cont"> 27056 <td class="entry_details" colspan="5"> 27057 <p>These are output stream configurations for use with 27058dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are 27059listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p> 27060<p>Only devices that support depth output for at least 27061the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include 27062this entry.<wbr/></p> 27063<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB 27064sparse depth point cloud must report a single entry for 27065the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/> 27066<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to 27067the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p> 27068 </td> 27069 </tr> 27070 27071 27072 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 27073 <!-- end of entry --> 27074 27075 27076 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations"> 27077 <td class="entry_name 27078 " rowspan="3"> 27079 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations 27080 </td> 27081 <td class="entry_type"> 27082 <span class="entry_type_name">int64</span> 27083 <span class="entry_type_container">x</span> 27084 27085 <span class="entry_type_array"> 27086 4 x n 27087 </span> 27088 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 27089 27090 27091 <span class="entry_type_hwlevel">[limited] </span> 27092 27093 27094 27095 27096 </td> <!-- entry_type --> 27097 27098 <td class="entry_description"> 27099 <p>This lists the minimum frame duration for each 27100format/<wbr/>size combination for depth output formats.<wbr/></p> 27101 </td> 27102 27103 <td class="entry_units"> 27104 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 27105 </td> 27106 27107 <td class="entry_range"> 27108 </td> 27109 27110 <td class="entry_tags"> 27111 <ul class="entry_tags"> 27112 <li><a href="#tag_DEPTH">DEPTH</a></li> 27113 </ul> 27114 </td> 27115 27116 </tr> 27117 <tr class="entries_header"> 27118 <th class="th_details" colspan="5">Details</th> 27119 </tr> 27120 <tr class="entry_cont"> 27121 <td class="entry_details" colspan="5"> 27122 <p>This should correspond to the frame duration when only that 27123stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) 27124set to either OFF or FAST.<wbr/></p> 27125<p>When multiple streams are used in a request,<wbr/> the minimum frame 27126duration will be max(individual stream min durations).<wbr/></p> 27127<p>The minimum frame duration of a stream (of a particular format,<wbr/> size) 27128is the same regardless of whether the stream is input or output.<wbr/></p> 27129<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and 27130<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about 27131calculating the max frame rate.<wbr/></p> 27132<p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p> 27133 </td> 27134 </tr> 27135 27136 27137 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 27138 <!-- end of entry --> 27139 27140 27141 <tr class="entry" id="static_android.depth.availableDepthStallDurations"> 27142 <td class="entry_name 27143 " rowspan="3"> 27144 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations 27145 </td> 27146 <td class="entry_type"> 27147 <span class="entry_type_name">int64</span> 27148 <span class="entry_type_container">x</span> 27149 27150 <span class="entry_type_array"> 27151 4 x n 27152 </span> 27153 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span> 27154 27155 27156 <span class="entry_type_hwlevel">[limited] </span> 27157 27158 27159 27160 27161 </td> <!-- entry_type --> 27162 27163 <td class="entry_description"> 27164 <p>This lists the maximum stall duration for each 27165output format/<wbr/>size combination for depth streams.<wbr/></p> 27166 </td> 27167 27168 <td class="entry_units"> 27169 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n 27170 </td> 27171 27172 <td class="entry_range"> 27173 </td> 27174 27175 <td class="entry_tags"> 27176 <ul class="entry_tags"> 27177 <li><a href="#tag_DEPTH">DEPTH</a></li> 27178 </ul> 27179 </td> 27180 27181 </tr> 27182 <tr class="entries_header"> 27183 <th class="th_details" colspan="5">Details</th> 27184 </tr> 27185 <tr class="entry_cont"> 27186 <td class="entry_details" colspan="5"> 27187 <p>A stall duration is how much extra time would get added 27188to the normal minimum frame duration for a repeating request 27189that has streams with non-zero stall.<wbr/></p> 27190<p>This functions similarly to 27191<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth 27192streams.<wbr/></p> 27193<p>All depth output stream formats may have a nonzero stall 27194duration.<wbr/></p> 27195 </td> 27196 </tr> 27197 27198 27199 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 27200 <!-- end of entry --> 27201 27202 27203 <tr class="entry" id="static_android.depth.depthIsExclusive"> 27204 <td class="entry_name 27205 " rowspan="3"> 27206 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive 27207 </td> 27208 <td class="entry_type"> 27209 <span class="entry_type_name entry_type_name_enum">byte</span> 27210 27211 <span class="entry_type_visibility"> [public as boolean]</span> 27212 27213 27214 <span class="entry_type_hwlevel">[limited] </span> 27215 27216 27217 27218 <ul class="entry_type_enum"> 27219 <li> 27220 <span class="entry_type_enum_name">FALSE</span> 27221 </li> 27222 <li> 27223 <span class="entry_type_enum_name">TRUE</span> 27224 </li> 27225 </ul> 27226 27227 </td> <!-- entry_type --> 27228 27229 <td class="entry_description"> 27230 <p>Indicates whether a capture request may target both a 27231DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as 27232YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p> 27233 </td> 27234 27235 <td class="entry_units"> 27236 </td> 27237 27238 <td class="entry_range"> 27239 </td> 27240 27241 <td class="entry_tags"> 27242 </td> 27243 27244 </tr> 27245 <tr class="entries_header"> 27246 <th class="th_details" colspan="5">Details</th> 27247 </tr> 27248 <tr class="entry_cont"> 27249 <td class="entry_details" colspan="5"> 27250 <p>If TRUE,<wbr/> including both depth and color outputs in a single 27251capture request is not supported.<wbr/> An application must interleave color 27252and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types 27253of output.<wbr/></p> 27254<p>Typically,<wbr/> this restriction exists on camera devices that 27255need to emit a specific pattern or wavelength of light to 27256measure depth values,<wbr/> which causes the color image to be 27257corrupted during depth measurement.<wbr/></p> 27258 </td> 27259 </tr> 27260 27261 27262 <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 27263 <!-- end of entry --> 27264 27265 27266 27267 <!-- end of kind --> 27268 </tbody> 27269 27270 <!-- end of section --> 27271<!-- </namespace> --> 27272 </table> 27273 27274 <div class="tags" id="tag_index"> 27275 <h2>Tags</h2> 27276 <ul> 27277 <li id="tag_BC">BC - 27278 Needed for backwards compatibility with old Java API 27279 27280 <ul class="tags_entries"> 27281 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li> 27282 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li> 27283 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li> 27284 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li> 27285 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li> 27286 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li> 27287 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li> 27288 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li> 27289 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li> 27290 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li> 27291 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li> 27292 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> 27293 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li> 27294 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li> 27295 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li> 27296 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li> 27297 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li> 27298 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li> 27299 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li> 27300 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li> 27301 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li> 27302 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li> 27303 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li> 27304 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li> 27305 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li> 27306 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li> 27307 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li> 27308 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li> 27309 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li> 27310 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li> 27311 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li> 27312 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li> 27313 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li> 27314 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li> 27315 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li> 27316 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li> 27317 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li> 27318 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li> 27319 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li> 27320 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li> 27321 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li> 27322 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li> 27323 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 27324 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 27325 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> 27326 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> 27327 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> 27328 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> 27329 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> 27330 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> 27331 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li> 27332 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li> 27333 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li> 27334 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li> 27335 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 27336 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 27337 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 27338 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li> 27339 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li> 27340 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li> 27341 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li> 27342 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li> 27343 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li> 27344 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li> 27345 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li> 27346 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li> 27347 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li> 27348 </ul> 27349 </li> <!-- tag_BC --> 27350 <li id="tag_V1">V1 - 27351 New features for first camera 2 release (API1) 27352 27353 <ul class="tags_entries"> 27354 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li> 27355 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li> 27356 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 27357 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 27358 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 27359 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 27360 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li> 27361 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li> 27362 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li> 27363 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> 27364 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li> 27365 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li> 27366 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li> 27367 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> 27368 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li> 27369 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li> 27370 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li> 27371 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li> 27372 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li> 27373 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 27374 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 27375 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li> 27376 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li> 27377 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li> 27378 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li> 27379 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> 27380 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li> 27381 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> 27382 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li> 27383 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> 27384 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> 27385 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li> 27386 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 27387 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li> 27388 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 27389 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 27390 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 27391 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li> 27392 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li> 27393 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 27394 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 27395 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li> 27396 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li> 27397 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li> 27398 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 27399 </ul> 27400 </li> <!-- tag_V1 --> 27401 <li id="tag_RAW">RAW - 27402 Needed for useful RAW image processing and DNG file support 27403 27404 <ul class="tags_entries"> 27405 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> 27406 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li> 27407 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li> 27408 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li> 27409 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> 27410 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li> 27411 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li> 27412 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> 27413 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li> 27414 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li> 27415 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li> 27416 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li> 27417 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li> 27418 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li> 27419 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li> 27420 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li> 27421 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li> 27422 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li> 27423 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li> 27424 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li> 27425 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li> 27426 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li> 27427 <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li> 27428 <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li> 27429 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li> 27430 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li> 27431 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li> 27432 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li> 27433 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> 27434 </ul> 27435 </li> <!-- tag_RAW --> 27436 <li id="tag_HAL2">HAL2 - 27437 Entry is only used by camera device HAL 2.x 27438 27439 <ul class="tags_entries"> 27440 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li> 27441 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li> 27442 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li> 27443 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li> 27444 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li> 27445 </ul> 27446 </li> <!-- tag_HAL2 --> 27447 <li id="tag_FULL">FULL - 27448 Entry is required for full hardware level devices, and optional for other hardware levels 27449 27450 <ul class="tags_entries"> 27451 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> 27452 </ul> 27453 </li> <!-- tag_FULL --> 27454 <li id="tag_DEPTH">DEPTH - 27455 Entry is required for the depth capability. 27456 27457 <ul class="tags_entries"> 27458 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li> 27459 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li> 27460 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li> 27461 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li> 27462 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li> 27463 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li> 27464 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li> 27465 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li> 27466 </ul> 27467 </li> <!-- tag_DEPTH --> 27468 <li id="tag_REPROC">REPROC - 27469 Entry is required for the YUV or PRIVATE reprocessing capability. 27470 27471 <ul class="tags_entries"> 27472 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li> 27473 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li> 27474 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> 27475 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li> 27476 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li> 27477 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li> 27478 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li> 27479 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li> 27480 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li> 27481 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li> 27482 </ul> 27483 </li> <!-- tag_REPROC --> 27484 <li id="tag_FUTURE">FUTURE - 27485 Entry is under-specified and is not required for now. This is for book-keeping purpose, 27486 do not implement or use it, it may be revised for future. 27487 27488 <ul class="tags_entries"> 27489 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li> 27490 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li> 27491 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li> 27492 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li> 27493 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li> 27494 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li> 27495 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li> 27496 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li> 27497 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li> 27498 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li> 27499 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> 27500 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li> 27501 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li> 27502 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li> 27503 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li> 27504 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li> 27505 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li> 27506 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li> 27507 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li> 27508 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li> 27509 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li> 27510 </ul> 27511 </li> <!-- tag_FUTURE --> 27512 </ul> 27513 </div> 27514 27515 [ <a href="#">top</a> ] 27516 27517</body> 27518</html> 27519